Changeset 3900


Ignore:
Timestamp:
Aug 20, 2025, 11:51:29 AM (2 days ago)
Author:
emillour
Message:

Venus PCM:
Turn clmain into a module; get rid of compbl.h in the
process; prettyfy and translate some comments to English.
EM

Location:
trunk/LMDZ.VENUS/libf/phyvenus
Files:
1 deleted
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.VENUS/libf/phyvenus/clmain.F

    r3899 r3900  
    1 !
    2 ! $Header: /home/cvsroot/LMDZ4/libf/phylmd/clmain.F,v 1.3 2005/02/07 16:41:35 fairhead Exp $
    3 !
     1      MODULE clmain_mod
     2     
     3      IMPLICIT NONE
     4     
     5      integer,save :: iflag_pbl ! PBL scheme number
     6C$OMP THREADPRIVATE(iflag_pbl)
     7     
     8      CONTAINS
    49c
    510c
     
    2025cAA REM:
    2126cAA-----
    22 cAA Tout ce qui a trait au traceurs est dans phytrac maintenant
    23 cAA pour l'instant le calcul de la couche limite pour les traceurs
    24 cAA se fait avec cltrac et ne tient pas compte de la differentiation
    25 cAA des sous-fraction de sol.
     27cAA Tracers are not handled here but in phytrac.
    2628cAA REM bis :
    2729cAA----------
    28 cAA Pour pouvoir extraire les coefficient d'echanges et le vent
    29 cAA dans la premiere couche, 3 champs supplementaires ont ete crees
    30 cAA zcoefh,zu1 et zv1. Pour l'instant nous avons moyenne les valeurs
    31 cAA de ces trois champs sur les 4 subsurfaces du modele. Dans l'avenir
    32 cAA si les informations des subsurfaces doivent etre prises en compte
    33 cAA il faudra sortir ces memes champs en leur ajoutant une dimension,
    34 cAA c'est a dire nbsrf (nbre de subsurface).
    35 !      USE ioipsl
    36 !      USE interface_surf
     30cAA To extract exchange coefficients and wind in the first layer
     31cAA 3 dedicated fields have been added: zcoefh,zu1 et zv1.
    3732      use dimphy, only: klon, klev
    3833      use mod_grid_phy_lmdz, only: nbp_lev
     
    4035      use turb_mod, only :yustar
    4136      use soil_mod, only: nsoilmx
    42       use clesphys_mod
    43       use YOMCST_mod
     37      use clesphys_mod, only: soil_model, ok_kzmin
     38      use YOMCST_mod, only: RD, RG
     39      use print_control_mod, only: lunout, prt_level
    4440     
    4541#ifdef CPP_XIOS     
     
    4945      IMPLICIT none
    5046c======================================================================
    51 c Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818
    52 c Objet: interface de "couche limite" (diffusion verticale)
    53 c Arguments:
    54 c dtime----input-R- interval du temps (secondes)
    55 c itap-----input-I- numero du pas de temps
    56 c t--------input-R- temperature (K)
    57 c u--------input-R- vitesse u
    58 c v--------input-R- vitesse v
    59 c ts-------input-R- temperature du sol (en Kelvin)
    60 c paprs----input-R- pression a intercouche (Pa)
    61 c pplay----input-R- pression au milieu de couche (Pa)
    62 c radsol---input-R- flux radiatif net (positif vers le sol) en W/m**2
    63 c rlat-----input-R- latitude en degree
    64 c dx-----input-R- resolution des mailles en x (m)
    65 c dy-----input-R- resolution des mailles en y (m)
    66 c
    67 c q2-----inoutput-R- $q^2$ TKE at inter-layers
    68 c
    69 c d_t------output-R- le changement pour "t"
    70 c d_u------output-R- le changement pour "u"
    71 c d_v------output-R- le changement pour "v"
    72 c d_ts-----output-R- le changement pour "ts"
    73 c flux_t---output-R- flux de chaleur sensible (CpT) J/m**2/s (W/m**2)
    74 c                    (orientation positive vers le bas)
    75 c flux_u---output-R- tension du vent X: (kg m/s)/(m**2 s) ou Pascal
    76 c flux_v---output-R- tension du vent Y: (kg m/s)/(m**2 s) ou Pascal
    77 c dflux_t derive du flux sensible
    78 cAA on rajoute en output yu1 et yv1 qui sont les vents dans
    79 cAA la premiere couche
    80 c======================================================================
    81       include "iniprint.h"
    82       include "compbl.h"
    83 c
    84 c Parametres d'entree
    85       REAL, INTENT(IN) :: dtime
    86       INTEGER, INTENT(IN) :: itap
    87       REAL, INTENT(IN) :: t(klon,klev)
    88       REAL, INTENT(IN) :: u(klon,klev), v(klon,klev)
    89       REAL, INTENT(IN) :: paprs(klon,klev+1), pplay(klon,klev)
    90 ! ADAPTATION GCM POUR CP(T)
     47c Interface for the "boundary layer" (vertical diffusion)
     48c======================================================================
     49
     50c
     51c Input arguments:
     52      REAL, INTENT(IN) :: dtime ! physics time step (s)
     53      INTEGER, INTENT(IN) :: itap ! physics time step counter
     54      REAL, INTENT(IN) :: t(klon,klev) ! atmospheric temperature (K)
     55      REAL, INTENT(IN) :: u(klon,klev) ! zonal wind (m/s)
     56      REAL, INTENT(IN) :: v(klon,klev) ! meridional wind (m/s)
     57      REAL, INTENT(IN) :: paprs(klon,klev+1) ! pressure at layer boundaries (Pa)
     58      REAL, INTENT(IN) :: pplay(klon,klev) ! pressure at mid-layer (Pa)
     59! ADAPTATION GCM FOR CP(T)
    9160      REAL, INTENT(IN) :: ppk(klon,klev)
    92       REAL, INTENT(IN) :: rlon(klon), rlat(klon), dx(klon), dy(klon)
     61      REAL, INTENT(IN) :: rlon(klon) ! longitudes (deg)
     62      REAL, INTENT(IN) :: rlat(klon) ! latitudes (deg)
     63      REAL, INTENT(IN) :: dx(klon) ! mesh size along x (m)
     64      REAL, INTENT(IN) :: dy(klon) ! mesh size along y (m)
    9365      REAL, INTENT(IN) :: rmu0(klon)         ! cosine of solar zenith angle
    94       LOGICAL, INTENT(IN) :: debut, lafin
    95       REAL, INTENT(IN) :: ts(klon)
     66      LOGICAL, INTENT(IN) :: debut ! .true. if first call to physics
     67      LOGICAL, INTENT(IN) :: lafin ! .true. if last call to physics
     68      REAL, INTENT(IN) :: ts(klon) ! surface temperature (K)
    9669      REAL, INTENT(IN) :: sollw(klon), solsw(klon), sollwdown(klon)
    9770     
    98 c Param�tres IN/OUT
     71c IN/OUT arguments:
    9972      REAL, INTENT(INOUT) :: fder(klon)
    100       REAL, INTENT(INOUT) :: flux_u(klon,klev), flux_v(klon,klev)
    101       REAL, INTENT(INOUT) :: radsol(klon)
    102       REAL, INTENT(INOUT) :: q2(klon,klev+1)
    103      
    104 c Parametres de sorties
    105       REAL, INTENT(OUT) :: d_t(klon, klev)
    106       REAL, INTENT(OUT) :: d_u(klon, klev), d_v(klon, klev)
    107       REAL, INTENT(OUT) :: flux_t(klon,klev)
    108       REAL, INTENT(OUT) :: dflux_t(klon)
    109       REAL, INTENT(OUT) :: cdragh(klon), cdragm(klon)
    110       REAL, INTENT(OUT) :: d_ts(klon)
    111       REAL, INTENT(OUT) :: albe(klon)
     73      REAL, INTENT(INOUT) :: flux_u(klon,klev) ! zonal wind stress (kg m/s)/(m**2 s) or Pa
     74      REAL, INTENT(INOUT) :: flux_v(klon,klev) ! meridional wind stress (kg m/s)/(m**2 s) or Pa
     75      REAL, INTENT(INOUT) :: radsol(klon) ! net radiative flux (positive towards ground) W/m**2
     76      REAL, INTENT(INOUT) :: q2(klon,klev+1) ! $q^2$ TKE at inter-layers
     77     
     78c output arguments
     79      REAL, INTENT(OUT) :: d_t(klon, klev) ! temperature increment (K)
     80      REAL, INTENT(OUT) :: d_u(klon, klev) ! zonal wind increment (m/s)
     81      REAL, INTENT(OUT) :: d_v(klon, klev) ! meridional wind increment (m/s)
     82      REAL, INTENT(OUT) :: flux_t(klon,klev) ! latent heat flux (CpT) J/m**2/s (W/m**2)
     83                                             ! (positive when downwards)
     84      REAL, INTENT(OUT) :: dflux_t(klon) ! derivative of sensible heat flux
     85      REAL, INTENT(OUT) :: cdragh(klon)
     86      REAL, INTENT(OUT) :: cdragm(klon)
     87      REAL, INTENT(OUT) :: d_ts(klon) ! surface temperature increment (K)
     88      REAL, INTENT(INOUT) :: albe(klon) ! albedo of the surface
    11289cAA
    11390      REAL, INTENT(OUT) :: zcoefh(klon,klev)
    114       REAL, INTENT(OUT) :: zu1(klon)
    115       REAL, INTENT(OUT) :: zv1(klon)
     91      REAL, INTENT(OUT) :: zu1(klon) ! zonal wind in 1st layer (m/s)
     92      REAL, INTENT(OUT) :: zv1(klon) ! meridional wind in 1st layer (m/s)
    11693cAA
    117 c$$$ PB ajout pour soil
    118       REAL, INTENT(INOUT) :: ftsoil(klon,nsoilmx)
    119 
    120 c======================================================================
    121       EXTERNAL clqh, clvent, coefkz
    122 c======================================================================
    123 c Parametre locaux
     94      REAL, INTENT(INOUT) :: ftsoil(klon,nsoilmx) ! subsurface temperatures (K)
     95
     96c======================================================================
     97c Local variables
    12498      REAL ytsoil(klon,nsoilmx)
    12599      REAL yts(klon)
     
    149123      real y_cd_m(klon),y_cd_h(klon)
    150124c
    151 c      include "YOMCST.h"
    152125      REAL u1lay(klon), v1lay(klon)
    153126      REAL delp(klon,klev)
     
    155128      INTEGER ni(klon), knon, j     
    156129c======================================================================
    157       REAL zx_alf1, zx_alf2 !valeur ambiante par extrapola.
    158 c======================================================================
    159 c
    160       LOGICAL zxli ! utiliser un jeu de fonctions simples
    161       PARAMETER (zxli=.FALSE.)
     130      REAL zx_alf1, zx_alf2 ! ambient values used for extrapolation
     131c======================================================================
     132c
     133      LOGICAL,PARAMETER :: zxli=.FALSE. ! use simple functions testcase
    162134c
    163135      REAL zt, zdelta, zcor
    164136C
    165137      character (len = 20) :: modname = 'clmain'
    166       LOGICAL check
    167       PARAMETER (check=.false.)
     138      LOGICAL,PARAMETER :: check=.false.
    168139C
    169140      if (check) THEN
    170           write(*,*) modname,'  klon=',klon
    171           call flush(6)
     141          write(*,*) trim(modname),'  klon=',klon
    172142      endif
    173143         
    174       DO k = 1, klev   ! epaisseur de couche
     144      DO k = 1, klev   ! thickness of atmospheric layers
    175145      DO i = 1, klon
    176146         delp(i,k) = paprs(i,k)-paprs(i,k+1)
    177147      ENDDO
    178148      ENDDO
    179       DO i = 1, klon  ! vent de la premiere couche
     149      DO i = 1, klon  !  wind in the first layer
    180150ccc         zx_alf1 = (paprs(i,1)-pplay(i,2))/(pplay(i,1)-pplay(i,2))
    181151         zx_alf1 = 1.0
     
    233203      ENDDO
    234204c
    235 c chercher les indices:
     205c identify indexes:
    236206      DO j = 1, klon
    237207         ni(j) = j
     
    255225      END DO
    256226C
    257 c$$$ PB ajour pour soil
     227c$$$ for the soil
    258228      DO k = 1, nsoilmx
    259229        DO j = 1, knon
     
    276246c
    277247cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
    278 c calculer Cdrag et les coefficients d'echange
     248c compute Cdrag and exchange coefficients
    279249cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
    280250
    281251c-------------------------------------------------
    282 Calcul anciens du LMD.
    283 dans les routines coefkz, coefkz2, coefkzmin
     252Old LMD computations.
     253in routines coefkz, coefkz2, coefkzmin
    284254c-------------------------------------------------
    285255
     
    300270cIM: 261103
    301271        if (ok_kzmin) THEN
    302 ! ADAPTATION GCM POUR CP(T)
    303            print*," coefkzmin: ADAPTATION NON FAITE..."
     272! ADAPTATION GCM FOR CP(T)
     273           print*," coefkzmin: NOT ADAPTATED..."
    304274cIM cf FH: 201103 BEG
    305275
    306 c   Calcul d'une diffusion minimale pour les conditions tres stables.
     276c   Compute minimal diffusion for very stable conditions.
    307277c        call coefkzmin(knon,ypaprs,ypplay,yu,yv,yt,ycoefm
    308278c    .   ,ycoefm0,ycoefh0)
     
    327297      IF (iflag_pbl.ge.3) then
    328298c-------------------------------------------------
    329 c MELLOR ET YAMADA adapte a Mars Richard Fournier et Frederic Hourdin
     299c MELLOR ET YAMADA adapted to Mars Richard Fournier and Frederic Hourdin
    330300c-------------------------------------------------
    331301
     
    339309         enddo
    340310
    341 ! ADAPTATION GCM POUR CP(T)
     311! ADAPTATION GCM FOR CP(T)
    342312         call t2tpot(knon*nbp_lev,yt,yteta,ppk)
    343313
     
    349319
    350320
    351 c   Bug introduit volontairement pour converger avec les resultats
    352 c  du papier sur les thermiques.
    353          if (1.eq.1) then
    354321         y_cd_m(1:knon) = ycoefm(1:knon,1)
    355322         y_cd_h(1:knon) = ycoefh(1:knon,1)
    356          else
    357          y_cd_h(1:knon) = ycoefm(1:knon,1)
    358          y_cd_m(1:knon) = ycoefh(1:knon,1)
    359          endif
    360323
    361324         call ustarhb(knon,yu,yv,y_cd_m, yustar)
     
    365328        ENDIF
    366329
    367 c   iflag_pbl peut etre utilise comme longueur de melange
     330c   iflag_pbl can be used as mixing length
    368331
    369332         if (iflag_pbl.ge.11) then
     
    391354
    392355cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
    393 c calculer la diffusion des vitesses "u" et "v"
     356c compute diffusion for winds "u" et "v"
    394357cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
    395358
     
    399362     s            y_d_v,y_flux_v)
    400363 
    401 c pour le couplage
     364c for the coupling
    402365      ytaux = y_flux_u(:,1)
    403366      ytauy = y_flux_v(:,1)
    404367
    405 c FH modif sur le cdrag temperature
    406 c$$$PB : d�place dans clcdrag
    407 c$$$      do i=1,knon
    408 c$$$         ycoefh(i,1)=ycoefm(i,1)*0.8
    409 c$$$      enddo
    410368
    411369cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
    412 c calculer la diffusion de "q" et de "h"
     370c compute diffusion for "q" and "h"
    413371cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
    414 ! ADAPTATION GCM POUR CP(T)
     372! ADAPTATION GCM FOR CP(T)
    415373      CALL clqh(dtime, itap, debut,lafin,
    416374     e          rlon, rlat, dx, dy,
     
    430388         d_ts(i) = y_d_ts(j)
    431389c----------------------------------------
    432 c VENUS TEST: tendance sur Tsurf forcee = 0
     390c VENUS TEST: tendancy on Tsurf forced = 0
    433391c        d_ts(i) = 0.
    434392c----------------------------------------
     
    441399      END DO
    442400
    443 c$$$ PB ajout pour soil
     401c for the subsurface
    444402      DO k = 1, nsoilmx
    445403        DO j = 1, knon
     
    462420      ENDDO
    463421
    464       END
     422      END SUBROUTINE clmain
    465423
    466424C=================================================================
     
    487445      use mod_grid_phy_lmdz, only: nbp_lon, nbp_lat, nbp_lev
    488446      use cpdet_phy_mod, only: t2tpot,tpot2t,cpdet
    489       use YOMCST_mod
     447      use YOMCST_mod, only: RD, RG, RKAPPA, RMD
    490448
    491449      IMPLICIT none
    492450c======================================================================
    493 c Auteur(s): Z.X. Li (LMD/CNRS) date: 19930818
    494 c Objet: diffusion verticale de "h"
    495 c======================================================================
    496 c      include "YOMCST.h"
    497       include "iniprint.h"
     451c Compute vertical diffusion for "h"
     452c======================================================================
    498453
    499454c Arguments:
     
    554509      REAL zdelz
    555510c======================================================================
    556       include "compbl.h"
    557 c======================================================================
    558511c Rajout pour l'interface
    559512      real zlev1(klon)
     
    569522
    570523      character (len = 20) :: modname = 'Debut clqh'
    571       LOGICAL check
    572       PARAMETER (check=.false.)
     524      LOGICAL,PARAMETER :: check=.false.
     525
    573526C
    574527c----------------------
     
    790743c
    791744
    792       END
     745      END SUBROUTINE clqh
    793746     
    794747c======================================================================
     
    804757
    805758      use dimphy, only: klon, klev
    806       use YOMCST_mod
     759      use YOMCST_mod, only: RD, RG
    807760
    808761      IMPLICIT none
     
    828781c flux_v---output-R- (diagnostic) flux du vent: (kg m/s)/(m**2 s)
    829782c======================================================================
    830 c      include "iniprint.h"
    831783
    832784c Parametres d'entree
     
    925877      ENDDO
    926878c
    927       END
     879      END SUBROUTINE clvent
    928880     
    929881c======================================================================
     
    940892      use dimphy, only: klon, klev
    941893      use cpdet_phy_mod, only: cpdet,t2tpot
    942       use clesphys_mod
     894      use clesphys_mod, only: ksta, lmixmin
    943895#ifdef CPP_XIOS     
    944896      use xios_output_mod, only: send_xios_field
    945897#endif
    946       use YOMCST_mod
     898      use YOMCST_mod, only: R, RD, RG, RKAPPA
     899      use print_control_mod, only: lunout, prt_level
    947900      IMPLICIT none
    948901c======================================================================
     
    964917c pcfh-----output-R- coefficients a calculer (chaleur et humidite)
    965918c======================================================================
    966 c      include "YOMCST.h"
    967       include "iniprint.h"
    968       include "compbl.h"
    969 c      include "clesphys.h"
     919
    970920c
    971921c Arguments:
     
    1044994c
    1045995      LOGICAL, SAVE :: appel1er = .TRUE.
     996C$OMP THREADPRIVATE(appel1er)
    1046997c
    1047998c Fonctions thermodynamiques et fonctions d'instabilite
     
    12591210c#endif
    12601211
    1261       END
     1212      END SUBROUTINE coefkz
    12621213
    12631214C=================================================================
     
    12721223      use mod_grid_phy_lmdz, only: nbp_lev
    12731224      use cpdet_phy_mod, only: cpdet
    1274       use YOMCST_mod
     1225      use YOMCST_mod, only: RD
    12751226      IMPLICIT none
    12761227c======================================================================
     
    12881239c pcfh-----output-R- coefficients a calculer (chaleur et humidite)
    12891240c======================================================================
    1290 c      include "YOMCST.h"
    1291       include "iniprint.h"
    12921241c
    12931242c Arguments:
     
    13361285      ENDDO
    13371286c
    1338       END
    1339 
     1287      END SUBROUTINE coefkz2
     1288
     1289      END MODULE clmain_mod
  • trunk/LMDZ.VENUS/libf/phyvenus/clmain_ideal.F

    r3898 r3900  
    3131      use dimphy, only: klon, klev
    3232      use soil_mod, only: nsoilmx
     33      use clmain_mod, only: clvent
    3334
    3435      IMPLICIT none
  • trunk/LMDZ.VENUS/libf/phyvenus/conf_phys.F90

    r3884 r3900  
    1313   use age_of_air_mod, only: ok_aoa, reinit_aoa, lev_aoa
    1414   use clesphys_mod
     15   use clmain_mod, only: iflag_pbl
    1516   use YOMCST_mod
    1617
    1718   implicit none
    18 
    19    !include "YOMCST.h"
    20    !include "clesphys.h"
    21    include "compbl.h"
    2219
    2320! ok_journe:  sorties journalieres
  • trunk/LMDZ.VENUS/libf/phyvenus/physiq_mod.F

    r3898 r3900  
    8787      use soil_mod, only: nsoilmx
    8888      use hgardfou_mod, only: hgardfou
     89      use clmain_mod, only: clmain
    8990      use clmain_ideal_mod, only: clmain_ideal
    9091      use clesphys_mod
Note: See TracChangeset for help on using the changeset viewer.