Opened 5 years ago

Closed 3 years ago

#190 closed task (fixed)

Implementing new soil vertical discretization in TRUNK

Reported by: fwang Owned by: jgipsl
Priority: major Milestone:
Component: Physical processes Version: trunc
Keywords: vertical discretization Cc:

Description

The new soil vertical discretization with flexible depth and layers is going to implement in TRUNK. The current version is based on the discussion by Frederique, Josefine and Fuxing on 28 August 2015, and some email exchange with Jan after. Fuxing has tested it by using the default parameters in [MODULE vertical]. Some points are remained to be confirmed/tested:

  1. Option refinebottom, by default "refinebottom == FALSE". This option was tested in the thesis of Aurélien. Vertical.f90 produces the right levels and that Jan has tested it thoroughly. But we are not sure if it has integrated in ORCHIDEE in Aurélien's test?
  1. The code:
      zz(:)=ztmp(1:nslm_l)
      zz(nslm_l)=depth_Wmax
      dz(:)=dtmp(1:nslm_l+1)
      dz(nslm_l+1)=0.0
    
    --> Jan:
    I personally believe that the "depth_Wmax" parameter is the most important. So we need to have this as the final depth. In the worst case the lowest layer will be thinner than the geometric series predicts. But as "depth_Wmax" determines the field capacity it has to be the driving parameter.
    Else small changes in any other vertical selection parameter will change the effective "depth_Wmax" and thus the field capacity. I guess this is a strategic decision we need to discuss next Tuesday.

--> Fuxing:
If we force "zz(nslm_l)=depth_Wmax" compulsory, there is no problem with the default parameterization (e.g., 'depth_wmax=2.0; depth_toptickness = 9.77517107e-04; ...). And this is the situation I have tested before.
But if we change the default parameters and we set "zz(nslm_l)=depth_Wmax", the 'dz(nslm)' is not always 'dtmp(nslm_l)', because the geometrical increasing of node is destroyed at the last layer. ztmp(11) is not 2 meters, and dz(nslm) is not 1 meter any more. In this case, perhaps the 'dz(nslm)' should also be changed, e.g.,

 ...
  dz(:)=dtmp(1:nslm_l+1)
  dz(nslm) = zz(nslm_l) - zz(nslm_l - 1))
 ...

--> To be tested (by Fuxing): if python code on wiki and vertical.f90 gives the same result.

  1. It seems it is not necessary to have dz(nslm_1+1). It is not currently used in the code and the code would be simpler if dz had the same dimension as zz.
    --> Proposition: change
     ALLOCATE(dz(nslm_l+1))
    
    into
     ALLOCATE(dz(nslm_l))
    
    --> Jan will check it.
  1. Now
     getin("HYDROL_SOIL_DEPTH",..)
    
    is done in vertical. But it has changed name into
     getin("DEPTH_WMAX",..)
    
    Is this ok or should it still be named "HYDROL_SOIL_DEPTH" ?
    --> To be confirmed by the groupe.
  1. variable "diaglev": Does vertical_getdiag give the same values for diaglev as before ? And if not, why not? Is it compatible with Choisnel? Josefine tested diaglev and it is not the same values as before.

--> Proposition:
for the case Choisnel, calcaulte diaglev as before. It could be done as a special case in vertical_getdiag or in control_initialize subroutine after the call to vertical_getdiag.

-->Josefine:
it seems ok with Choisnel if we change diaglev (use the old calculation) and take into account the thermosoilc as decided previously in the orch meeting.

-->Jan:
Keeping Choisnel with this evolution of the model is complicated. I would then keep the old diaglev only for Choisnel. We are going to end up with a such a complex code that it will be hard to manage. We have to cut some dead branches of the ORCHIDEE tree !

Change History (7)

comment:1 Changed 5 years ago by jgipsl

According to ORCH meeting 7 sept

  1. The refinebottom case is left in the code with a comment : work in progress..
  2. The depth_wmax is used to force the last layer. Correction of dz is done as proposed by Fuxing above. For consistency with the thermal layers, the last thermal layer is also forced to be the one set in run.def (DEPTH_TMAX). For easier understanding, the thermal max depth is change from DEPTH_MAX to DEPTH_TMAX.
  3. Not discussed. It'll be kept for the moment.
  4. OK. Better coherence.
  5. diaglev is calculated in control as before for the case Choisnel.

In addition to the meeting, today with Fuxing, Frederique and Josefine, was decided that the vertical module is only called for CWRR. The special case for Choisnel is done directly in control module.

comment:2 follow-up: Changed 5 years ago by jgipsl

According to the orch meeting 15 sept and to mail exchange between : Fuxing, Frederique, Jan, Agnes, Philippe P, Josefine, following has been decided :

  • module vertical change name into verticale_soil
  • names of variables change name into :
    • zz => znh depth for nodes in hydro
    • dz => dnh distance between nodes in hydro
    • dh => dlh distance between layer hydro
    • tdepth => znt depht nodes termo
    • tdz => dlt delta layer termo
    • zinterface => zlt depth layer termo
    • depth_tmax => zmaxt depth max termo
    • depth_wmax => zmaxh depth max hydro
    • using z=depth, d=distance/delta, n=at node, l=at interlayer, h=hydro, t=termo
  • the variables will be set as SAVE PUBLIC in the module vertical_soil or in vertical_soil_var for technical issues (circular dependencies)
  • units will be in meter
  • zz will be on dimension nslm

The modifications into the trunk will be done in 2 steps.

1) First commit the work done by Fuxing and the others. Done in rev [2917]
2) A cleaning, clarification step were the names will be changed.

comment:3 Changed 5 years ago by aducharne

Related tickets:
#195 diaglev : trunk needs to be upated for stomate and ok_freeze after change in vertical soil discretization
#164 Vertical axes for hydrol output in intersurf + nbdl/nslm indices in hydrol

comment:4 in reply to: ↑ 2 Changed 5 years ago by jgipsl

  • Owner changed from somebody to jgipsl
  • Status changed from new to accepted

Cleaning, clarification has been done as described above in rev [2928]. Not yet done:

  • hydrol : still using local variable zz, dz, dh. To be removed.
  • thermosoil : still using local variables : zz, zz_coef, dz2. To be removed.

comment:5 Changed 5 years ago by jgipsl

Cleaning in thermosoil done in rev [2942]. Still need to be done :

  • Correcting comments in thermosoil
  • hydrol : still using local variable zz, dz, dh. To be removed.

comment:6 Changed 5 years ago by jgipsl

  • Done better comments : [2956]
  • Adapt thermosoil_reajust to the new discretization. Find the closest level to 3m instead of hard coded level 6. Done in rev [2957]

I Gouttevin, F Wang, J Ghattas

comment:7 Changed 3 years ago by jgipsl

  • Resolution set to fixed
  • Status changed from accepted to closed
  • hydrol : the local variables zz, dz and dh (transformed into mm) are kept. This is because dz is used in 180 places and it is more useful to stay in mm. zz were changed to have the same dimension as zlh. [4210]
Note: See TracTickets for help on using tickets.