Skip to content
Snippets Groups Projects
read_input_file.f90 114 KiB
Newer Older
  • Learn to ignore specific revisions
  •   if (iproc==0) call scanfile (params%infile,'bc_param9',bcdef%bc_parameters(9),ires)
      if (iproc==0) call scanfile (params%infile,'bc_param10',bcdef%bc_parameters(10),ires)
      if (iproc==0) call scanfile (params%infile,'bc_param11',bcdef%bc_parameters(11),ires)
      if (iproc==0) call scanfile (params%infile,'bc_param12',bcdef%bc_parameters(12),ires)
      if (iproc==0) call scanfile (params%infile,'bc_param13',bcdef%bc_parameters(13),ires)
    
      if (iproc==0) call scanfile (params%infile,'bc_param14',bcdef%bc_parameters(14),ires)
    
      call mpi_bcast(bcdef%bc_parameters,14,mpi_double_precision,0,mpi_comm_world,ierr)
    
    
    case('iso_only')
      bcdef%bc_parameters=0.d0
      if (iproc==0) call scanfile (params%infile,'bc_param1',bcdef%bc_parameters(1),ires)
    
      call mpi_bcast(bcdef%bc_parameters,14,mpi_double_precision,0,mpi_comm_world,ierr)
    
    end select
    
    bcdef%utrans=0.d0
    bcdef%vtrans=0.d0
    if (iproc==0) call scanfile (params%infile,'utrans',bcdef%utrans,ires)
    if (iproc==0) call scanfile (params%infile,'vtrans',bcdef%vtrans,ires)
    call mpi_bcast(bcdef%utrans,1,mpi_double_precision,0,mpi_comm_world,ierr)
    call mpi_bcast(bcdef%vtrans,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    
    params%npmin=8
    if (iproc==0) call scanfile (params%infile,'npmin',params%npmin,ires)
    call mpi_bcast(params%npmin,1,mpi_integer,0,mpi_comm_world,ierr)
    
    params%npmax=16
    if (iproc==0) call scanfile (params%infile,'npmax',params%npmax,ires)
    call mpi_bcast(params%npmax,1,mpi_integer,0,mpi_comm_world,ierr)
    
    
    params%fixed_cloud=.false.
    if (iproc==0) then
       call scanfile (params%infile,'fixed_cloud',answer,ires)
       if (ires==1) params%fixed_cloud=(trim(answer)=='T')
    end if
    call mpi_bcast(params%fixed_cloud,1,mpi_logical,0,mpi_comm_world,ierr)
    
    
    Dave Whipp's avatar
    Dave Whipp committed
    params%gridcloud=.false.
    if (iproc==0) then
       call scanfile (params%infile,'gridcloud',answer,ires)
    
       if (ires==1) params%gridcloud=(trim(answer)=='T')
    
    Dave Whipp's avatar
    Dave Whipp committed
    end if
    call mpi_bcast(params%gridcloud,1,mpi_logical,0,mpi_comm_world,ierr)
    
    params%centerptcloud=.false.
    if (iproc==0) then
       call scanfile (params%infile,'centerptcloud',answer,ires)
    
       if (ires==1) params%centerptcloud=(trim(answer)=='T')
    
    Dave Whipp's avatar
    Dave Whipp committed
    end if
    call mpi_bcast(params%centerptcloud,1,mpi_logical,0,mpi_comm_world,ierr)
    
    
    params%compaction=.false.
    if (iproc==0) then
       call scanfile (params%infile,'compaction',answer,ires)
    
       if (ires==1) params%compaction=(trim(answer)=='T')
    
    end if
    call mpi_bcast(params%compaction,1,mpi_logical,0,mpi_comm_world,ierr)
    
    
    Dave Whipp's avatar
    Dave Whipp committed
    params%clnpx=2
    if (iproc==0) call scanfile (params%infile,'clnpx',params%clnpx,ires)
    call mpi_bcast(params%clnpx,1,mpi_integer,0,mpi_comm_world,ierr)
    
    params%clnpy=2
    if (iproc==0) call scanfile (params%infile,'clnpy',params%clnpy,ires)
    call mpi_bcast(params%clnpy,1,mpi_integer,0,mpi_comm_world,ierr)
    
    params%clnpz=2
    if (iproc==0) call scanfile (params%infile,'clnpz',params%clnpz,ires)
    call mpi_bcast(params%clnpz,1,mpi_integer,0,mpi_comm_world,ierr)
    
    
    params%dstrnz=9
    if (iproc==0) call scanfile (params%infile,'dstrnz',params%dstrnz,ires)
    call mpi_bcast(params%dstrnz,1,mpi_integer,0,mpi_comm_world,ierr)
    
    
    params%griditer_main=-10
    if (iproc==0) call scanfile (params%infile,'griditer',params%griditer_main,ires)
    call mpi_bcast(params%griditer_main,1,mpi_integer,0,mpi_comm_world,ierr)
    
    params%griditer_spinup=params%griditer_main
    if (iproc==0) call scanfile (params%infile,'griditer_spinup',params%griditer_spinup,ires)
    call mpi_bcast(params%griditer_spinup,1,mpi_integer,0,mpi_comm_world,ierr)
    
    params%griditer=params%griditer_main
    
    call mpi_bcast(params%griditer,1,mpi_integer,0,mpi_comm_world,ierr)
    
    
    params%tol_main=1.d-3
    if (iproc==0) call scanfile (params%infile,'tol',params%tol_main,ires)
    call mpi_bcast(params%tol_main,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%tol_spinup=params%tol_main
    if (iproc==0) call scanfile (params%infile,'tol_spinup',params%tol_spinup,ires)
    call mpi_bcast(params%tol,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%tol=params%tol_main
    
    call mpi_bcast(params%tol,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%niter_move=10
    if (iproc==0) call scanfile (params%infile,'niter_move',params%niter_move,ires)
    call mpi_bcast(params%niter_move,1,mpi_integer,0,mpi_comm_world,ierr)
    
    params%ismooth=.false.
    if (iproc==0) then
       call scanfile (params%infile,'ismooth',answer,ires)
    
       if (ires==1) params%ismooth = (trim(answer)=='T')
    
    end if
    call mpi_bcast(params%ismooth,1,mpi_logical,0,mpi_comm_world,ierr)
    
    params%nb_iter_nl_min=0
    if (iproc==0) call scanfile (params%infile,'nb_iter_nl_min',params%nb_iter_nl_min,ires)
    call mpi_bcast(params%nb_iter_nl_min,1,mpi_integer,0,mpi_comm_world,ierr)
    
    params%visualise_matrix=.false.
    if (iproc==0) then
       call scanfile (params%infile,'visualise_matrix',answer,ires)
    
       if (ires==1) params%visualise_matrix=(trim(answer)=='T')
    
    end if
    call mpi_bcast(params%visualise_matrix,1,mpi_logical,0,mpi_comm_world,ierr)
    
    params%renumber_nodes  = .false.
    if (iproc==0) then
       call scanfile (params%infile,'renumber_nodes',answer,ires)
    
       if (ires==1) params%renumber_nodes=(trim(answer)=='T')
    
    end if
    call mpi_bcast(params%renumber_nodes,1,mpi_logical,0,mpi_comm_world,ierr)
    
    do i=1,params%nboxes
       write(cm,'(i3)') i
       il=1
       if (i.lt.100) il=2
       if (il.lt.10) il=3
    
       boxes(i)%x0=0.d0
       if (iproc==0) call scanfile (params%infile,'box'//cm(il:3)//'x0',boxes(i)%x0,ires)
       call mpi_bcast(boxes(i)%x0,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
       boxes(i)%x1=0.d0
       if (iproc==0) call scanfile (params%infile,'box'//cm(il:3)//'x1',boxes(i)%x1,ires)
       call mpi_bcast(boxes(i)%x1,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
       boxes(i)%y0=0.d0
       if (iproc==0) call scanfile (params%infile,'box'//cm(il:3)//'y0',boxes(i)%y0,ires)
       call mpi_bcast(boxes(i)%y0,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
       boxes(i)%y1=0.d0
       if (iproc==0) call scanfile (params%infile,'box'//cm(il:3)//'y1',boxes(i)%y1,ires)
       call mpi_bcast(boxes(i)%y1,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
       boxes(i)%z0=0.d0
       if (iproc==0) call scanfile (params%infile,'box'//cm(il:3)//'z0',boxes(i)%z0,ires)
    
       call mpi_bcast(boxes(i)%z0,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
       boxes(i)%z1=0.d0
       if (iproc==0) call scanfile (params%infile,'box'//cm(il:3)//'z1',boxes(i)%z1,ires)
    
       call mpi_bcast(boxes(i)%z1,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
       boxes(i)%level=1
       if (iproc==0) call scanfile (params%infile,'box'//cm(il:3)//'level',boxes(i)%level,ires)
       call mpi_bcast(boxes(i)%level,1,mpi_integer,0,mpi_comm_world,ierr)
    enddo
    
    do i=1,params%nsections
       write(cm,'(i3)') i
       il=1
       if (i.lt.100) il=2
       if (il.lt.10) il=3
    
       sections(i)%xyz=0
       if (iproc==0) call scanfile (params%infile,'xyz_'//cm(il:3),sections(i)%xyz,ires)
    
    
       if (iproc==0) call scanfile (params%infile,'slice_'//cm(il:3),sections(i)%slice,ires)
    !   if (sections(i)%slice<0.d0 .or. sections(i)%slice>1.d0) call stop_run ('pb with slice value')
    
       sections(i)%flag_press = .false. 
       if (iproc==0) then
          call scanfile (params%infile,'flag_press_'//cm(il:3),answer,ires)
    
          if (ires==1) sections(i)%flag_press=(trim(answer)=='T')
    
       end if
    
       sections(i)%flag_spress = .false. 
       if (iproc==0) then
          call scanfile (params%infile,'flag_spress_'//cm(il:3),answer,ires)
    
          if (ires==1) sections(i)%flag_spress=(trim(answer)=='T')
    
       end if
    
       sections(i)%flag_e2d   = .false.
       if (iproc==0) then
          call scanfile (params%infile,'flag_e2d_'//cm(il:3),answer,ires)
    
          if (ires==1) sections(i)%flag_e2d=(trim(answer)=='T')
    
       end if
    
       sections(i)%flag_e3d   = .false.
       if (iproc==0) then
          call scanfile (params%infile,'flag_e3d_'//cm(il:3),answer,ires)
    
          if (ires==1) sections(i)%flag_e3d=(trim(answer)=='T')
    
       end if
    
       sections(i)%flag_strain   = .false.
       if (iproc==0) then
          call scanfile (params%infile,'flag_strain_'//cm(il:3),answer,ires)
    
          if (ires==1) sections(i)%flag_strain=(trim(answer)=='T')
    
       end if
    
       sections(i)%flag_crit  = .false.
       if (iproc==0) then
          call scanfile (params%infile,'flag_crit_'//cm(il:3),answer,ires)
    
          if (ires==1) sections(i)%flag_crit=(trim(answer)=='T')
    
       end if
    
       sections(i)%flag_grid  = .false.
       if (iproc==0) then
          call scanfile (params%infile,'flag_grid_'//cm(il:3),answer,ires)
    
          if (ires==1) sections(i)%flag_grid=(trim(answer)=='T')
    
       end if
    
       sections(i)%flag_u  = .false.
       if (iproc==0) then
          call scanfile (params%infile,'flag_u_'//cm(il:3),answer,ires)
    
          if (ires==1) sections(i)%flag_u=(trim(answer)=='T')
    
       end if
     
       sections(i)%flag_v  = .false.
       if (iproc==0) then
          call scanfile (params%infile,'flag_v_'//cm(il:3),answer,ires)
    
          if (ires==1) sections(i)%flag_v=(trim(answer)=='T')
    
       end if
    
       sections(i)%flag_w  = .false.
       if (iproc==0) then
          call scanfile (params%infile,'flag_w_'//cm(il:3),answer,ires)
    
          if (ires==1) sections(i)%flag_w=(trim(answer)=='T')
    
       end if
    
       sections(i)%flag_uvw  = .false.
       if (iproc==0) then
          call scanfile (params%infile,'flag_uvw_'//cm(il:3),answer,ires)
    
          if (ires==1) sections(i)%flag_uvw=(trim(answer)=='T')
    
       end if
    
       sections(i)%flag_colour  = .false.
       if (iproc==0) then
          call scanfile (params%infile,'flag_colour_'//cm(il:3),answer,ires)
    
          if (ires==1) sections(i)%flag_colour=(trim(answer)=='T')
    
       end if
    
       sections(i)%flag_mu  = .false.
       if (iproc==0) then
          call scanfile (params%infile,'flag_mu_'//cm(il:3),answer,ires)
    
          if (ires==1) sections(i)%flag_mu=(trim(answer)=='T')
    
       end if
    
       sections(i)%flag_plastic  = .false.
       if (iproc==0) then
          call scanfile (params%infile,'flag_plastic_'//cm(il:3),answer,ires)
    
          if (ires==1) sections(i)%flag_plastic=(trim(answer)=='T')
    
       end if
    
       sections(i)%flag_q  = .false.
       if (iproc==0) then
          call scanfile (params%infile,'flag_q_'//cm(il:3),answer,ires)
    
          if (ires==1) sections(i)%flag_q=(trim(answer)=='T')
    
       end if
    
       sections(i)%flag_lode  = .false.
       if (iproc==0) then
          call scanfile (params%infile,'flag_lode_'//cm(il:3),answer,ires)
    
          if (ires==1) sections(i)%flag_lode=(trim(answer)=='T')
    
       end if
    
       sections(i)%flag_vfield  = .false.
       if (iproc==0) then
          call scanfile (params%infile,'flag_vfield_'//cm(il:3),answer,ires)
    
          if (ires==1) sections(i)%flag_vfield=(trim(answer)=='T')
    
       end if
    
       sections(i)%flag_lsf  = .false.
       if (iproc==0) then
          call scanfile (params%infile,'flag_lsf_'//cm(il:3),answer,ires)
    
          if (ires==1) sections(i)%flag_lsf=(trim(answer)=='T')
    
       end if
    
       sections(i)%flag_temp  = .false.
       if (iproc==0) then
          call scanfile (params%infile,'flag_temp_'//cm(il:3),answer,ires)
    
          if (ires==1) sections(i)%flag_temp=(trim(answer)=='T')
    
       end if
    
       sections(i)%flag_velvect  = .false.
       if (iproc==0) then
          call scanfile (params%infile,'flag_velvect_'//cm(il:3),answer,ires)
    
          if (ires==1) sections(i)%flag_velvect=(trim(answer)=='T')
    
       end if
    
       sections(i)%scale=100.d0
       if (iproc==0) call scanfile (params%infile,'scale_'//cm(il:3),sections(i)%scale,ires)
    
    
       if (iproc==0) call scanfile (params%infile,'colormap_'//cm(il:3),sections(i)%colormap,ires)
    
    
       if (iproc==0) call scanfile (params%infile,'ncolours_'//cm(il:3),sections(i)%ncolours,ires)
    end do
    
    !=====[erosion parameters]=====================================================
    params%erosion=.false.
    if (iproc==0) then
       call scanfile (params%infile,'erosion',answer,ires)
    
       if (ires==1) params%erosion=(trim(answer)=='T')
    
    end if
    call mpi_bcast(params%erosion,1,mpi_logical,0,mpi_comm_world,ierr)
    
    params%zerosion=0.d0
    if (iproc==0) call scanfile (params%infile,'zerosion',params%zerosion,ires)
    
    call mpi_bcast(params%zerosion,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    
    params%er_start=0.d0
    if (iproc==0) call scanfile (params%infile,'er_start',params%er_start,ires)
    call mpi_bcast(params%er_start,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%er_end=0.d0
    if (iproc==0) call scanfile (params%infile,'er_end',params%er_end,ires)
    call mpi_bcast(params%er_end,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%sed_start=0.d0
    if (iproc==0) call scanfile (params%infile,'sed_start',params%sed_start,ires)
    call mpi_bcast(params%sed_start,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%sed_end=0.d0
    if (iproc==0) call scanfile (params%infile,'sed_end',params%sed_end,ires)
    call mpi_bcast(params%sed_end,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%sedimentation_type=1
    if (iproc==0) call scanfile (params%infile,'sedimentation_type',params%sedimentation_type,ires)
    call mpi_bcast(params%sedimentation_type,1,mpi_integer,0,mpi_comm_world,ierr)
    
    params%zaggrade_init=0.d0
    if (iproc==0) call scanfile (params%infile,'zaggrade_init',params%zaggrade_init,ires)
    params%zaggrade_init=params%zaggrade_init/params%vex
    call mpi_bcast(params%zaggrade_init,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%x_agg_start=0.d0
    if (iproc==0) call scanfile (params%infile,'x_agg_start',params%x_agg_start,ires)
    call mpi_bcast(params%x_agg_start,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%x_agg_end=1.d0
    if (iproc==0) call scanfile (params%infile,'x_agg_end',params%x_agg_end,ires)
    call mpi_bcast(params%x_agg_end,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%y_agg_start=0.d0
    if (iproc==0) call scanfile (params%infile,'y_agg_start',params%y_agg_start,ires)
    call mpi_bcast(params%y_agg_start,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%y_agg_end=1.d0
    if (iproc==0) call scanfile (params%infile,'y_agg_end',params%y_agg_end,ires)
    call mpi_bcast(params%y_agg_end,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%x_agg_sinus_amp=0.d0
    if (iproc==0) call scanfile (params%infile,'x_agg_sinus_amp',params%x_agg_sinus_amp,ires)
    params%x_agg_sinus_amp=params%x_agg_sinus_amp/params%vex
    call mpi_bcast(params%x_agg_sinus_amp,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%x_agg_sinus_wavelth=0.5d0
    if (iproc==0) call scanfile (params%infile,'x_agg_sinus_wavelth',params%x_agg_sinus_wavelth,ires)
    call mpi_bcast(params%x_agg_sinus_wavelth,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%y_agg_sinus_amp=0.d0
    if (iproc==0) call scanfile (params%infile,'y_agg_sinus_amp',params%y_agg_sinus_amp,ires)
    params%y_agg_sinus_amp=params%y_agg_sinus_amp/params%vex
    call mpi_bcast(params%y_agg_sinus_amp,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%y_agg_sinus_wavelth=0.5d0
    if (iproc==0) call scanfile (params%infile,'y_agg_sinus_wavelth',params%y_agg_sinus_wavelth,ires)
    call mpi_bcast(params%y_agg_sinus_wavelth,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%aggrade_rate=-1.d0
    if (iproc==0) call scanfile (params%infile,'aggrade_rate',params%aggrade_rate,ires)
    params%aggrade_rate=params%aggrade_rate/params%vex
    call mpi_bcast(params%aggrade_rate,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%z_prog_init=0.d0
    if (iproc==0) call scanfile (params%infile,'z_prog_init',params%z_prog_init,ires)
    params%z_prog_init=params%z_prog_init/params%vex
    call mpi_bcast(params%z_prog_init,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%z_prog_fin=0.d0
    if (iproc==0) call scanfile (params%infile,'z_prog_fin',params%z_prog_fin,ires)
    params%z_prog_fin=params%z_prog_fin/params%vex
    call mpi_bcast(params%z_prog_fin,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%x_prog_start=0.d0
    if (iproc==0) call scanfile (params%infile,'x_prog_start',params%x_prog_start,ires)
    call mpi_bcast(params%x_prog_start,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%x_prog_end=1.d0
    if (iproc==0) call scanfile (params%infile,'x_prog_end',params%x_prog_end,ires)
    call mpi_bcast(params%x_prog_end,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%x_prog_length=1.d0
    if (iproc==0) call scanfile (params%infile,'x_prog_length',params%x_prog_length,ires)
    call mpi_bcast(params%x_prog_length,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%prog_rate_u=0.d0
    if (iproc==0) call scanfile (params%infile,'prog_rate_u',params%prog_rate_u,ires)
    call mpi_bcast(params%prog_rate_u,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    
    params%length_scale=1.d0
    if (iproc==0) call scanfile (params%infile,'length_scale',params%length_scale,ires)
    call mpi_bcast(params%length_scale,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%velocity_scale=1.d0
    if (iproc==0) call scanfile (params%infile,'velocity_scale',params%velocity_scale,ires)
    call mpi_bcast(params%velocity_scale,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%fluvial_erosion=2.d-1
    if (iproc==0) call scanfile (params%infile,'fluvial_erosion',params%fluvial_erosion,ires)
    call mpi_bcast(params%fluvial_erosion,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%diffusion_erosion=8.d0
    if (iproc==0) call scanfile (params%infile,'diffusion_erosion',params%diffusion_erosion,ires)
    call mpi_bcast(params%diffusion_erosion,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%baselevelx0=1
    if (iproc==0) call scanfile (params%infile,'baselevelx0',params%baselevelx0,ires)
    call mpi_bcast(params%baselevelx0,1,mpi_integer,0,mpi_comm_world,ierr)
    
    params%baselevelx1=1
    if (iproc==0) call scanfile (params%infile,'baselevelx1',params%baselevelx1,ires)
    call mpi_bcast(params%baselevelx1,1,mpi_integer,0,mpi_comm_world,ierr)
    
    params%baselevely0=1
    if (iproc==0) call scanfile (params%infile,'baselevely0',params%baselevely0,ires)
    call mpi_bcast(params%baselevely0,1,mpi_integer,0,mpi_comm_world,ierr)
    
    params%baselevely1=1
    if (iproc==0) call scanfile (params%infile,'baselevely1',params%baselevely1,ires)
    call mpi_bcast(params%baselevely1,1,mpi_integer,0,mpi_comm_world,ierr)
    
    params%compute_qpgram=.false.
    if (iproc.eq.0) then
       call scanfile (params%infile,'compute_qpgram',answer,ires)
    
       if (ires==1) params%compute_qpgram=(trim(answer)=='T')
    
    end if
    call mpi_bcast(params%compute_qpgram,1,mpi_logical,0,mpi_comm_world,ierr)
    
    !=====[flexure parameters]=====================================================
    params%isostasy=.false.
    if (iproc.eq.0) then
       call scanfile (params%infile,'isostasy',answer,ires)
    
       if (ires==1) params%isostasy=(trim(answer)=='T')
    
    Douglas Guptill's avatar
    Douglas Guptill committed
    call mpi_bcast(params%isostasy,1,mpi_logical,0,mpi_comm_world,ierr)
    
    
    params%flexure=.false.
    if (iproc.eq.0) then
       call scanfile (params%infile,'flexure',answer,ires)
    
       if (ires==1) params%flexure=(trim(answer)=='T')
    
    Douglas Guptill's avatar
    Douglas Guptill committed
    call mpi_bcast(params%flexure,1,mpi_logical,0,mpi_comm_world,ierr)
    
    Dave Whipp's avatar
    Dave Whipp committed
    params%isobc=.false. 
    if (iproc==0) then 
       call scanfile (params%infile,'isobc',answer,ires)  
    
       if (ires==1) params%isobc=(trim(answer)=='T') 
    
    Dave Whipp's avatar
    Dave Whipp committed
    end if 
    call mpi_bcast(params%isobc,1,mpi_logical,0,mpi_comm_world,ierr) 
    
    
    params%elastic_plate_thickness=20.d3
    if (iproc==0) call scanfile (params%infile,'elastic_plate_thickness',params%elastic_plate_thickness,ires)
    call mpi_bcast(params%elastic_plate_thickness,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    params%density_difference=3.d3
    if (iproc==0) call scanfile (params%infile,'density_difference',params%density_difference,ires)
    call mpi_bcast(params%density_difference,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    
    !=====[nest parameters]========================================================
    params%nest=.false.
    if (iproc==0) then
       call scanfile (params%infile,'nest',answer,ires)  
    
       if (ires==1) params%nest=(trim(answer)=='T') 
    
    end if 
    call mpi_bcast(params%nest,1,mpi_logical,0,mpi_comm_world,ierr) 
    
    if (params%nest) then
    
       nest%ssoutdir='SSOUT'
       if (iproc.eq.0) call scanfile (params%infile,'ssoutdir',nest%ssoutdir,ires)
       call mpi_bcast(nest%ssoutdir,5,mpi_character,0,mpi_comm_world,ierr)
    
    
    Dave Whipp's avatar
    Dave Whipp committed
       nest%lsoutfile='OUT/time_0001.bin'
       if (iproc.eq.0) call scanfile (params%infile,'lsoutfile',nest%lsoutfile,ires)
       call mpi_bcast(nest%lsoutfile,128,mpi_character,0,mpi_comm_world,ierr)
    
    
       nest%sselemx=1.d0
       if (iproc==0) call scanfile (params%infile,'sselemx',nest%sselemx,ires)
       call mpi_bcast(nest%sselemx,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
       nest%sselemy=1.d0
       if (iproc==0) call scanfile (params%infile,'sselemy',nest%sselemy,ires)
       call mpi_bcast(nest%sselemy,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
       nest%sselemz=1.d0
       if (iproc==0) call scanfile (params%infile,'sselemz',nest%sselemz,ires)
       call mpi_bcast(nest%sselemz,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
       nest%xminls=0.d0
       if (iproc==0) call scanfile (params%infile,'xminls',nest%xminls,ires)
       call mpi_bcast(nest%xminls,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
       nest%yminls=0.d0
       if (iproc==0) call scanfile (params%infile,'yminls',nest%yminls,ires)
       call mpi_bcast(nest%yminls,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
       nest%zminls=0.d0
       if (iproc==0) call scanfile (params%infile,'zminls',nest%zminls,ires)
       call mpi_bcast(nest%zminls,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    
       nest%sselemx0=1.d0
       if (iproc==0) call scanfile (params%infile,'sselemx0',nest%sselemx0,ires)
       call mpi_bcast(nest%sselemx0,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
       nest%sselemy0=1.d0
       if (iproc==0) call scanfile (params%infile,'sselemy0',nest%sselemy0,ires)
       call mpi_bcast(nest%sselemy0,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
       nest%sselemz0=1.d0
       if (iproc==0) call scanfile (params%infile,'sselemz0',nest%sselemz0,ires)
       call mpi_bcast(nest%sselemz0,1,mpi_double_precision,0,mpi_comm_world,ierr)
    
    ! Defined, but not broadcast or read from input file
    !params%distance_exponent=-log(2.d0)/log(cos(params%anglemax))
    params%distance_exponent=1.d0
    
    ! Input values are now written to stdout or log files here
    if (params%debug.gt.0 .and. iproc.eq.0) then
    
      write(*,'(a)')       shift//'--- ADDITIONAL CONTROLLING PARAMETERS ---'
      write(*,'(a,l1)')    shift//'compute_qpgram ',params%compute_qpgram
      write(*,'(a)')       shift//'--- SPINUP PHASE ---'
      write(*,'(a,i4)')    shift//'nstep_spinup ',params%nstep_spinup
      write(*,'(a,e11.4)') shift//'dt_spinup ',params%dt_spinup
      write(*,'(a,i4)')    shift//'griditer_spinup ',params%griditer_spinup
      write(*,'(a,i4)')    shift//'nonlinear_iterations_spinup ',params%nonlinear_iterations_spinup
    
      write(*,'(a,e11.4)') shift//'tol_spinup ',params%tol_spinup
      write(*,'(a,l1)')    shift//'sstemp_spinup ',params%sstemp_spinup
      write(*,'(a,e11.4)') shift//'sstemp_viscosity_spinup ',params%sstemp_viscosity_spinup
    
      write(*,'(a,e11.4)') shift//'sstemp_penalty_spinup ',params%sstemp_penalty_spinup
    
      write(*,'(a,l1)')    shift//'all_surf_fixed_spinup ',params%all_surf_fixed_spinup
    
      do i=1,params%ns
        write(*,'(a,i4,a,i4)')    shift//'surface ',i,' material_spinup ',surface(i)%material_spinup
      enddo
    
      write(*,'(a,l1)')    shift//'fixed_cloud_spinup ',params%fixed_cloud_spinup
    
      write(*,'(a)')       shift//'--- TIMESTEPPING ---'
      write(*,'(a,e11.4)') shift//'dt_main ',params%dt_main
      write(*,'(a,e11.4)') shift//'dt ',params%dt
    
    Dave Whipp's avatar
    Dave Whipp committed
      write(*,'(a,i4)')    shift//'nstep ',params%nstep
    
      write(*,'(a,e11.4)') shift//'courant ',params%courant
      write(*,'(a,l1)')    shift//'normaladvect ',params%normaladvect
      write(*,'(a)')       shift//'--- GRID ITERATIONS ---'
      write(*,'(a,i4)')    shift//'griditer_main ',params%griditer_main
      write(*,'(a,i4)')    shift//'griditer ',params%griditer
      write(*,'(a,e11.4)') shift//'octree_refine_ratio ',params%octree_refine_ratio
      write(*,'(a)')       shift//'--- NONLINEAR ITERATIONS ---'
      write(*,'(a,i4)')    shift//'nonlinear_iterations_main ',params%nonlinear_iterations_main
      write(*,'(a,i4)')    shift//'nonlinear_iterations ',params%nonlinear_iterations
      write(*,'(a,i4)')    shift//'nb_iter_nl_min ',params%nb_iter_nl_min
      write(*,'(a,e11.4)') shift//'tol ',params%tol
      write(*,'(a,l1)')    shift//'adaptive_tol ',params%adaptive_tol
      write(*,'(a)')       shift//'--- OCTREES ---'
      write(*,'(a,i4)')    shift//'leveluniform_oct ',params%leveluniform_oct
      write(*,'(a,i4)')    shift//'levelmax_oct ',params%levelmax_oct
      write(*,'(a,e11.4)') shift//'vex ',params%vex
      write(*,'(a,l1)')    shift//'ismooth ',params%ismooth
      write(*,'(a,i12)')   shift//'noctreemax ',params%noctreemax
      write(*,'(a,e11.4)') shift//'refine_ratio ',params%refine_ratio
      write(*,'(a,i4)')    shift//'refine_criterion ',params%refine_criterion
      write(*,'(a,i4)')    shift//'initial_refine_level ',params%initial_refine_level
      write(*,'(a,l1)')    shift//'renumber_nodes ',params%renumber_nodes
      write(*,'(a)')       shift//'--- NESTED MODEL PARAMETERS ---'
      write(*,'(a,l1)')    shift//'nest ',params%nest
      if (params%nest) then
        write(*,'(a,a)')     shift//'ssoutdir ',trim(nest%ssoutdir)
        write(*,'(a,a)')     shift//'lsoutfile ',trim(nest%lsoutfile)
        write(*,'(a,e11.4)') shift//'sselemx ',nest%sselemx
        write(*,'(a,e11.4)') shift//'sselemy ',nest%sselemy
        write(*,'(a,e11.4)') shift//'sselemz ',nest%sselemz
        write(*,'(a,e11.4)') shift//'xminls ',nest%xminls
        write(*,'(a,e11.4)') shift//'yminls ',nest%yminls
        write(*,'(a,e11.4)') shift//'zminls ',nest%zminls
        write(*,'(a,e11.4)') shift//'sselemx0 ',nest%sselemx0
        write(*,'(a,e11.4)') shift//'sselemy0 ',nest%sselemy0
        write(*,'(a,e11.4)') shift//'sselemz0 ',nest%sselemz0
      endif
      write(*,'(a)')       shift//'--- BOUNDARY CONDITIONS AND VELOCITY CONSTRAINTS ---'
      write(*,'(a,l1)')    shift//'invariants_2d ',params%invariants_2d
      write(*,'(a,l1)')    shift//'damp_surface ',params%damp_surface
      write(*,'(a,e11.4)') shift//'damp_factor ',params%damp_factor
      write(*,'(a,a)')     shift//'bctype ',bcdef%bctype
      select case(trim(bcdef%bctype))
      case('basic')
        write(*,'(a,a)') shift//'bcorder ',bcdef%bcorder
        write(*,'(a,l1)') shift//'fixux0 ',bcdef%fixux0
        write(*,'(a,l1)') shift//'fixux1 ',bcdef%fixux1
        write(*,'(a,l1)') shift//'fixvx0 ',bcdef%fixvx0
        write(*,'(a,l1)') shift//'fixvx1 ',bcdef%fixvx1
        write(*,'(a,l1)') shift//'fixwx0 ',bcdef%fixwx0
        write(*,'(a,l1)') shift//'fixwx1 ',bcdef%fixwx1
        write(*,'(a,l1)') shift//'fixuy0 ',bcdef%fixuy0
        write(*,'(a,l1)') shift//'fixuy1 ',bcdef%fixuy1
        write(*,'(a,l1)') shift//'fixvy0 ',bcdef%fixvy0
        write(*,'(a,l1)') shift//'fixvy1 ',bcdef%fixvy1
        write(*,'(a,l1)') shift//'fixwy0 ',bcdef%fixwy0
        write(*,'(a,l1)') shift//'fixwy1 ',bcdef%fixwy1
        write(*,'(a,l1)') shift//'fixuz0 ',bcdef%fixuz0
        write(*,'(a,l1)') shift//'fixuz1 ',bcdef%fixuz1
        write(*,'(a,l1)') shift//'fixvz0 ',bcdef%fixvz0
        write(*,'(a,l1)') shift//'fixvz1 ',bcdef%fixvz1
        write(*,'(a,l1)') shift//'fixwz0 ',bcdef%fixwz0
        write(*,'(a,l1)') shift//'fixwz1 ',bcdef%fixwz1
        write(*,'(a,e11.4)') shift//'ux0 ',bcdef%ux0
        write(*,'(a,e11.4)') shift//'ux1 ',bcdef%ux1
        write(*,'(a,e11.4)') shift//'vx0 ',bcdef%vx0
        write(*,'(a,e11.4)') shift//'vx1 ',bcdef%vx1
        write(*,'(a,e11.4)') shift//'wx0 ',bcdef%wx0
        write(*,'(a,e11.4)') shift//'wx1 ',bcdef%wx1
        write(*,'(a,e11.4)') shift//'uy0 ',bcdef%uy0
        write(*,'(a,e11.4)') shift//'uy1 ',bcdef%uy1
        write(*,'(a,e11.4)') shift//'vy0 ',bcdef%vy0
        write(*,'(a,e11.4)') shift//'vy1 ',bcdef%vy1
        write(*,'(a,e11.4)') shift//'wy0 ',bcdef%wy0
        write(*,'(a,e11.4)') shift//'wy1 ',bcdef%wy1
        write(*,'(a,e11.4)') shift//'uz0 ',bcdef%uz0
        write(*,'(a,e11.4)') shift//'uz1 ',bcdef%uz1
        write(*,'(a,e11.4)') shift//'vz0 ',bcdef%vz0
        write(*,'(a,e11.4)') shift//'vz1 ',bcdef%vz1
        write(*,'(a,e11.4)') shift//'wz0 ',bcdef%wz0
        write(*,'(a,e11.4)') shift//'wz1 ',bcdef%wz1
      case('segmented_s_line')
        write(*,'(a)') shift//'Boundary condition parameters'
        do i=1,12
          write(*,'(a,i2,a,e11.4)') shift//'bc_parameter ',i,' ',bcdef%bc_parameters(i)
        enddo
    
      case('segmented_s_line_round')
        write(*,'(a)') shift//'Boundary condition parameters'
        do i=1,13
          write(*,'(a,i2,a,e11.4)') shift//'bc_parameter ',i,' ',bcdef%bc_parameters(i)
        enddo
    
      case('rot_subduction')
        write(*,'(a)') shift//'Boundary condition parameters'
    
          write(*,'(a,i2,a,e11.4)') shift//'bc_parameter ',i,' ',bcdef%bc_parameters(i)
        enddo
    
      case('rot_sub_init')
        write(*,'(a)') shift//'Boundary condition parameters'
    
          write(*,'(a,i2,a,e11.4)') shift//'bc_parameter ',i,' ',bcdef%bc_parameters(i)
        enddo
    
      end select
      write(*,'(a,e11.4)')   shift//'utrans ',bcdef%utrans
      write(*,'(a,e11.4)')   shift//'vtrans ',bcdef%vtrans
      write(*,'(a)')         shift//'--- PRESSURE ---'
      write(*,'(a,i4)')      shift//'smoothing_type ',params%smoothing_type
      write(*,'(a,e11.4)')   shift//'pressure0 ',params%pressure0
      write(*,'(a,e11.4)')   shift//'plastic_stress_min ',params%plastic_stress_min
      write(*,'(a)')         shift//'--- CLOUD ---'
      write(*,'(a,i4)')      shift//'npmin ',params%npmin
      write(*,'(a,i4)')      shift//'npmax ',params%npmax
    
    Dave Whipp's avatar
    Dave Whipp committed
      write(*,'(a,l1)')      shift//'gridcloud ',params%gridcloud
      write(*,'(a,i4)')      shift//'clnpx ',params%clnpx
      write(*,'(a,i4)')      shift//'clnpy ',params%clnpy
      write(*,'(a,i4)')      shift//'clnpz ',params%clnpz
    
      write(*,'(a,i4)')      shift//'dstrnz ',params%dstrnz  
    
    Dave Whipp's avatar
    Dave Whipp committed
      write(*,'(a,l1)')      shift//'centerptcloud ',params%centerptcloud
    
      write(*,'(a,l1)')      shift//'compaction ',params%compaction
    
      write(*,'(a,l1)')      shift//'move_cloud_at_midpoint ',params%move_cloud_at_midpoint
    
      write(*,'(a,l1)')      shift//'fixed_cloud ',params%fixed_cloud
    
      write(*,'(a)')         shift//'--- FEM + DIVFEM + MUMPS/WSMP ---'
      write(*,'(a,i4)')      shift//'matrule ',params%matrule
      write(*,'(a,i4)')      shift//'levelcut ',params%levelcut
      write(*,'(a,i4)')      shift//'levelapprox ',params%levelapprox
      write(*,'(a,e11.4)')   shift//'penalty ',params%penalty
      write(*,'(a,l1)')      shift//'excl_vol ',params%excl_vol
    
      write(*,'(a,l1)')      shift//'wsmp_scaling ',params%wsmp_scaling
    
      write(*,'(a)')         shift//'--- TEMPERATURE ---'
      write(*,'(a,l1)')      shift//'calculate_temp ',params%calculate_temp
      write(*,'(a,e11.4)')   shift//'ztemp ',params%ztemp
      write(*,'(a,e11.4)')   shift//'tempscale ',params%tempscale
    
      write(*,'(a,l1)')      shift//'sstemp_on_restart ',params%sstemp_on_restart
    
      write(*,'(a)')         shift//'--- ISOSTASY ---'
      write(*,'(a,l1)')      shift//'isostasy ',params%isostasy
      write(*,'(a,l1)')      shift//'flexure ',params%flexure
      write(*,'(a,e11.4)')   shift//'elastic_plate_thickness ',params%elastic_plate_thickness
      write(*,'(a,e11.4)')   shift//'density_difference ',params%density_difference
      write(*,'(a,l1)')      shift//'isobc ',params%isobc
      write(*,'(a)')         shift//'--- MATERIALS ---'
    
      write(*,'(a,l1)')      shift//'materials_on_cloud ',params%materials_on_cloud
    
      write(*,'(a,i4)')      shift//'material0 ',material0
      write(*,'(a,l1)')      shift//'bulkvisc ',params%bulkvisc
      write(*,'(a,l1)')      shift//'init_e2d ',params%init_e2d
      write(*,'(a,e11.4)')   shift//'e2d0 ',params%e2d0
    
      write(*,'(a,i4)')      shift//'dommat ',params%dommat  
    
      write(*,'(a,e11.4)')   shift//'domvol ',params%domvol
    
        write(*,'(a,i4,a)')  shift//'--- Properties for material ',i,' ---'
    
    Dave Whipp's avatar
    Dave Whipp committed
        write(*,'(a,e11.4)') shift//'density ',mat(i)%density
        write(*,'(a,e11.4)') shift//'viscosity ',mat(i)%viscosity
        write(*,'(a,e11.4)') shift//'penalty ',mat(i)%penalty
        write(*,'(a,e11.4)') shift//'expon ',mat(i)%expon
    
        write(*,'(a,e11.4)') shift//'fviscosity ',mat(i)%fviscosity
    
        write(*,'(a,a16)')   shift//'fvisc_weak_type ',mat(i)%fvisc_weak_type
        write(*,'(a,e11.4)') shift//'fvisc_weak_onset ',mat(i)%fvisc_weak_onset
        write(*,'(a,e11.4)') shift//'fvisc_weak_end ',mat(i)%fvisc_weak_end
    
        write(*,'(a,e11.4)') shift//'fvisc_weak_final ',mat(i)%fvisc_weak_final
        write(*,'(a,e11.4)') shift//'fvisc_strong_onset ',mat(i)%fvisc_strong_onset
        write(*,'(a,e11.4)') shift//'fvisc_strong_end ',mat(i)%fvisc_strong_end
        write(*,'(a,e11.4)') shift//'fvisc_strong_final ',mat(i)%fvisc_strong_final
    
    Dave Whipp's avatar
    Dave Whipp committed
        write(*,'(a,e11.4)') shift//'diffusivity ',mat(i)%diffusivity
        write(*,'(a,e11.4)') shift//'heat ',mat(i)%heat
    
        write(*,'(a,e11.4)') shift//'activationenergy ',mat(i)%activationenergy
        write(*,'(a,e11.4)') shift//'expansion ',mat(i)%expansion
    
    Dave Whipp's avatar
    Dave Whipp committed
        write(*,'(a,a8)')    shift//'plasticity_type ',mat(i)%plasticity_type
    
    Dave Whipp's avatar
    Dave Whipp committed
        write(*,'(a,a16)')   shift//'plasticity_ss_type_coh ',mat(i)%plasticity_ss_type_coh
        write(*,'(a,a16)')   shift//'plasticity_ss_type_phi ',mat(i)%plasticity_ss_type_phi    
        write(*,'(a,l1)')    shift//'compactible ',mat(i)%compactible
    
        write(*,'(a,e11.4)') shift//'grain_density ',mat(i)%grain_density
        write(*,'(a,e11.4)') shift//'pore_fluid_density ',mat(i)%pore_fluid_density
        write(*,'(a,e11.4)') shift//'surface_porosity ',mat(i)%surface_porosity
        write(*,'(a,e11.4)') shift//'compaction_coef ',mat(i)%compaction_coef 
    
        if (trim(mat(i)%plasticity_type).ne.'No') then
          write(*,'(a,i4)') shift//'Plasticity parameters for material ',i
    
            write(*,'(a,i2,a2,e11.4)') shift//'plasticity parameter ',j,' ',mat(i)%plasticity_parameters(j)
    
        write (*,'(a,i4)') shift//'Material transitions for material ',i
        do j=1,6
    
    Dave Whipp's avatar
    Dave Whipp committed
          write(*,'(a,i1,a2,e11.4)') shift//'mattrans ',j,' ',mat(i)%mattrans(j)
    
    Dave Whipp's avatar
    Dave Whipp committed
          write(*,'(a,i1,a2,i4)') shift//'transnum ',j,' ',mat(i)%transnum(j)
    
    Dave Whipp's avatar
    Dave Whipp committed
      write(*,'(a,e11.4)') shift//'viscositymin ',params%viscositymin
      write(*,'(a,e11.4)') shift//'viscositymax ',params%viscositymax
    
      write(*,'(a)')       shift//'--- SURFACES ---'
      write(*,'(a,l1)')    shift//'remove_surf_pts ',params%remove_surf_pts
    
        write(*,'(a,i4,a)')       shift//'--- Properties for surface ',i,' ---'
    
        write(*,'(a,i4,a,i4)')    shift//'surface ',i,' levelt ',surface(i)%levelt
    
        write(*,'(a,i4,a,i4)')    shift//'surface ',i,' itype ',surface(i)%itype
    
        write(*,'(a,i4,a,i4)')    shift//'surface ',i,' closed ',surface(i)%closed
    
        write(*,'(a,i4,a,i4)')    shift//'surface ',i,' type ',surface(i)%surface_type
    
        write(*,'(a,i4,a,l1)')    shift//'surface ',i,' rand ',surface(i)%rand
    
        write(*,'(a,i4,a,e11.4)') shift//'surface ',i,' sp01 ',surface(i)%sp01
        write(*,'(a,i4,a,e11.4)') shift//'surface ',i,' sp02 ',surface(i)%sp02
        write(*,'(a,i4,a,e11.4)') shift//'surface ',i,' sp03 ',surface(i)%sp03
        write(*,'(a,i4,a,e11.4)') shift//'surface ',i,' sp04 ',surface(i)%sp04
        write(*,'(a,i4,a,e11.4)') shift//'surface ',i,' sp05 ',surface(i)%sp05
        write(*,'(a,i4,a,e11.4)') shift//'surface ',i,' sp06 ',surface(i)%sp06
        write(*,'(a,i4,a,e11.4)') shift//'surface ',i,' sp07 ',surface(i)%sp07
        write(*,'(a,i4,a,e11.4)') shift//'surface ',i,' sp08 ',surface(i)%sp08
        write(*,'(a,i4,a,e11.4)') shift//'surface ',i,' sp09 ',surface(i)%sp09
        write(*,'(a,i4,a,e11.4)') shift//'surface ',i,' sp10 ',surface(i)%sp10
        write(*,'(a,i4,a,e11.4)') shift//'surface ',i,' sp11 ',surface(i)%sp11
        write(*,'(a,i4,a,e11.4)') shift//'surface ',i,' sp12 ',surface(i)%sp12
    
        write(*,'(a,i4,a,e11.4)') shift//'surface ',i,' sp13 ',surface(i)%sp13
        write(*,'(a,i4,a,e11.4)') shift//'surface ',i,' sp14 ',surface(i)%sp14
    
        write(*,'(a,i4,a,i4)')    shift//'surface ',i,' material ',surface(i)%material
    
        write(*,'(a,i4,a,e11.4)') shift//'surface ',i,' activation_time ',surface(i)%activation_time
        write(*,'(a,i4,a,i4)')    shift//'surface ',i,' leveloct ',surface(i)%leveloct
    
        write(*,'(a,i4,a,e11.4)') shift//'surface ',i,' stretch ',surface(i)%stretch
        write(*,'(a,i4,a,e11.4)') shift//'surface ',i,' anglemax ',surface(i)%anglemax
        write(*,'(a,i4,a,i4)')    shift//'surface ',i,' criterion ',surface(i)%criterion
        write(*,'(a,i4,a,e11.4)') shift//'surface ',i,' anglemaxoctree ',surface(i)%anglemaxoctree
        write(*,'(a,i4,a,i4)')    shift//'surface ',i,' spread_surface_points ',surface(i)%spread_surface_points
    
        write(*,'(a,i4,a,l1)')    shift//'surface ',i,' fixed_surf_spinup ',surface(i)%fixed_surf_spinup
        write(*,'(a,i4,a,l1)')    shift//'surface ',i,' fixed_surf ',surface(i)%fixed_surf
    
        write(*,'(a,i4,a,l1)')    shift//'surface ',i,' surf_for_mat_props ',surface(i)%surf_for_mat_props
    
        write(*,'(a,i4,a,l1)')    shift//'surface ',i,' remove_after_mat_def ',surface(i)%remove_after_mat_def
    
    Dave Whipp's avatar
    Dave Whipp committed
      write(*,'(a,i4)') shift//'niter_move ',params%niter_move
    
      write(*,'(a)')    shift//'--- REFINEMENT IN BOXES ---'
    
          write(*,'(a,i3,a)')  shift//'--- Input values for box ',i,' ---'
    
    Dave Whipp's avatar
    Dave Whipp committed
          write(*,'(a,e11.4)') shift//'box x0 ',boxes(i)%x0
          write(*,'(a,e11.4)') shift//'box x1 ',boxes(i)%x1
          write(*,'(a,e11.4)') shift//'box y0 ',boxes(i)%y0
          write(*,'(a,e11.4)') shift//'box y1 ',boxes(i)%y1
          write(*,'(a,e11.4)') shift//'box z0 ',boxes(i)%z0
          write(*,'(a,e11.4)') shift//'box z1 ',boxes(i)%z1
          write(*,'(a,i4)')    shift//'box level ',boxes(i)%level
    
      write(*,'(a)')    shift//'--- REFINEMENT ON CUBE FACES ---'
      write(*,'(a,l1)') shift//'ref_on_faces ',params%ref_on_faces
      if (params%ref_on_faces) then
        do i=1,6
          write(*,'(a,i1,a)')  shift//'--- Refinement values for face ',i,' ---'
          write(*,'(a,i4)')    shift//'cube_faces level ',cube_faces(i)%level
          write(*,'(a,e11.4)') shift//'cube_faces b ',cube_faces(i)%b
          write(*,'(a,e11.4)') shift//'cube_faces t ',cube_faces(i)%t
          write(*,'(a,e11.4)') shift//'cube_faces l ',cube_faces(i)%l
          write(*,'(a,e11.4)') shift//'cube_faces r ',cube_faces(i)%r
        enddo
      endif
      write(*,'(a)')       shift//'--- EROSION ---'
      write(*,'(a,l1)')    shift//'erosion ',params%erosion
      write(*,'(a,e11.4)') shift//'zerosion ',params%zerosion
      write(*,'(a,e11.4)') shift//'length_scale ',params%length_scale
      write(*,'(a,e11.4)') shift//'velocity_scale ',params%velocity_scale
      write(*,'(a,e11.4)') shift//'fluvial_erosion ',params%fluvial_erosion
      write(*,'(a,e11.4)') shift//'diffusion_erosion ',params%diffusion_erosion
      write(*,'(a,i4)')    shift//'baselevelx0 ',params%baselevelx0
      write(*,'(a,i4)')    shift//'baselevelx1 ',params%baselevelx1
      write(*,'(a,i4)')    shift//'baselevely0 ',params%baselevely0
      write(*,'(a,i4)')    shift//'baselevely1 ',params%baselevely1
    
      write(*,'(a)')       shift//'--- SEDIMENTATION ---'
      write(*,'(a,l1)')    shift//'sedimentation ',params%sedimentation
      write(*,'(a,i4)')    shift//'sedimentation_type ',params%sedimentation_type
      write(*,'(a,e11.4)') shift//'er_start ',params%er_start
      write(*,'(a,e11.4)') shift//'er_end ',params%er_end
      write(*,'(a,e11.4)') shift//'sed_start ',params%sed_start
      write(*,'(a,e11.4)') shift//'sed_end ',params%sed_end
      write(*,'(a,e11.4)') shift//'zaggrade_init ',params%zaggrade_init
      write(*,'(a,e11.4)') shift//'x_agg_start ',params%x_agg_start
      write(*,'(a,e11.4)') shift//'x_agg_end ',params%x_agg_end
      write(*,'(a,e11.4)') shift//'y_agg_start ',params%y_agg_start
      write(*,'(a,e11.4)') shift//'y_agg_end ',params%y_agg_end
      write(*,'(a,e11.4)') shift//'x_agg_sinus_amp ',params%x_agg_sinus_amp
      write(*,'(a,e11.4)') shift//'x_agg_sinus_wavelth ',params%x_agg_sinus_wavelth
      write(*,'(a,e11.4)') shift//'y_agg_sinus_amp ',params%y_agg_sinus_amp
      write(*,'(a,e11.4)') shift//'y_agg_sinus_wavelth ',params%y_agg_sinus_wavelth
      write(*,'(a,e11.4)') shift//'aggrade_rate ',params%aggrade_rate
      write(*,'(a,e11.4)') shift//'z_prog_init ',params%z_prog_init
      write(*,'(a,e11.4)') shift//'z_prog_fin ',params%z_prog_fin
      write(*,'(a,e11.4)') shift//'x_prog_start ',params%x_prog_start
      write(*,'(a,e11.4)') shift//'x_prog_end ',params%x_prog_end
      write(*,'(a,e11.4)') shift//'x_prog_length ',params%x_prog_length
      write(*,'(a,e11.4)') shift//'prog_rate_u ',params%prog_rate_u
    
      write(*,'(a)')       shift//'--- MATRIX VISUALISATION ---'
      write(*,'(a,l1)')    shift//'visualise_matrix ',params%visualise_matrix
      write(*,'(a)')       shift//'--- CROSS SECTIONS ---'
    
      if (params%nsections.gt.0) then
        do i=1,params%nsections
    
          write(*,'(a,i3,a)')  shift//'--- Input values for section ',i,' ---'    
    
    Dave Whipp's avatar
    Dave Whipp committed
          write(*,'(a,i4)')    shift//'section xyz ',sections(i)%xyz
          write(*,'(a,e11.4)') shift//'section slice ',sections(i)%slice
          write(*,'(a,l1)')    shift//'section flag press ',sections(i)%flag_press
          write(*,'(a,l1)')    shift//'section flag spress ',sections(i)%flag_spress
          write(*,'(a,l1)')    shift//'section flag e2d ',sections(i)%flag_e2d
          write(*,'(a,l1)')    shift//'section flag e3d ',sections(i)%flag_e3d
          write(*,'(a,l1)')    shift//'section flag strain ',sections(i)%flag_strain
    
          write(*,'(a,l1)')    shift//'section flag lode ',sections(i)%flag_lode
    
    Dave Whipp's avatar
    Dave Whipp committed
          write(*,'(a,l1)')    shift//'section flag crit ',sections(i)%flag_crit
          write(*,'(a,l1)')    shift//'section flag grid ',sections(i)%flag_grid
    
          write(*,'(a,l1)')    shift//'section flag mu ',sections(i)%flag_mu
    
    Dave Whipp's avatar
    Dave Whipp committed
          write(*,'(a,l1)')    shift//'section flag u ',sections(i)%flag_u
          write(*,'(a,l1)')    shift//'section flag v ',sections(i)%flag_v  
          write(*,'(a,l1)')    shift//'section flag w ',sections(i)%flag_w 
    
          write(*,'(a,l1)')    shift//'section flag q ',sections(i)%flag_q
    
    Dave Whipp's avatar
    Dave Whipp committed
          write(*,'(a,l1)')    shift//'section flag uvw ',sections(i)%flag_uvw
    
          write(*,'(a,l1)')    shift//'section flag lsf ',sections(i)%flag_lsf
          write(*,'(a,l1)')    shift//'section flag vfield ',sections(i)%flag_vfield
    
    Dave Whipp's avatar
    Dave Whipp committed
          write(*,'(a,l1)')    shift//'section flag colour ',sections(i)%flag_colour
          write(*,'(a,l1)')    shift//'section flag plastic ',sections(i)%flag_plastic
          write(*,'(a,i3)')    shift//'section flag temp ',sections(i)%flag_temp
          write(*,'(a,l1)')    shift//'section flag velvect ',sections(i)%flag_velvect
          write(*,'(a,e11.4)') shift//'section scale ',sections(i)%scale
          write(*,'(a,a3)')    shift//'section colormap ',sections(i)%colormap
          write(*,'(a,i4)')    shift//'section ncolours ',sections(i)%ncolours
    
      !write(*,'(a,e11.4)') shift//'distance_exponent ',params%distance_exponent
      write(*,'(a)')      shift//'--------------------------------------------------------------------------------'
      write(*,'(a)')      shift//'--- END OF INPUT FILE ---'
      write(*,'(a)')      shift//'--------------------------------------------------------------------------------'
    endif
    if (params%debug.gt.1) then
      write(threadinfo%Logunit,'(a)')         '--- ADDITIONAL CONTROLLING PARAMETERS ---'
      write(threadinfo%Logunit,'(a32,l1)')    'compute_qpgram ',params%compute_qpgram
      write(threadinfo%Logunit,'(a)')         '--- SPINUP PHASE ---'
      write(threadinfo%Logunit,'(a32,i4)')    'nstep_spinup ',params%nstep_spinup
      write(threadinfo%Logunit,'(a32,e11.4)') 'dt_spinup ',params%dt_spinup
      write(threadinfo%Logunit,'(a32,i4)')    'griditer_spinup ',params%griditer_spinup
      write(threadinfo%Logunit,'(a32,i4)')    'nonlinear_iterations_spinup ',params%nonlinear_iterations_spinup
    
      write(threadinfo%Logunit,'(a32,e11.4)') 'tol_spinup ',params%tol_spinup
      write(threadinfo%Logunit,'(a32,l1)')    'sstemp_spinup ',params%sstemp_spinup
      write(threadinfo%Logunit,'(a32,e11.4)') 'sstemp_viscosity_spinup ',params%sstemp_viscosity_spinup
    
      write(threadinfo%Logunit,'(a32,e11.4)') 'sstemp_penalty_spinup ',params%sstemp_penalty_spinup
    
      write(threadinfo%Logunit,'(a32,l1)')    'all_surf_fixed_spinup ',params%all_surf_fixed_spinup
    
      do i=1,params%ns
            write(threadinfo%Logunit,'(a32,i4,a,i4)')    'surface ',i,' material_spinup ',surface(i)%material_spinup
      enddo
    
      write(threadinfo%Logunit,'(a32,l1)')    'fixed_cloud_spinup ',params%fixed_cloud_spinup
    
      write(threadinfo%Logunit,'(a)')         '--- TIMESTEPPING ---'
      write(threadinfo%Logunit,'(a32,e11.4)') 'dt_main ',params%dt_main
      write(threadinfo%Logunit,'(a32,e11.4)') 'dt ',params%dt
      write(threadinfo%Logunit,'(a32,i4)')    'nstep ',params%nstep
      write(threadinfo%Logunit,'(a32,e11.4)') 'courant ',params%courant
      write(threadinfo%Logunit,'(a32,l1)')    'normaladvect ',params%normaladvect
      write(threadinfo%Logunit,'(a)')         '--- GRID ITERATIONS ---'
      write(threadinfo%Logunit,'(a32,i4)')    'griditer_main ',params%griditer_main
      write(threadinfo%Logunit,'(a32,i4)')    'griditer ',params%griditer
      write(threadinfo%Logunit,'(a32,e11.4)') 'octree_refine_ratio ',params%octree_refine_ratio
      write(threadinfo%Logunit,'(a)')         '--- NONLINEAR ITERATIONS ---'
      write(threadinfo%Logunit,'(a32,i4)')    'nonlinear_iterations_main ',params%nonlinear_iterations_main
      write(threadinfo%Logunit,'(a32,i4)')    'nonlinear_iterations ',params%nonlinear_iterations
      write(threadinfo%Logunit,'(a32,i4)')    'nb_iter_nl_min ',params%nb_iter_nl_min
      write(threadinfo%Logunit,'(a32,e11.4)') 'tol ',params%tol
      write(threadinfo%Logunit,'(a32,l1)')    'adaptive_tol ',params%adaptive_tol
      write(threadinfo%Logunit,'(a)')         '--- OCTREES ---'
      write(threadinfo%Logunit,'(a32,i4)')    'leveluniform_oct ',params%leveluniform_oct
      write(threadinfo%Logunit,'(a32,i4)')    'levelmax_oct ',params%levelmax_oct
      write(threadinfo%Logunit,'(a32,e11.4)') 'vex ',params%vex
      write(threadinfo%Logunit,'(a32,l1)')    'ismooth ',params%ismooth
      write(threadinfo%Logunit,'(a32,i12)')   'noctreemax ',params%noctreemax
      write(threadinfo%Logunit,'(a32,e11.4)') 'refine_ratio ',params%refine_ratio
      write(threadinfo%Logunit,'(a32,i4)')    'refine_criterion ',params%refine_criterion
      write(threadinfo%Logunit,'(a32,i4)')    'initial_refine_level ',params%initial_refine_level
      write(threadinfo%Logunit,'(a32,l1)')    'renumber_nodes ',params%renumber_nodes
      write(threadinfo%Logunit,'(a)')         '--- NESTED MODEL PARAMETERS ---'
      write(threadinfo%Logunit,'(a32,l1)')    'nest ',params%nest
      if (params%nest) then
        write(threadinfo%Logunit,'(a32,a)') 'ssoutdir ',trim(nest%ssoutdir)
        write(threadinfo%Logunit,'(a32,a)') 'lsoutfile ',trim(nest%lsoutfile)
        write(threadinfo%Logunit,'(a32,e11.4)') 'sselemx ',nest%sselemx
        write(threadinfo%Logunit,'(a32,e11.4)') 'sselemy ',nest%sselemy
        write(threadinfo%Logunit,'(a32,e11.4)') 'sselemz ',nest%sselemz
        write(threadinfo%Logunit,'(a32,e11.4)') 'xminls ',nest%xminls
        write(threadinfo%Logunit,'(a32,e11.4)') 'yminls ',nest%yminls
        write(threadinfo%Logunit,'(a32,e11.4)') 'zminls ',nest%zminls
        write(threadinfo%Logunit,'(a32,e11.4)') 'sselemx0 ',nest%sselemx0
        write(threadinfo%Logunit,'(a32,e11.4)') 'sselemy0 ',nest%sselemy0
        write(threadinfo%Logunit,'(a32,e11.4)') 'sselemz0 ',nest%sselemz0
      endif
      write(threadinfo%Logunit,'(a)')         '--- BOUNDARY CONDITIONS AND VELOCITY CONSTRAINTS ---'
      write(threadinfo%Logunit,'(a32,l1)')    'invariants_2d ',params%invariants_2d
      write(threadinfo%Logunit,'(a32,l1)')    'damp_surface ',params%damp_surface
      write(threadinfo%Logunit,'(a32,e11.4)') 'damp_factor ',params%damp_factor
      write(threadinfo%Logunit,'(a)') '--- Boundary condition parameters ---'
      write(threadinfo%Logunit,'(a32,a)') 'bctype ',bcdef%bctype
    
      select case(trim(bcdef%bctype))
      case('basic')
    
        write(threadinfo%Logunit,'(a32,a)') 'bcorder ',bcdef%bcorder
        write(threadinfo%Logunit,'(a32,l1)') 'fixux0 ',bcdef%fixux0
        write(threadinfo%Logunit,'(a32,l1)') 'fixux1 ',bcdef%fixux1
        write(threadinfo%Logunit,'(a32,l1)') 'fixvx0 ',bcdef%fixvx0
        write(threadinfo%Logunit,'(a32,l1)') 'fixvx1 ',bcdef%fixvx1
        write(threadinfo%Logunit,'(a32,l1)') 'fixwx0 ',bcdef%fixwx0
        write(threadinfo%Logunit,'(a32,l1)') 'fixwx1 ',bcdef%fixwx1
        write(threadinfo%Logunit,'(a32,l1)') 'fixuy0 ',bcdef%fixuy0
        write(threadinfo%Logunit,'(a32,l1)') 'fixuy1 ',bcdef%fixuy1
        write(threadinfo%Logunit,'(a32,l1)') 'fixvy0 ',bcdef%fixvy0
        write(threadinfo%Logunit,'(a32,l1)') 'fixvy1 ',bcdef%fixvy1
        write(threadinfo%Logunit,'(a32,l1)') 'fixwy0 ',bcdef%fixwy0
        write(threadinfo%Logunit,'(a32,l1)') 'fixwy1 ',bcdef%fixwy1
        write(threadinfo%Logunit,'(a32,l1)') 'fixuz0 ',bcdef%fixuz0
        write(threadinfo%Logunit,'(a32,l1)') 'fixuz1 ',bcdef%fixuz1
        write(threadinfo%Logunit,'(a32,l1)') 'fixvz0 ',bcdef%fixvz0
        write(threadinfo%Logunit,'(a32,l1)') 'fixvz1 ',bcdef%fixvz1
        write(threadinfo%Logunit,'(a32,l1)') 'fixwz0 ',bcdef%fixwz0
        write(threadinfo%Logunit,'(a32,l1)') 'fixwz1 ',bcdef%fixwz1
        write(threadinfo%Logunit,'(a32,e11.4)') 'ux0 ',bcdef%ux0
        write(threadinfo%Logunit,'(a32,e11.4)') 'ux1 ',bcdef%ux1
        write(threadinfo%Logunit,'(a32,e11.4)') 'vx0 ',bcdef%vx0
        write(threadinfo%Logunit,'(a32,e11.4)') 'vx1 ',bcdef%vx1
        write(threadinfo%Logunit,'(a32,e11.4)') 'wx0 ',bcdef%wx0
        write(threadinfo%Logunit,'(a32,e11.4)') 'wx1 ',bcdef%wx1
        write(threadinfo%Logunit,'(a32,e11.4)') 'uy0 ',bcdef%uy0
        write(threadinfo%Logunit,'(a32,e11.4)') 'uy1 ',bcdef%uy1
        write(threadinfo%Logunit,'(a32,e11.4)') 'vy0 ',bcdef%vy0
        write(threadinfo%Logunit,'(a32,e11.4)') 'vy1 ',bcdef%vy1
        write(threadinfo%Logunit,'(a32,e11.4)') 'wy0 ',bcdef%wy0
        write(threadinfo%Logunit,'(a32,e11.4)') 'wy1 ',bcdef%wy1
        write(threadinfo%Logunit,'(a32,e11.4)') 'uz0 ',bcdef%uz0
        write(threadinfo%Logunit,'(a32,e11.4)') 'uz1 ',bcdef%uz1
        write(threadinfo%Logunit,'(a32,e11.4)') 'vz0 ',bcdef%vz0
        write(threadinfo%Logunit,'(a32,e11.4)') 'vz1 ',bcdef%vz1
        write(threadinfo%Logunit,'(a32,e11.4)') 'wz0 ',bcdef%wz0
        write(threadinfo%Logunit,'(a32,e11.4)') 'wz1 ',bcdef%wz1
    
    Dave Whipp's avatar
    Dave Whipp committed
      case('segmented_s_line')
    
        write(threadinfo%Logunit,'(a)') 'Boundary condition parameters'
    
          write(threadinfo%Logunit,'(a32,i2,a,e11.4)') 'bc_parameter ',i,' ',bcdef%bc_parameters(i)
    
      case('segmented_s_line_round')
        write(threadinfo%Logunit,'(a)') 'Boundary condition parameters'
        do i=1,13
          write(threadinfo%Logunit,'(a32,i2,a,e11.4)') 'bc_parameter ',i,' ',bcdef%bc_parameters(i)
        enddo
    
      case('rot_subduction')
        write(threadinfo%Logunit,'(a)') 'Boundary condition parameters'
    
          write(threadinfo%Logunit,'(a32,i2,a,e11.4)') 'bc_parameter ',i,' ',bcdef%bc_parameters(i)
        enddo
    
      case('rot_sub_init')
        write(threadinfo%Logunit,'(a)') 'Boundary condition parameters'