      program MAIN
      integer  pcrc_dad_X,pcrc_dad_Y
      integer  pcrc_sdd0,pcrc_sdd1,pcrc_sdd2
      integer  pcrc_tbs1,pcrc_tbs2,pcrc_tbs0
      integer  pcrc_tdd1,pcrc_tdd2,pcrc_tdd0
      integer  pcrc_irg0
      integer  pcrc_lil_i,pcrc_liu_i,pcrc_lis_i
      integer  pcrc_u00
      integer  pcrc_v00
      integer  pcrc_sdx0
      include 'pcrc.inc'
      real  Y(0:1056)
      real  X(0:519)
      integer  pcrc_rng_TY(1)
      integer  pcrc_rng_TX(1)
      integer  pcrc_grp_P
      integer  pcrc_shp_P(1)
      call pcrc_init ()
      pcrc_shp_P(1) = 2
      pcrc_grp_P = pcrc_new_group_grid (1,pcrc_shp_P)
      pcrc_rng_TY(1) = pcrc_new_range_distribute ((-121),1991,1,pcrc_grp&
     &_P,1)
      pcrc_rng_TX(1) = pcrc_new_range_distribute ((-275),763,1,pcrc_grp_&
     &P,1)
      pcrc_dad_Y = pcrc_new_array_data (Y,pcrc_real,pcrc_size_real,1,pcr&
     &c_grp_P)
      call pcrc_set_array_align (pcrc_dad_Y,1,(-41),643,3,4,0,0,pcrc_rng&
     &_TY(1))
      pcrc_dad_X = pcrc_new_array_data (X,pcrc_real,pcrc_size_real,1,pcr&
     &c_grp_P)
      call pcrc_set_array_align (pcrc_dad_X,1,(-90),249,3,4,0,0,pcrc_rng&
     &_TX(1))
      pcrc_irg0 = pcrc_new_range_loop ((-90),249,1,1,0,pcrc_range (pcrc_&
     &dad_X,1))
      call pcrc_loop_bounds (pcrc_irg0,pcrc_lil_i,pcrc_liu_i,pcrc_lis_i)

      pcrc_sdd0 = pcrc_new_array_section (1,pcrc_dad_X)
      call pcrc_set_array_triplet (pcrc_sdd0,1,(-90),249,1,pcrc_dad_X,1)

      call pcrc_coef (pcrc_dad_X,1,(-90),249,1,1,0,0,pcrc_u00,pcrc_v00)
      if (pcrc_on (pcrc_group (pcrc_sdd0))) then
         do  i=0,(pcrc_liu_i-pcrc_lil_i)/pcrc_lis_i,1
            pcrc_sdx0 = pcrc_v00+pcrc_u00*i
            X(pcrc_sdx0) = 0
         enddo
      endif
      call pcrc_delete_array (pcrc_sdd0)
      call pcrc_delete_range (pcrc_irg0)
      pcrc_irg0 = pcrc_new_range_loop ((-41),643,1,1,0,pcrc_range (pcrc_&
     &dad_Y,1))
      call pcrc_loop_bounds (pcrc_irg0,pcrc_lil_i,pcrc_liu_i,pcrc_lis_i)

      pcrc_sdd0 = pcrc_new_array_section (1,pcrc_dad_Y)
      call pcrc_set_array_triplet (pcrc_sdd0,1,(-41),643,1,pcrc_dad_Y,1)

      call pcrc_coef (pcrc_dad_Y,1,(-41),643,1,1,0,0,pcrc_u00,pcrc_v00)
      if (pcrc_on (pcrc_group (pcrc_sdd0))) then
         do  i=0,(pcrc_liu_i-pcrc_lil_i)/pcrc_lis_i,1
            pcrc_sdx0 = pcrc_v00+pcrc_u00*i
            Y(pcrc_sdx0) = pcrc_glob (pcrc_irg0,pcrc_lis_i*i+pcrc_lil_i)

         enddo
      endif
      call pcrc_delete_array (pcrc_sdd0)
      call pcrc_delete_range (pcrc_irg0)
      pcrc_irg0 = pcrc_new_range_loop ((-2),189,1,1,0,pcrc_range (pcrc_d&
     &ad_X,1))
      call pcrc_loop_bounds (pcrc_irg0,pcrc_lil_i,pcrc_liu_i,pcrc_lis_i)

      pcrc_sdd0 = pcrc_new_array_section (1,pcrc_dad_X)
      call pcrc_set_array_triplet (pcrc_sdd0,1,(-2),189,1,pcrc_dad_X,1)
      call pcrc_coef (pcrc_dad_X,1,(-2),189,1,1,0,0,pcrc_u00,pcrc_v00)
      pcrc_sdd1 = pcrc_new_array_section (1,pcrc_dad_Y)
      call pcrc_set_array_triplet (pcrc_sdd1,1,(-1),572,3,pcrc_dad_Y,1)
      pcrc_tdd1 = pcrc_new_array_section (1,pcrc_dad_X)
      call pcrc_set_array_triplet (pcrc_tdd1,1,(-2),189,1,pcrc_dad_X,1)
      pcrc_tbs1 = pcrc_real_alloc (pcrc_size (pcrc_tdd1))
      call pcrc_reset_array_base (pcrc_tdd1,pcrc_real_stack(pcrc_tbs1))
      call pcrc_remap (pcrc_tdd1,pcrc_sdd1)
      pcrc_sdd2 = pcrc_new_array_section (1,pcrc_dad_Y)
      call pcrc_set_array_triplet (pcrc_sdd2,1,(-1),190,1,pcrc_dad_Y,1)
      pcrc_tdd2 = pcrc_new_array_section (1,pcrc_dad_X)
      call pcrc_set_array_triplet (pcrc_tdd2,1,(-2),189,1,pcrc_dad_X,1)
      pcrc_tbs2 = pcrc_real_alloc (pcrc_size (pcrc_tdd2))
      call pcrc_reset_array_base (pcrc_tdd2,pcrc_real_stack(pcrc_tbs2))
      call pcrc_remap (pcrc_tdd2,pcrc_sdd2)
      if (pcrc_on (pcrc_group (pcrc_sdd0))) then
         do  i=0,(pcrc_liu_i-pcrc_lil_i)/pcrc_lis_i,1
            pcrc_sdx0 = pcrc_v00+pcrc_u00*i
            X(pcrc_sdx0) = pcrc_real_stack(pcrc_tbs1+pcrc_sdx0)+pcrc_rea&
     &l_stack(pcrc_tbs2+pcrc_sdx0)
         enddo
      endif
      call pcrc_real_free (pcrc_tbs2)
      call pcrc_delete_array (pcrc_tdd2)
      call pcrc_delete_array (pcrc_sdd2)
      call pcrc_real_free (pcrc_tbs1)
      call pcrc_delete_array (pcrc_tdd1)
      call pcrc_delete_array (pcrc_sdd1)
      call pcrc_delete_array (pcrc_sdd0)
      call pcrc_delete_range (pcrc_irg0)
      pcrc_sdd0 = pcrc_new_array_section (1,pcrc_dad_X)
      call pcrc_set_array_triplet (pcrc_sdd0,1,(-90),249,1,pcrc_dad_X,1)

      pcrc_tdd0 = pcrc_new_array_data (pcrc_real_stack,pcrc_real,pcrc_si&
     &ze_real,1,pcrc_grp_root)
      call pcrc_set_array_collapse (pcrc_tdd0,1,0,339)
      pcrc_tbs0 = pcrc_real_alloc (pcrc_size (pcrc_tdd0))
      call pcrc_reset_array_base (pcrc_tdd0,pcrc_real_stack(pcrc_tbs0))
      call pcrc_remap (pcrc_tdd0,pcrc_sdd0)
      if (pcrc_on (pcrc_grp_root)) then
         print 111, (pcrc_real_stack(pcrc_tbs0+i), i=0,339)
      endif
      call pcrc_real_free (pcrc_tbs0)
      call pcrc_delete_array (pcrc_tdd0)
      call pcrc_delete_array (pcrc_sdd0)
111      format (1X,F17.2)
      call pcrc_delete_array (pcrc_dad_X)
      call pcrc_delete_array (pcrc_dad_Y)
      call pcrc_delete_range (pcrc_rng_TX(1))
      call pcrc_delete_range (pcrc_rng_TY(1))
      call pcrc_delete_group (pcrc_grp_P)
      call pcrc_finalize ()
      end


