Ignore:
Timestamp:
Dec 20, 2017, 12:23:42 PM (8 years ago)
Author:
jvatant
Message:

Making chemistry handling more flexible - Step 1
+ Enable upper_chemistry_dimension in the startfi files
+ Added a comchem_h for all the chemistry related stuff
+ start2archive adapted to these modifs : next step newstart !
--JVO

Location:
trunk/LMDZ.TITAN/libf/phytitan
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.TITAN/libf/phytitan/iostart.F90

    r1815 r1871  
    1515    INTEGER,SAVE :: idim6 ! "nlayer" dimension
    1616    INTEGER,SAVE :: idim7 ! "Time" dimension
     17    INTEGER,SAVE :: idim8 ! "upper_chemistry_layers" dimension
    1718    INTEGER,SAVE :: timeindex ! current time index (for time-dependent fields)
    18 !$OMP THREADPRIVATE(idim1,idim2,idim3,idim4,idim5,idim6,idim7,timeindex)
     19!$OMP THREADPRIVATE(idim1,idim2,idim3,idim4,idim5,idim6,idim7,idim8,idim9,timeindex)
    1920    INTEGER,PARAMETER :: length=100 ! size of tab_cntrl array
    2021   
     
    468469  USE tracer_h, only: nqtot_p
    469470  USE comsoil_h, only: nsoilmx
     471  USE comchem_h, only: nlaykim_up
    470472
    471473  IMPLICIT NONE
     
    556558      ENDIF
    557559
     560      ierr=NF90_DEF_DIM(nid_restart,"upper_chemistry_layers",nlaykim_up,idim8)
     561      IF (ierr/=NF90_NOERR) THEN
     562        write(*,*)'open_restartphy: problem defining upper_chemistry_layers dimension '
     563        write(*,*)trim(nf90_strerror(ierr))
     564        CALL ABORT
     565      ENDIF
     566     
    558567      ierr=NF90_ENDDEF(nid_restart)
    559568      IF (ierr/=NF90_NOERR) THEN
     
    634643  USE dimphy
    635644  USE comsoil_h, only: nsoilmx
     645  USE comchem_h, only: nlaykim_up
    636646  USE mod_grid_phy_lmdz
    637647  USE mod_phys_lmdz_para
     
    807817            ierr=NF90_DEF_VAR(nid_restart,field_name,NF90_FLOAT,&
    808818                              (/idim2,idim3,idim7/),nvarid)
     819#endif
     820           if (ierr.ne.NF90_NOERR) then
     821              write(*,*)"put_field_rgen error: failed to define "//trim(field_name)
     822              write(*,*)trim(nf90_strerror(ierr))
     823            endif
     824            IF (LEN_TRIM(title) > 0) ierr=NF90_PUT_ATT(nid_restart,nvarid,"title",title)
     825            ierr=NF90_ENDDEF(nid_restart)
     826          endif
     827          ! Write the variable
     828          ierr=NF90_PUT_VAR(nid_restart,nvarid,field_glo,&
     829                            start=(/1,1,timeindex/))
     830
     831        endif ! of if (.not.present(time))
     832
     833      ELSE IF (field_size==nlaykim_up) THEN
     834        ! input is a 2D "upper chemistry" array
     835        if (.not.present(time)) then ! for a time-independent field
     836          ierr = NF90_REDEF(nid_restart)
     837#ifdef NC_DOUBLE
     838          ierr=NF90_DEF_VAR(nid_restart,field_name,NF90_DOUBLE,&
     839                            (/idim2,idim8/),nvarid)
     840#else
     841          ierr=NF90_DEF_VAR(nid_restart,field_name,NF90_FLOAT,&
     842                            (/idim2,idim8/),nvarid)
     843#endif
     844          if (ierr.ne.NF90_NOERR) then
     845            write(*,*)"put_field_rgen error: failed to define "//trim(field_name)
     846            write(*,*)trim(nf90_strerror(ierr))
     847          endif
     848          IF (LEN_TRIM(title) > 0) ierr=NF90_PUT_ATT(nid_restart,nvarid,"title",title)
     849          ierr = NF90_ENDDEF(nid_restart)
     850          ierr = NF90_PUT_VAR(nid_restart,nvarid,field_glo)
     851        else
     852          ! check if the variable has already been defined:
     853          ierr=NF90_INQ_VARID(nid_restart,field_name,nvarid)
     854          if (ierr/=NF90_NOERR) then ! variable not found, define it
     855            ierr=NF90_REDEF(nid_restart)
     856#ifdef NC_DOUBLE
     857            ierr=NF90_DEF_VAR(nid_restart,field_name,NF90_DOUBLE,&
     858                              (/idim2,idim8,idim7/),nvarid)
     859#else
     860            ierr=NF90_DEF_VAR(nid_restart,field_name,NF90_FLOAT,&
     861                              (/idim2,idim8,idim7/),nvarid)
    809862#endif
    810863           if (ierr.ne.NF90_NOERR) then
  • trunk/LMDZ.TITAN/libf/phytitan/tabfi_mod.F90

    r1670 r1871  
    5555                           emissiv
    5656      use comsoil_h, only: volcapa
     57      use comchem_h, only: nlaykim_up
    5758      use iostart, only: get_var
    5859      use mod_phys_lmdz_para, only: is_parallel
     
    149150        dtemisice(:)=0 !time scale for snow metamorphism
    150151        volcapa=1000000 ! volumetric heat capacity of subsurface
    151 
     152! chemistry
     153        nlaykim_up=70 ! size of vertical grid for upper chemistry
     154       
    152155      ELSE
    153156!-----------------------------------------------------------------------
     
    204207! soil properties
    205208      volcapa = tab_cntrl(tab0+35) ! volumetric heat capacity
     209! chemistry
     210      nlaykim_up = nint(tab_cntrl(tab0+40)) ! size of vertical grid for upper chemistry
    206211!-----------------------------------------------------------------------
    207212!       Save some constants for later use (as routine arguments)
     
    256261
    257262      write(*,5) '(35)        volcapa',tab_cntrl(tab0+35),volcapa
     263
     264      write(*,5) '(40)     nlaykim_up',tab_cntrl(tab0+40),float(nlaykim_up)
    258265
    259266      write(*,*)
     
    564571 
    565572      write(*,5) '(35)        volcapa',tab_cntrl(tab0+35),volcapa
     573     
     574      write(*,5) '(40)     nlaykim_up',tab_cntrl(tab0+40),float(nlaykim_up)
    566575
    567576      write(*,*) 
Note: See TracChangeset for help on using the changeset viewer.