Ignore:
Timestamp:
Feb 20, 2024, 4:46:35 PM (22 months ago)
Author:
tbertrand
Message:

Pluto GCM:
Cleaning code and adding extra options for newstart.F

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.PLUTO/libf/dynphy_lonlat/phypluto/newstart.F

    r3198 r3228  
    120120      real mugaz ! molar mass of the atmosphere
    121121
    122       integer ierr
     122      integer ierr,iref
    123123
    124124c Variables on the new grid along scalar points
     
    585585      write(*,*) 'qs=x : give a uniform value to a surface tracer'
    586586      write(*,*) 'q=profile    : specify a profile for a tracer'
     587      write(*,*) 'subsoil_all : set seasonal subsurface thermal inertia'
     588      write(*,*) 'diurnal_TI : set diurnal subsurface thermal inertia'
    587589
    588590        write(*,*)
     
    824826
    825827
     828
     829c       subsoil_all : initialize subsurface thermal inertia
     830c       --------------------------------------------------
     831        else if (modif(1:len_trim(modif)) .eq. 'subsoil_all') then
     832
     833          write(*,*) 'New value for subsoil thermal inertia  ?'
     834 104      read(*,*,iostat=ierr) ith_bb
     835          if(ierr.ne.0) goto 104
     836          write(*,*) 'thermal inertia (new value):',ith_bb
     837
     838          write(*,*)'At which depth (in m.) does the ice layer begin?'
     839          write(*,*)'(here, the deepest soil layer extends down to:'
     840     &              ,layer(1),' - ',layer(nsoilmx),')'
     841          write(*,*)'write 0 for uniform value for all subsurf levels?'
     842          ierr=1
     843          do while (ierr.ne.0)
     844           read(*,*,iostat=ierr) val2
     845           write(*,*)'val2 in subsoil_all:',val2,'ierr=',ierr
     846           if (ierr.eq.0) then ! got a value, but do a sanity check
     847             if(val2.gt.layer(nsoilmx)) then
     848               write(*,*)'Depth should be less than ',layer(nsoilmx)
     849               ierr=1
     850             endif
     851             if(val2.lt.layer(1)) then
     852              if(val2.eq.0) then
     853               write(*,*)'Thermal inertia set for all subsurface layers'
     854               ierr=0
     855              else
     856               write(*,*)'Depth should be more than ',layer(1)
     857               ierr=1
     858              endif
     859             endif
     860           endif
     861          enddo ! of do while
     862
     863          ! find the reference index iref the depth corresponds to
     864          if(val2.eq.0) then
     865           iref=1
     866           write(*,*)'Level selected is first level: ',layer(iref),' m'
     867          else
     868           do isoil=1,nsoilmx-1
     869            if ((val2.gt.layer(isoil)).and.(val2.lt.layer(isoil+1)))
     870     &       then
     871             iref=isoil+1
     872             write(*,*)'Level selected : ',layer(isoil+1),' m'
     873             exit
     874            endif
     875           enddo
     876          endif
     877
     878          DO ig=1,ngridmx
     879             DO j=iref,nsoilmx
     880                   ithfi(ig,j)=ith_bb
     881             ENDDO
     882          ENDDO
     883
     884          CALL gr_fi_dyn(nsoilmx,ngridmx,iip1,jjp1,ithfi,ith)
     885
     886c       diurnal_TI : choice of thermal inertia values (global)
     887c       ----------------------------------------------------------------
     888        else if (modif(1:len_trim(modif)) .eq. 'diurnal_TI') then
     889
     890         write(*,*) 'New value for diurnal thermal inertia  ?'
     891 106     read(*,*,iostat=ierr) ith_bb
     892         if(ierr.ne.0) goto 106
     893         write(*,*) 'Diurnal thermal inertia (new value):',ith_bb
     894
     895         write(*,*)'At which depth (in m.) does the ice layer ends?'
     896         write(*,*)'(currently, the soil layer 1 and nsoil are:'
     897     &              ,layer(1),' - ',layer(nsoilmx),')'
     898         ierr=1
     899         do while (ierr.ne.0)
     900          read(*,*,iostat=ierr) val2
     901          write(*,*)'val2 in diurnal_TI:',val2,'ierr=',ierr
     902          if (ierr.eq.0) then ! got a value, but do a sanity check
     903            if(val2.gt.layer(nsoilmx)) then
     904              write(*,*)'Depth should be less than ',layer(nsoilmx)
     905              ierr=1
     906            endif
     907            if(val2.lt.layer(1)) then
     908              write(*,*)'Depth should be more than ',layer(1)
     909              ierr=1
     910            endif
     911          endif
     912         enddo ! of do while
     913
     914           ! find the reference index iref the depth corresponds to
     915         do isoil=1,nsoilmx-1
     916            !write(*,*)'isoil, ',isoil,val2
     917            !write(*,*)'lay(i),lay(i+1):',layer(isoil),layer(isoil+1),' m'
     918            if ((val2.gt.layer(isoil)).and.(val2.lt.layer(isoil+1)))
     919     &       then
     920             iref=isoil+1
     921             write(*,*)'Level selected : ',layer(isoil+1),' m'
     922             exit
     923            endif
     924         enddo
     925
     926         DO ig=1,ngridmx
     927             DO j=1,iref
     928                   ithfi(ig,j)=ith_bb
     929             ENDDO
     930         ENDDO
     931
     932         CALL gr_fi_dyn(nsoilmx,ngridmx,iip1,jjp1,ithfi,ith)
     933
     934
     935
     936
     937
     938
     939
     940
     941
     942
     943
     944
     945
     946
     947
     948
     949
     950
     951
     952
     953
     954
     955
     956
    826957        endif
    827958             
Note: See TracChangeset for help on using the changeset viewer.