Changeset 4143 for LMDZ6/trunk/libf/phylmd
- Timestamp:
- May 9, 2022, 12:35:40 PM (3 years ago)
- Location:
- LMDZ6/trunk/libf/phylmd
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/calltherm.F90
r4089 r4143 30 30 USE print_control_mod, ONLY: prt_level,lunout 31 31 #ifdef ISO 32 use infotrac_phy, ONLY: nt raciso32 use infotrac_phy, ONLY: ntiso 33 33 #ifdef ISOVERIF 34 34 USE isotopes_mod, ONLY: iso_eau,iso_HDO … … 145 145 146 146 #ifdef ISO 147 REAL xt_seri(nt raciso,klon,klev),xtmemoire(ntraciso,klon,klev)148 REAL d_xt_ajs(nt raciso,klon,klev)149 real d_xt_the(nt raciso,klon,klev)147 REAL xt_seri(ntiso,klon,klev),xtmemoire(ntiso,klon,klev) 148 REAL d_xt_ajs(ntiso,klon,klev) 149 real d_xt_the(ntiso,klon,klev) 150 150 #ifdef DIAGISO 151 151 real q_the(klon,klev) 152 real xt_the(nt raciso,klon,klev)152 real xt_the(ntiso,klon,klev) 153 153 #endif 154 154 real qprec(klon,klev) … … 205 205 nbptspb=nbptspb+1 206 206 #ifdef ISO 207 do ixt=1,nt raciso207 do ixt=1,ntiso 208 208 xt_seri(ixt,i,k)=1.e-15*(xt_seri(ixt,i,k)/qprec(i,k)) 209 209 ! xt_seri(ixt,i,k)=1.e-15*(Rdefault(index_iso(ixt))) … … 228 228 call iso_verif_egalite_vect2D( & 229 229 & xt_seri,q_seri, & 230 & 'calltherm 174',nt raciso,klon,klev)230 & 'calltherm 174',ntiso,klon,klev) 231 231 endif !if (iso_eau.gt.0) then 232 232 #endif … … 360 360 & +zdetr_therm(:,k)*fact(:) 361 361 #ifdef ISO 362 do ixt=1,nt raciso362 do ixt=1,ntiso 363 363 d_xt_the(ixt,:,k)=d_xt_the(ixt,:,k)*dtime*fact(:) 364 364 enddo … … 398 398 call iso_verif_aberrant_enc_vect2D( & 399 399 & xt_seri,q_seri, & 400 & 'calltherm 353, apres ajout d_xt_the',nt raciso,klon,klev)400 & 'calltherm 353, apres ajout d_xt_the',ntiso,klon,klev) 401 401 endif 402 402 #endif … … 424 424 nbptspb=nbptspb+1 425 425 #ifdef ISO 426 do ixt=1,nt raciso426 do ixt=1,ntiso 427 427 xt_seri(ixt,i,k)=1.e-15*(xtmemoire(ixt,i,k)/qmemoire(i,k)) 428 428 enddo … … 440 440 call iso_verif_aberrant_enc_vect2D( & 441 441 & xt_seri,q_seri, & 442 & 'calltherm 393, apres bidouille q<0',nt raciso,klon,klev)442 & 'calltherm 393, apres bidouille q<0',ntiso,klon,klev) 443 443 endif 444 444 #endif -
LMDZ6/trunk/libf/phylmd/infotrac_phy.F90
r4138 r4143 27 27 PUBLIC :: niso, nzone, nphas, ntiso !--- " " numbers + isotopes & tagging tracers number 28 28 PUBLIC :: itZonIso !--- iq = function(tagging zone idx, isotope idx) 29 PUBLIC :: iq TraPha !--- idx of tagging tracer in iName = function(isotope idx, phase idx)29 PUBLIC :: iqIsoPha !--- idx of tagging tracer in iName = function(isotope idx, phase idx) 30 30 PUBLIC :: isoCheck !--- Run isotopes checking routines 31 31 !=== FOR BOTH TRACERS AND ISOTOPES 32 32 PUBLIC :: getKey !--- Get a key from "tracers" or "isotope" 33 34 PUBLIC :: ntraciso, ntraceurs_zone, indnum_fn_num, use_iso, index_trac, iqiso35 PUBLIC :: niso_possibles, ok_iso_verif36 33 37 34 INTERFACE isoSelect; MODULE PROCEDURE isoSelectByIndex, isoSelectByName; END INTERFACE isoSelect … … 96 93 ! | zone | nzone | Geographic tagging zones list + number | / | ntraceurs_zone | | 97 94 ! | phase | nphas | Phases list + number | | [g][l][s], 1:3 | 98 ! | iq TraPha | Index in "qx" = f(name(1:ntiso)),phas) | iqiso | 1:nqtot |95 ! | iqIsoPha | Index in "qx" = f(name(1:ntiso)),phas) | iqiso | 1:nqtot | 99 96 ! | itZonIso | Index in "trac(1:ntiso)"= f(zone, name(1:niso)) | index_trac | 1:ntiso | 100 97 ! +-----------------+--------------------------------------------------+--------------------+-----------------+ … … 126 123 nphas, ntiso, & !--- NUMBER OF PHASES AND ISOTOPES + ISOTOPIC TAGGING TRACERS 127 124 itZonIso(:,:), & !--- INDEX IN "isoTrac" AS f(tagging zone idx, isotope idx) 128 iq TraPha(:,:) !--- INDEX IN "qx" AS f(isotopic tracer idx, phase idx)129 !$OMP THREADPRIVATE(isotope, ixIso,iH2O, isoCheck, isoKeys, isoName,isoZone,isoPhas, niso,nzone,nphas,ntiso, itZonIso,iq TraPha)125 iqIsoPha(:,:) !--- INDEX IN "qx" AS f(isotopic tracer idx, phase idx) 126 !$OMP THREADPRIVATE(isotope, ixIso,iH2O, isoCheck, isoKeys, isoName,isoZone,isoPhas, niso,nzone,nphas,ntiso, itZonIso,iqIsoPha) 130 127 131 128 !=== VARIABLES FOR ISOTOPES INITIALIZATION AND FOR INCA … … 133 130 pbl_flg(:) !--- Boundary layer activation ; needed for INCA (nbtr) 134 131 !$OMP THREADPRIVATE(conv_flg, pbl_flg) 135 136 !--- Aliases for older names + quantities to be removed (will be replaced by:)137 INTEGER, POINTER, SAVE :: ntraciso, ntraceurs_zone !--- -> ntiso, nzone138 !$OMP THREADPRIVATE (ntraciso, ntraceurs_zone)139 INTEGER, POINTER, SAVE :: index_trac(:,:), iqiso(:,:) !--- -> itZonIso, iqTraPha140 !$OMP THREADPRIVATE (index_trac, iqiso)141 INTEGER, SAVE :: niso_possibles !--- suppressed (use effective niso instead)142 !$OMP THREADPRIVATE(niso_possibles)143 LOGICAL, SAVE :: ok_iso_verif !--- -> isoCheck144 !$OMP THREADPRIVATE(ok_iso_verif)145 LOGICAL, SAVE, ALLOCATABLE :: use_iso(:) !--- suppressed146 !$OMP THREADPRIVATE (use_iso)147 INTEGER, SAVE, ALLOCATABLE :: indnum_fn_num(:)148 !$OMP THREADPRIVATE (indnum_fn_num)149 132 150 133 #ifdef CPP_StratAer … … 190 173 191 174 !=== Determine selected isotopes class related quantities: 192 ! ixIso, isotope, niso,isoKeys, ntiso,isoName, nzone,isoZone, nphas,isoPhas, itZonIso, iq TraPha, isoCheck175 ! ixIso, isotope, niso,isoKeys, ntiso,isoName, nzone,isoZone, nphas,isoPhas, itZonIso, iqIsoPha, isoCheck 193 176 IF(.NOT.isoSelect('H2O')) iH2O = ixIso 194 177 IF(prt_level > 1) THEN … … 221 204 END IF 222 205 #endif 223 224 !--- Isotopic quantities (to be removed soon)225 ntraciso => ntiso226 ntraceurs_zone => nzone227 iqiso => iqTraPha228 index_trac => itZonIso229 ok_iso_verif = isoCheck230 niso_possibles = SIZE(tnom_iso)231 indnum_fn_num = [(strIdx(isotope%keys(:)%name, tnom_iso(ixt)), ixt=1, niso_possibles)]232 use_iso = indnum_fn_num /= 0233 206 #ifdef ISOVERIF 234 207 CALL msg('iso_iName = '//strStack(int2str(PACK(tracers(:)%iso_iName, MASK=tracers(:)%iso_iGroup==iH2O))), modname) … … 275 248 isoPhas => isotope%phase; nphas => isotope%nphas 276 249 itZonIso => isotope%itZonIso; isoCheck => isotope%check 277 iq TraPha => isotope%iqTraPha250 iqIsoPha => isotope%iqIsoPha 278 251 END FUNCTION isoSelectByIndex 279 252 !============================================================================================================================== -
LMDZ6/trunk/libf/phylmd/phys_output_mod.F90
r4120 r4143 35 35 USE iophy 36 36 USE dimphy 37 USE infotrac_phy, ONLY: nqtot, tracers, type_trac, niso , ntraciso37 USE infotrac_phy, ONLY: nqtot, tracers, type_trac, niso 38 38 USE strings_mod, ONLY: maxlen 39 39 USE ioipsl -
LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90
r4120 r4143 25 25 26 26 USE dimphy, ONLY: klon, klev, klevp1 27 USE infotrac_phy, ONLY: nbtr, nqtot, nqo, type_trac, tracers, niso, nt raciso27 USE infotrac_phy, ONLY: nbtr, nqtot, nqo, type_trac, tracers, niso, ntiso 28 28 USE strings_mod, ONLY: maxlen 29 29 USE mod_phys_lmdz_para, ONLY: is_north_pole_phy,is_south_pole_phy … … 2598 2598 2599 2599 #ifdef ISO 2600 do ixt=1,nt raciso2600 do ixt=1,ntiso 2601 2601 ! write(*,*) 'ixt' 2602 2602 IF (vars_defined) zx_tmp_fi2d(:) = xtrain_fall(ixt,:) + xtsnow_fall(ixt,:) … … 2652 2652 2653 2653 !write(*,*) 'phys_output_write_mod 2531' 2654 enddo !do ixt=1,ntraciso2654 enddo 2655 2655 #endif 2656 2656 -
LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90
r4088 r4143 499 499 USE infotrac_phy, ONLY : nbtr 500 500 #ifdef ISO 501 USE infotrac_phy, ONLY : ntraciso ,niso501 USE infotrac_phy, ONLY : ntraciso=>ntiso,niso 502 502 #endif 503 503 USE indice_sol_mod -
LMDZ6/trunk/libf/phylmd/physiq_mod.F90
r4140 r4143 444 444 !====================================================================== 445 445 ! 446 INTEGER ivap ! indice de traceurs pour vapeur d'eau 447 PARAMETER (ivap=1) 448 INTEGER iliq ! indice de traceurs pour eau liquide 449 PARAMETER (iliq=2) 450 INTEGER isol ! indice de traceurs pour eau glace 451 PARAMETER (isol=3) 452 INTEGER irneb ! indice de traceurs pour fraction nuageuse LS (optional) 453 PARAMETER (irneb=4) 446 ! indices de traceurs eau vapeur, liquide, glace, fraction nuageuse LS (optional) 447 INTEGER,SAVE :: ivap, iliq, isol, irneb 448 !$OMP THREADPRIVATE(ivap, iliq, isol, irneb) 454 449 ! 455 450 ! … … 1255 1250 1256 1251 IF (first) THEN 1252 ivap = strIdx(tracers(:)%name, addPhase('H2O', 'g')) 1253 iliq = strIdx(tracers(:)%name, addPhase('H2O', 'l')) 1254 isol = strIdx(tracers(:)%name, addPhase('H2O', 's')) 1255 irneb= strIdx(tracers(:)%name, addPhase('H2O', 'r')) 1257 1256 CALL init_etat0_limit_unstruct 1258 1257 IF (.NOT. create_etat0_limit) CALL init_limit_read(days_elapsed) -
LMDZ6/trunk/libf/phylmd/thermcell_main.F90
r4133 r4143 22 22 23 23 #ifdef ISO 24 USE infotrac_phy, ONLY : nt raciso24 USE infotrac_phy, ONLY : ntiso 25 25 #ifdef ISOVERIF 26 26 USE isotopes_mod, ONLY : iso_eau,iso_HDO … … 140 140 141 141 #ifdef ISO 142 REAL xtpo(nt raciso,ngrid,nlay),xtpdoadj(ntraciso,ngrid,nlay)143 REAL xtzo(nt raciso,ngrid,nlay)142 REAL xtpo(ntiso,ngrid,nlay),xtpdoadj(ntiso,ngrid,nlay) 143 REAL xtzo(ntiso,ngrid,nlay) 144 144 REAL xtpdoadj_tmp(ngrid,nlay) 145 145 REAL xtpo_tmp(ngrid,nlay) … … 368 368 & zlev,lmax,zmax,zmax0,zmix,wmax) 369 369 ! Attention, w2 est transforme en sa racine carree dans cette routine 370 ! Le probleme vient du fait que linter et lmix sont souvent égaux à1.370 ! Le probleme vient du fait que linter et lmix sont souvent egaux a 1. 371 371 wmax_tmp=0. 372 372 do l=1,nlay … … 488 488 489 489 #ifdef ISO 490 ! C Risi: on utilise directement la m ême routine491 do ixt=1,nt raciso490 ! C Risi: on utilise directement la meme routine 491 do ixt=1,ntiso 492 492 do ll=1,nlay 493 493 DO ig=1,ngrid … … 503 503 enddo 504 504 enddo 505 enddo !do ixt=1,ntraciso505 enddo 506 506 #endif 507 507 … … 749 749 ! nrlmd le 10/04/2012 Transport de la TKE par le thermique moyen pour la fermeture en ALP 750 750 ! On transporte pbl_tke pour donner therm_tke 751 ! Copie conforme de la subroutine DTKE dans physiq.F écrite par Frederic Hourdin751 ! Copie conforme de la subroutine DTKE dans physiq.F ecrite par Frederic Hourdin 752 752 753 753 !=======================================================================
Note: See TracChangeset
for help on using the changeset viewer.