Changeset 4143 for LMDZ6/trunk/libf/phylmdiso
- Timestamp:
- May 9, 2022, 12:35:40 PM (2 years ago)
- Location:
- LMDZ6/trunk/libf/phylmdiso
- Files:
-
- 37 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmdiso/add_phys_tend_mod.F90
r4004 r4143 39 39 USE mod_grid_phy_lmdz, ONLY: nbp_lev 40 40 #ifdef ISO 41 USE infotrac_phy, ONLY: ntraciso 41 USE infotrac_phy, ONLY: ntraciso=>ntiso 42 42 USE isotopes_mod, ONLY: iso_eau 43 43 #endif … … 154 154 155 155 #ifdef ISO 156 USE infotrac_phy, ONLY: ntraciso 156 USE infotrac_phy, ONLY: ntraciso=>ntiso 157 157 #ifdef ISOVERIF 158 158 USE isotopes_mod, ONLY: iso_eau -
LMDZ6/trunk/libf/phylmdiso/add_wake_tend.F90
r4004 r4143 18 18 USE print_control_mod, ONLY: prt_level 19 19 #ifdef ISO 20 USE infotrac_phy, ONLY: nt raciso20 USE infotrac_phy, ONLY: ntiso 21 21 USE phys_state_var_mod, ONLY: wake_deltaxt 22 22 #endif … … 31 31 INTEGER, INTENT (IN) :: abortphy 32 32 #ifdef ISO 33 REAL, DIMENSION(nt raciso,klon, klev), INTENT (IN):: zddeltaxt33 REAL, DIMENSION(ntiso, klon, klev), INTENT (IN) :: zddeltaxt 34 34 #endif 35 35 … … 61 61 wake_deltaq(i, l) = wake_deltaq(i, l) + zddeltaq(i,l) 62 62 #ifdef ISO 63 do ixt=1,nt raciso63 do ixt=1,ntiso 64 64 wake_deltaxt(ixt,i, l) = wake_deltaxt(ixt,i, l) + zddeltaxt(ixt,i,l) 65 65 enddo … … 69 69 wake_deltaq(i, l) = 0. 70 70 #ifdef ISO 71 do ixt=1,nt raciso71 do ixt=1,ntiso 72 72 wake_deltaxt(ixt,i, l) = 0.0 73 73 enddo -
LMDZ6/trunk/libf/phylmdiso/ajsec.F90
r4004 r4143 9 9 USE dimphy 10 10 #ifdef ISO 11 USE infotrac_phy, ONLY: ntraciso 11 USE infotrac_phy, ONLY: ntraciso =>ntiso 12 12 #ifdef ISOVERIF 13 13 USE isotopes_mod, ONLY : iso_eau,iso_HDO … … 303 303 USE dimphy 304 304 #ifdef ISO 305 USE infotrac_phy, ONLY: ntraciso 305 USE infotrac_phy, ONLY: ntraciso=>ntiso 306 306 #ifdef ISOVERIF 307 307 USE isotopes_mod, ONLY : iso_eau,iso_HDO -
LMDZ6/trunk/libf/phylmdiso/calwake.F90
r4033 r4143 35 35 USE print_control_mod, ONLY: mydebug=>debug , lunout, prt_level 36 36 #ifdef ISO 37 USE infotrac_phy, ONLY : ntraciso 37 USE infotrac_phy, ONLY : ntraciso=>ntiso 38 38 #ifdef ISOVERIF 39 39 USE isotopes_mod, ONLY: iso_eau -
LMDZ6/trunk/libf/phylmdiso/change_srf_frac_mod.F90
r4004 r4143 39 39 USE print_control_mod, ONLY: lunout 40 40 #ifdef ISO 41 USE infotrac_phy, ONLY: nt raciso41 USE infotrac_phy, ONLY: ntiso 42 42 #endif 43 43 … … 66 66 !albedo SB <<< 67 67 #ifdef ISO 68 REAL, DIMENSION(nt raciso,klon,nbsrf), INTENT(INOUT) :: xtevap68 REAL, DIMENSION(ntiso,klon,nbsrf), INTENT(INOUT) :: xtevap 69 69 #endif 70 70 -
LMDZ6/trunk/libf/phylmdiso/climb_hq_mod.F90
r4124 r4143 6 6 USE dimphy 7 7 #ifdef ISO 8 USE infotrac_phy, ONLY: ntraciso ! ajout C Risi pour isos8 USE infotrac_phy, ONLY: ntraciso=>ntiso ! ajout C Risi pour isos 9 9 #endif 10 10 … … 59 59 ) 60 60 #ifdef ISOVERIF 61 !USE infotrac_phy, ONLY: use_iso62 61 USE isotopes_mod, ONLY: iso_eau,iso_HDO 63 62 !USE isotopes_verif_mod, ONLY: errmax, errmaxrel -
LMDZ6/trunk/libf/phylmdiso/concvl.F90
r4004 r4143 44 44 USE infotrac_phy, ONLY: nbtr 45 45 #ifdef ISO 46 USE infotrac_phy, ONLY: ntraciso 46 USE infotrac_phy, ONLY: ntraciso=>ntiso 47 47 USE isotopes_mod, ONLY: iso_eau, bidouille_anti_divergence, ridicule, & 48 48 iso_eau,iso_HDO -
LMDZ6/trunk/libf/phylmdiso/cv30_routines.F90
r4050 r4143 165 165 ) 166 166 #ifdef ISO 167 USE infotrac_phy, ONLY: ntraciso 167 USE infotrac_phy, ONLY: ntraciso=>ntiso 168 168 #endif 169 169 IMPLICIT NONE … … 370 370 371 371 #ifdef ISO 372 USE infotrac_phy, ONLY: ntraciso 372 USE infotrac_phy, ONLY: ntraciso=>ntiso 373 373 USE isotopes_mod, ONLY: pxtmelt,pxtice,pxtmin,pxtmax,cond_temp_env, & 374 374 iso_eau,iso_HDO, ridicule … … 947 947 USE print_control_mod, ONLY: lunout 948 948 #ifdef ISO 949 use infotrac_phy, ONLY: ntraciso 949 use infotrac_phy, ONLY: ntraciso=>ntiso 950 950 use isotopes_mod, ONLY: essai_convergence, iso_eau,iso_HDO 951 951 #ifdef ISOVERIF … … 1133 1133 ! epmax_cape: ajout arguments 1134 1134 #ifdef ISO 1135 use infotrac_phy, ONLY: ntraciso 1135 use infotrac_phy, ONLY: ntraciso=>ntiso 1136 1136 USE isotopes_mod, ONLY: pxtmelt,pxtice,pxtmin,pxtmax,cond_temp_env, iso_eau,iso_HDO 1137 1137 USE isotopes_routines_mod, ONLY: condiso_liq_ice_vectall … … 1828 1828 1829 1829 #ifdef ISO 1830 use infotrac_phy, ONLY: ntraciso ,niso,index_trac1830 use infotrac_phy, ONLY: ntraciso=>ntiso,niso,itZonIso 1831 1831 USE isotopes_mod, ONLY: pxtmelt,pxtice,pxtmin,pxtmax, iso_eau,iso_HDO, & 1832 1832 ridicule … … 2616 2616 call iso_verif_traceur(xtclw(1,il,im), & 2617 2617 & 'condiso_liq_ice_vectiso_trac 358') 2618 if (iso_verif_positif_nostop(xtclw(i ndex_trac( &2618 if (iso_verif_positif_nostop(xtclw(itZonIso( & 2619 2619 & izone_cond,iso_eau),i,k)-xtclw(iso_eau,i,k) & 2620 2620 & ,'cv30_routines 909').eq.1) then … … 2624 2624 & niso,ntraciso,index_zone,izone_cond 2625 2625 stop 2626 endif !if (iso_verif_positif_nostop(xtclw(i ndex_trac(2626 endif !if (iso_verif_positif_nostop(xtclw(itZonIso( 2627 2627 #endif 2628 2628 enddo !do il = 1, ncum … … 2647 2647 & ) 2648 2648 #ifdef ISO 2649 use infotrac_phy, ONLY: ntraciso 2649 use infotrac_phy, ONLY: ntraciso=>ntiso 2650 2650 use isotopes_mod, ONLY: essai_convergence, iso_eau,iso_HDO,ridicule 2651 2651 use isotopes_routines_mod, ONLY: appel_stewart_vectall … … 2659 2659 #ifdef ISOTRAC 2660 2660 use isotrac_mod, only: option_cond,izone_cond 2661 use infotrac_phy, ONLY: i ndex_trac2661 use infotrac_phy, ONLY: itZonIso 2662 2662 #ifdef ISOVERIF 2663 2663 use isotopes_verif_mod, ONLY: iso_verif_traceur_justmass, & … … 2938 2938 ! on verifie que tout le detrainement est tagge condensat 2939 2939 if (iso_verif_positif_nostop( & 2940 & xtwdtrain(i ndex_trac(izone_cond,iso_eau),il) &2940 & xtwdtrain(itZonIso(izone_cond,iso_eau),il) & 2941 2941 & -xtwdtrain(iso_eau,il), & 2942 2942 & 'cv30_routines 2795').eq.1) then … … 3200 3200 ! if (option_tmin.ge.1) then 3201 3201 ! call iso_verif_positif(xtwater( 3202 ! : i ndex_trac(izone_cond,iso_eau),il,i+1)3202 ! : itZonIso(izone_cond,iso_eau),il,i+1) 3203 3203 ! : -xtwater(iso_eau,il,i+1), 3204 3204 ! : 'cv30_routines 3083') … … 3259 3259 ! if (option_tmin.ge.1) then 3260 3260 ! call iso_verif_positif(xtwater( 3261 ! : i ndex_trac(izone_cond,iso_eau),il,i)3261 ! : itZonIso(izone_cond,iso_eau),il,i) 3262 3262 ! : -xtwater(iso_eau,il,i), 3263 3263 ! : 'cv30_routines 3143') … … 3369 3369 & ) 3370 3370 #ifdef ISO 3371 use infotrac_phy, ONLY: ntraciso,niso, & 3372 & ntraceurs_zone,index_trac 3371 use infotrac_phy, ONLY: ntraciso=>ntiso, niso, nzone, itZonIso 3373 3372 use isotopes_mod, ONLY: essai_convergence,ridicule,iso_eau,iso_HDO,iso_O18 3374 3373 #ifdef ISOVERIF … … 5003 5002 do iiso = 1, niso 5004 5003 5005 ixt_ddft=i ndex_trac(izone_ddft,iiso)5004 ixt_ddft=itZonIso(izone_ddft,iiso) 5006 5005 if (mp(il,i).gt.mp(il,i+1)) then 5007 5006 fxtYe(iiso)=0.01*grav*dpinv*mp(il,i) & … … 5016 5015 & -mp(il,i)*(xtp(iiso,il,i)-xt(iiso,il,i-1))) 5017 5016 5018 ixt_poubelle=i ndex_trac(izone_poubelle,iiso)5017 ixt_poubelle=itZonIso(izone_poubelle,iiso) 5019 5018 fxt(ixt_ddft,il,i)=fxt(ixt_ddft,il,i)+fxtYe(iiso) 5020 5019 fxt(ixt_poubelle,il,i)=fxt(ixt_poubelle,il,i) & … … 5033 5032 & -mp(il,i)*(xtp(iiso,il,i)-xt(iiso,il,i-1))) 5034 5033 5035 ixt_ddft=i ndex_trac(izone_ddft,iiso)5034 ixt_ddft=itZonIso(izone_ddft,iiso) 5036 5035 fxtYe(iiso)=0.01*grav*dpinv*mp(il,i) & 5037 5036 & *(xt(ixt_ddft,il,i-1)-xt(ixt_ddft,il,i)) 5038 5037 fxt(ixt_ddft,il,i)=fxt(ixt_ddft,il,i)+fxtYe(iiso) 5039 5038 5040 ixt_revap=i ndex_trac(izone_revap,iiso)5039 ixt_revap=itZonIso(izone_revap,iiso) 5041 5040 fxt_revap(iiso)=0.01*grav*dpinv*(mp(il,i+1)* & 5042 5041 & (xtp(ixt_revap,il,i+1)-xt(ixt_revap,il,i)) & … … 5049 5048 & -xt(ixt_ddft,il,i)-xt(ixt_revap,il,i) 5050 5049 if (Xe(iiso).gt.ridicule) then 5051 do izone=1,n traceurs_zone5050 do izone=1,nzone 5052 5051 if ((izone.ne.izone_revap).and. & 5053 5052 & (izone.ne.izone_ddft)) then 5054 ixt=i ndex_trac(izone,iiso)5053 ixt=itZonIso(izone,iiso) 5055 5054 fxt(ixt,il,i)=fxt(ixt,il,i) & 5056 5055 & +xt(ixt,il,i)/Xe(iiso)*fxtXe(iiso) 5057 5056 endif !if ((izone.ne.izone_revap).and. 5058 enddo !do izone=1,n traceurs_zone5057 enddo !do izone=1,nzone 5059 5058 #ifdef ISOVERIF 5060 5059 ! write(*,*) 'iiso=',iiso … … 5078 5077 endif 5079 5078 #endif 5080 do izone=1,n traceurs_zone5079 do izone=1,nzone 5081 5080 if ((izone.ne.izone_revap).and. & 5082 5081 & (izone.ne.izone_ddft)) then 5083 ixt=i ndex_trac(izone,iiso)5082 ixt=itZonIso(izone,iiso) 5084 5083 if (izone.eq.izone_poubelle) then 5085 5084 fxt(ixt,il,i)=fxt(ixt,il,i)+fxtXe(iiso) … … 5088 5087 endif !if (izone.eq.izone_poubelle) then 5089 5088 endif !if ((izone.ne.izone_revap).and. 5090 enddo !do izone=1,n traceurs_zone5089 enddo !do izone=1,nzone 5091 5090 #ifdef ISOVERIF 5092 5091 call iso_verif_traceur_justmass(fxt(1,il,i), & … … 5237 5236 enddo !do ixt = 1+niso,ntraciso 5238 5237 ! write(*,*) 'tmp cv3_yield 4165: i,il=',i,il 5239 ! ixt_poubelle=i ndex_trac(izone_poubelle,iso_eau)5240 ! ixt_ddft=i ndex_trac(izone_ddft,iso_eau)5238 ! ixt_poubelle=itZonIso(izone_poubelle,iso_eau) 5239 ! ixt_ddft=itZonIso(izone_ddft,iso_eau) 5241 5240 ! write(*,*) 'delt*fxt(ixt_poubelle,il,i)=', 5242 5241 ! : delt*fxt(ixt_poubelle,il,i) … … 5244 5243 ! write(*,*) 'xt(iso_eau,il,i)=',xt(iso_eau,il,i) 5245 5244 do iiso = 1, niso 5246 ixt_poubelle=i ndex_trac(izone_poubelle,iiso)5247 ixt_ddft=i ndex_trac(izone_ddft,iiso)5245 ixt_poubelle=itZonIso(izone_poubelle,iiso) 5246 ixt_ddft=itZonIso(izone_ddft,iiso) 5248 5247 if (mp(il,i).gt.mp(il,i+1)) then 5249 5248 fxtYe(iiso)=0.01*grav*dpinv*mp(il,i) & … … 6111 6110 6112 6111 #ifdef ISO 6113 use infotrac_phy, ONLY: ntraciso 6112 use infotrac_phy, ONLY: ntraciso=>ntiso 6114 6113 #ifdef ISOVERIF 6115 6114 use isotopes_verif_mod, ONLY: Tmin_verif,iso_verif_aberrant, & -
LMDZ6/trunk/libf/phylmdiso/cv3_enthalpmix.F90
r4004 r4143 7 7 ) 8 8 #ifdef ISO 9 use infotrac_phy, ONLY: nt raciso9 use infotrac_phy, ONLY: ntiso 10 10 #endif 11 11 ! ************************************************************** … … 43 43 REAL, DIMENSION (len,nd+1), INTENT (IN) :: ph 44 44 #ifdef ISO 45 REAL, DIMENSION (nt raciso,len,nd), INTENT (IN) :: xt45 REAL, DIMENSION (ntiso,len,nd), INTENT (IN) :: xt 46 46 #endif 47 47 !input/output: … … 54 54 REAL, DIMENSION (len,nd), INTENT (OUT) :: wi 55 55 #ifdef ISO 56 REAL, DIMENSION (nt raciso,len), INTENT (OUT) :: xtmix56 REAL, DIMENSION (ntiso,len), INTENT (OUT) :: xtmix 57 57 #endif 58 58 !internal variables : … … 153 153 vmix(i) = vmix(i) + v(i, j)*wi(i, j) 154 154 #ifdef ISO 155 do ixt=1,nt raciso155 do ixt=1,ntiso 156 156 xtmix(ixt,i) = xtmix(ixt,i) + xt(ixt,i, j)*wi(i, j) 157 157 enddo -
LMDZ6/trunk/libf/phylmdiso/cv3_estatmix.F90
r4004 r4143 7 7 ) 8 8 #ifdef ISO 9 use infotrac_phy, ONLY: nt raciso9 use infotrac_phy, ONLY: ntiso 10 10 #endif 11 11 ! ************************************************************** … … 46 46 REAL, DIMENSION (len,nd+1), INTENT (IN) :: ph 47 47 #ifdef ISO 48 REAL, DIMENSION (nt raciso,len,nd), INTENT (IN) :: xt48 REAL, DIMENSION (ntiso,len,nd), INTENT (IN) :: xt 49 49 #endif 50 50 !input/output: … … 57 57 REAL, DIMENSION (len,nd), INTENT (OUT) :: wi 58 58 #ifdef ISO 59 REAL, DIMENSION (nt raciso,len), INTENT (OUT) :: xtmix59 REAL, DIMENSION (ntiso,len), INTENT (OUT) :: xtmix 60 60 #endif 61 61 !internal variables : … … 153 153 vmix(i) = vmix(i) + v(i, j)*wi(i, j) 154 154 #ifdef ISO 155 do ixt=1,nt raciso155 do ixt=1,ntiso 156 156 xtmix(ixt,i) = xtmix(ixt,i) + xt(ixt,i, j)*wi(i, j) 157 157 enddo -
LMDZ6/trunk/libf/phylmdiso/cv3_routines.F90
r4123 r4143 314 314 & ) 315 315 #ifdef ISO 316 use infotrac_phy, ONLY: ntraciso 316 use infotrac_phy, ONLY: ntraciso=>ntiso 317 317 #ifdef ISOVERIF 318 318 use isotopes_verif_mod, ONLY: iso_verif_positif,iso_verif_noNaN,iso_verif_egalite … … 685 685 & ) 686 686 #ifdef ISO 687 USE infotrac_phy, ONLY: ntraciso 687 USE infotrac_phy, ONLY: ntraciso=>ntiso 688 688 USE isotopes_mod, ONLY: pxtmelt,pxtice,pxtmin,pxtmax,cond_temp_env, & 689 689 iso_eau,iso_HDO,ridicule … … 1274 1274 USE print_control_mod, ONLY: lunout 1275 1275 #ifdef ISO 1276 use infotrac_phy, ONLY: ntraciso 1276 use infotrac_phy, ONLY: ntraciso=>ntiso 1277 1277 use isotopes_mod, ONLY: essai_convergence, iso_eau,iso_HDO 1278 1278 #ifdef ISOVERIF … … 1474 1474 USE print_control_mod, ONLY: prt_level 1475 1475 #ifdef ISO 1476 use infotrac_phy, ONLY: ntraciso 1476 use infotrac_phy, ONLY: ntraciso=>ntiso 1477 1477 USE isotopes_mod, ONLY: pxtmelt,pxtice,pxtmin,pxtmax,cond_temp_env, & 1478 1478 iso_eau,iso_HDO … … 2777 2777 2778 2778 #ifdef ISO 2779 use infotrac_phy, ONLY: ntraciso ,niso,index_trac2779 use infotrac_phy, ONLY: ntraciso=>ntiso,niso,itZonIso 2780 2780 USE isotopes_mod, ONLY: pxtmelt,pxtice,pxtmin,pxtmax, iso_eau,iso_HDO, & 2781 2781 ridicule … … 3580 3580 call iso_verif_traceur(xtclw(1,il,im), & 3581 3581 & 'condiso_liq_ice_vectiso_trac 358') 3582 if (iso_verif_positif_nostop(xtclw(i ndex_trac( &3582 if (iso_verif_positif_nostop(xtclw(itZonIso( & 3583 3583 & izone_cond,iso_eau),i,k)-xtclw(iso_eau,i,k) & 3584 3584 & ,'cv3_routines 909').eq.1) then … … 3588 3588 & niso,ntraciso,index_zone,izone_cond 3589 3589 stop 3590 endif !if (iso_verif_positif_nostop(xtclw(i ndex_trac(3590 endif !if (iso_verif_positif_nostop(xtclw(itZonIso( 3591 3591 #endif 3592 3592 enddo !do il = 1, ncum … … 3615 3615 USE print_control_mod, ONLY: prt_level, lunout 3616 3616 #ifdef ISO 3617 use infotrac_phy, ONLY: ntraciso 3617 use infotrac_phy, ONLY: ntraciso=>ntiso 3618 3618 use isotopes_mod, ONLY: essai_convergence, iso_eau,iso_HDO, & 3619 3619 ridicule … … 3628 3628 #ifdef ISOTRAC 3629 3629 use isotrac_mod, only: option_cond,izone_cond 3630 use infotrac_phy, ONLY: i ndex_trac3630 use infotrac_phy, ONLY: itZonIso 3631 3631 #ifdef ISOVERIF 3632 3632 use isotopes_verif_mod, ONLY: iso_verif_traceur_justmass, & … … 3993 3993 ! on verifie que tout le detrainement est tagge condensat 3994 3994 if (iso_verif_positif_nostop( & 3995 & xtwdtrain(i ndex_trac(izone_cond,iso_eau),il) &3995 & xtwdtrain(itZonIso(izone_cond,iso_eau),il) & 3996 3996 & -xtwdtrain(iso_eau,il), & 3997 3997 & 'cv3_routines 2795').eq.1) then … … 4535 4535 ! if (option_tmin.ge.1) then 4536 4536 ! call iso_verif_positif(xtwater( 4537 ! : i ndex_trac(izone_cond,iso_eau),il,i+1)4537 ! : itZonIso(izone_cond,iso_eau),il,i+1) 4538 4538 ! : -xtwater(iso_eau,il,i+1), 4539 4539 ! : 'cv3_routines 3083') … … 4602 4602 ! if (option_tmin.ge.1) then 4603 4603 ! call iso_verif_positif(xtwater( 4604 ! : i ndex_trac(izone_cond,iso_eau),il,i)4604 ! : itZonIso(izone_cond,iso_eau),il,i) 4605 4605 ! : -xtwater(iso_eau,il,i), 4606 4606 ! : 'cv3_routines 3143') … … 4741 4741 4742 4742 #ifdef ISO 4743 use infotrac_phy, ONLY: ntraciso,niso, & 4744 & ntraceurs_zone,index_trac 4743 use infotrac_phy, ONLY: ntraciso=>ntiso, niso, nzone, itZonIso 4745 4744 use isotopes_mod, ONLY: essai_convergence,ridicule,iso_eau,iso_HDO,iso_O18 4746 4745 #ifdef ISOVERIF … … 5889 5888 do iiso = 1, niso 5890 5889 5891 ixt_ddft=i ndex_trac(izone_ddft,iiso)5890 ixt_ddft=itZonIso(izone_ddft,iiso) 5892 5891 if (mp(il,i).gt.mp(il,i+1)) then 5893 5892 fxtYe(iiso)=0.01*grav*dpinv*mp(il,i) & … … 5902 5901 & -mp(il,i)*(xtp(iiso,il,i)-xt(iiso,il,i-1))) 5903 5902 5904 ixt_poubelle=i ndex_trac(izone_poubelle,iiso)5903 ixt_poubelle=itZonIso(izone_poubelle,iiso) 5905 5904 fxt(ixt_ddft,il,i)=fxt(ixt_ddft,il,i)+fxtYe(iiso) 5906 5905 fxt(ixt_poubelle,il,i)=fxt(ixt_poubelle,il,i) & … … 5919 5918 & -mp(il,i)*(xtp(iiso,il,i)-xt(iiso,il,i-1))) 5920 5919 5921 ixt_ddft=i ndex_trac(izone_ddft,iiso)5920 ixt_ddft=itZonIso(izone_ddft,iiso) 5922 5921 fxtYe(iiso)=0.01*grav*dpinv*mp(il,i) & 5923 5922 & *(xt(ixt_ddft,il,i-1)-xt(ixt_ddft,il,i)) 5924 5923 fxt(ixt_ddft,il,i)=fxt(ixt_ddft,il,i)+fxtYe(iiso) 5925 5924 5926 ixt_revap=i ndex_trac(izone_revap,iiso)5925 ixt_revap=itZonIso(izone_revap,iiso) 5927 5926 fxt_revap(iiso)=0.01*grav*dpinv*(mp(il,i+1)* & 5928 5927 & (xtp(ixt_revap,il,i+1)-xt(ixt_revap,il,i)) & … … 5935 5934 & -xt(ixt_ddft,il,i)-xt(ixt_revap,il,i) 5936 5935 if (Xe(iiso).gt.ridicule) then 5937 do izone=1,n traceurs_zone5936 do izone=1,nzone 5938 5937 if ((izone.ne.izone_revap).and. & 5939 5938 & (izone.ne.izone_ddft)) then 5940 ixt=i ndex_trac(izone,iiso)5939 ixt=itZonIso(izone,iiso) 5941 5940 fxt(ixt,il,i)=fxt(ixt,il,i) & 5942 5941 & +xt(ixt,il,i)/Xe(iiso)*fxtXe(iiso) 5943 5942 endif !if ((izone.ne.izone_revap).and. 5944 enddo !do izone=1,n traceurs_zone5943 enddo !do izone=1,nzone 5945 5944 #ifdef ISOVERIF 5946 5945 ! write(*,*) 'iiso=',iiso … … 5964 5963 endif 5965 5964 #endif 5966 do izone=1,n traceurs_zone5965 do izone=1,nzone 5967 5966 if ((izone.ne.izone_revap).and. & 5968 5967 & (izone.ne.izone_ddft)) then 5969 ixt=i ndex_trac(izone,iiso)5968 ixt=itZonIso(izone,iiso) 5970 5969 if (izone.eq.izone_poubelle) then 5971 5970 fxt(ixt,il,i)=fxt(ixt,il,i)+fxtXe(iiso) … … 5974 5973 endif !if (izone.eq.izone_poubelle) then 5975 5974 endif !if ((izone.ne.izone_revap).and. 5976 enddo !do izone=1,n traceurs_zone5975 enddo !do izone=1,nzone 5977 5976 #ifdef ISOVERIF 5978 5977 call iso_verif_traceur_justmass(fxt(1,il,i), & … … 7459 7458 & ) 7460 7459 #ifdef ISO 7461 use infotrac_phy, ONLY: ntraciso 7460 use infotrac_phy, ONLY: ntraciso=>ntiso 7462 7461 #ifdef ISOVERIF 7463 7462 use isotopes_verif_mod, ONLY: Tmin_verif,iso_verif_aberrant, & -
LMDZ6/trunk/libf/phylmdiso/cv3a_compress.F90
r4004 r4143 34 34 ! ************************************************************** 35 35 #ifdef ISO 36 use infotrac_phy, ONLY: ntraciso 36 use infotrac_phy, ONLY: ntraciso=>ntiso 37 37 use isotopes_mod, ONLY: essai_convergence, iso_eau,iso_HDO 38 38 #ifdef ISOVERIF -
LMDZ6/trunk/libf/phylmdiso/cv3a_uncompress.F90
r4004 r4143 54 54 55 55 #ifdef ISO 56 USE infotrac_phy, ONLY : ntraciso 56 USE infotrac_phy, ONLY : ntraciso=>ntiso 57 57 #endif 58 58 IMPLICIT NONE -
LMDZ6/trunk/libf/phylmdiso/cv3p_mixing.F90
r4033 r4143 21 21 USE add_phys_tend_mod, ONLY: fl_cor_ebil 22 22 #ifdef ISO 23 USE infotrac_phy, ONLY: ntraciso 23 USE infotrac_phy, ONLY: ntraciso=>ntiso 24 24 USE isotopes_mod, ONLY: pxtmelt,pxtice 25 25 USE isotopes_routines_mod, ONLY: condiso_liq_ice_vectall … … 1301 1301 call iso_verif_egalite_choix(xtent(iso_eau,il,im,jm), & 1302 1302 qent(il,im,jm),'cv3p_mixing 2112',errmax,errmaxrel) 1303 endif !if ( use_iso_eau) then1303 endif !if (iso_eau>0) then 1304 1304 #ifdef ISOTRAC 1305 1305 call iso_verif_traceur_justmass(xtelij(1,il,im,jm), & … … 1353 1353 ! call iso_verif_traceur(xtclw(1,il,im), & 1354 1354 ! 'cv3p_mixing 358') 1355 ! if (iso_verif_positif_nostop(xtclw(i ndex_trac( &1355 ! if (iso_verif_positif_nostop(xtclw(itZonIso( & 1356 1356 ! izone_cond,iso_eau),i,k)-xtclw(iso_eau,i,k) & 1357 1357 ! ,'cv3p_mixing 909').eq.1) then … … 1361 1361 ! niso,ntraciso,index_zone,izone_cond 1362 1362 ! stop 1363 ! endif !if (iso_verif_positif_nostop(xtclw(i ndex_trac(1363 ! endif !if (iso_verif_positif_nostop(xtclw(itZonIso( 1364 1364 !#endif 1365 1365 ! enddo !do il = 1, ncum -
LMDZ6/trunk/libf/phylmdiso/cv_driver.F90
r4004 r4143 25 25 USE dimphy 26 26 #ifdef ISO 27 USE infotrac_phy, ONLY: ntraciso ,niso,index_trac,ntraceurs_zone27 USE infotrac_phy, ONLY: ntraciso=>ntiso,niso,itZonIso,nzone 28 28 USE isotopes_mod, ONLY: iso_eau,iso_HDO,ridicule,bidouille_anti_divergence 29 29 #ifdef ISOVERIF … … 511 511 CALL cv_param(nd) 512 512 #ifdef ISO 513 write(*,*) 'cv_driver 454: isos pas pr évus ici'513 write(*,*) 'cv_driver 454: isos pas prevus ici' 514 514 stop 515 515 #endif … … 687 687 !c--debug 688 688 #ifdef ISOVERIF 689 write(*,*) 'cv_driver 621: apr ès cv3_undilute1'689 write(*,*) 'cv_driver 621: apres cv3_undilute1' 690 690 do k = 1, klev 691 691 do i = 1, klon … … 752 752 !write(*,*) 'xt1(iso_eau,1,1),q1(1,1)=',xt1(iso_eau,1,1),q1(1,1) 753 753 !write(*,*) 'xt1(iso_eau,14,1),q1(14,1)=',xt1(iso_eau,14,1),q1(14,1) 754 !write(*,*) 'iso_eau,use_iso=',iso_eau,use_iso755 754 do k = 1, klev 756 755 do i = 1, nloc … … 783 782 #ifdef ISO 784 783 #ifdef ISOVERIF 785 write(*,*) 'cv_driver 720: apr ès cv3_compress'784 write(*,*) 'cv_driver 720: apres cv3_compress' 786 785 do k = 1, klev 787 786 do i = 1, ncum … … 883 882 ,cape,ep,hp,icb,inb,clw,nk,t,h,lv & 884 883 ,epmax_diag) 885 ! on écrase ep et recalcule hp884 ! on écrase ep et recalcule hp 886 885 END IF 887 886 … … 910 909 #ifdef ISO 911 910 #ifdef ISOVERIF 912 write(*,*) 'cv_driver 837: apr ès cv3_mixing'911 write(*,*) 'cv_driver 837: apres cv3_mixing' 913 912 do k = 1, klev 914 913 do j = 1, klev … … 925 924 call iso_verif_traceur_justmass(xtelij(1,i,j,k), & 926 925 & 'cv_driver 847') 927 ! on ne v érfier pas le deltaD ici car peut dépasser le seuil928 ! raisonable pour temp ératures très froides.926 ! on ne verifie pas le deltaD ici car peut depasser le seuil 927 ! raisonable pour temperatures tres froides. 929 928 #endif 930 929 enddo … … 940 939 call iso_verif_traceur(xt(1,i,k),'cv_driver 856') 941 940 if (option_tmin.eq.1) then 942 if (iso_verif_positif_nostop(xtclw(i ndex_trac( &941 if (iso_verif_positif_nostop(xtclw(itZonIso( & 943 942 & izone_cond,iso_eau),i,k)-xtclw(iso_eau,i,k) & 944 943 & ,'cv_driver 909').eq.1) then … … 946 945 write(*,*) 'xtclw=',xtclw(:,i,k) 947 946 stop 948 endif !if (iso_verif_positif_nostop(xtclw(i ndex_trac(947 endif !if (iso_verif_positif_nostop(xtclw(itZonIso( 949 948 endif !if ((option_traceurs.eq.17).or. 950 949 #endif … … 1000 999 write(*,*) 'klev=',klev 1001 1000 #ifdef ISOVERIF 1002 write(*,*) 'cv_driver 930: apr ès cv3_unsat'1001 write(*,*) 'cv_driver 930: apres cv3_unsat' 1003 1002 do k = 1, klev 1004 1003 do i = 1, ncum … … 1048 1047 do i = 1, ncum 1049 1048 do iiso=1,niso 1050 ixt_ddft=i ndex_trac(izone_ddft,iiso)1051 ixt_poubelle=i ndex_trac(izone_poubelle,iiso)1049 ixt_ddft=itZonIso(izone_ddft,iiso) 1050 ixt_poubelle=itZonIso(izone_poubelle,iiso) 1052 1051 xtp(ixt_ddft,i,k)=xtp(ixt_ddft,i,k) & 1053 1052 & +xtp(ixt_poubelle,i,k) … … 1063 1062 do k = 1, klev 1064 1063 do i = 1, ncum 1065 do izone=1,n traceurs_zone1064 do izone=1,nzone 1066 1065 if (izone.eq.izone_ddft) then 1067 1066 do iiso=1,niso 1068 ixt_ddft=i ndex_trac(izone,iiso)1069 ixt_revap=i ndex_trac(izone_revap,iiso)1067 ixt_ddft=itZonIso(izone,iiso) 1068 ixt_revap=itZonIso(izone_revap,iiso) 1070 1069 xtp(ixt_ddft,i,k)=xtp(iiso,i,k)-xtp(ixt_revap,i,k) 1071 1070 enddo !do iiso=1,niso 1072 1071 elseif (izone.eq.izone_ddft) then 1073 ! rien àfaire1072 ! rien a faire 1074 1073 else !if (izone.eq.izone_ddft) then 1075 1074 do iiso=1,niso 1076 ixt=i ndex_trac(izone,iiso)1075 ixt=itZonIso(izone,iiso) 1077 1076 xtp(ixt,i,k)=0.0 1078 1077 enddo !do iiso=1,niso 1079 1078 endif !if (izone.eq.izone_ddft) then 1080 enddo !do izone=1,n traceurs_zone1079 enddo !do izone=1,nzone 1081 1080 #ifdef ISOVERIF 1082 1081 call iso_verif_traceur(xtp(1,i,k),'cv_driver 1059') … … 1247 1246 ! si icvflag_Tpa=0, alors la fraction de glace dans l'ascendance adiabatique est 1248 1247 ! fonction de la temperature de l'environnement et la temperature de l'ascendance est 1249 ! calculee en deux it érations, une en supposant qu'il n'y a pas de glace et l'autre1250 ! en ajoutant la glace (ancien sch éma d'Arnaud Jam).1248 ! calculee en deux iterations, une en supposant qu'il n'y a pas de glace et l'autre 1249 ! en ajoutant la glace (ancien schema d'Arnaud Jam). 1251 1250 ! si icvflag_Tpa=1, alors la fraction de glace dans l'ascendance adiabatique est 1252 1251 ! fonction de la temperature de l'environnement et la temperature de l'ascendance est -
LMDZ6/trunk/libf/phylmdiso/cva_driver.F90
r4033 r4143 54 54 USE add_phys_tend_mod, ONLY: fl_cor_ebil 55 55 #ifdef ISO 56 USE infotrac_phy, ONLY: ntraciso ,niso,niso,index_trac,ntraceurs_zone56 USE infotrac_phy, ONLY: ntraciso=>ntiso,niso,niso,itZonIso,nzone 57 57 USE isotopes_mod, ONLY: iso_eau,iso_HDO,iso_O18,ridicule,bidouille_anti_divergence 58 58 #ifdef ISOVERIF … … 1388 1388 call iso_verif_traceur(xt(1,i,k),'cva_driver 856') 1389 1389 if (option_tmin.eq.1) then 1390 if (iso_verif_positif_nostop(xtclw(i ndex_trac( &1390 if (iso_verif_positif_nostop(xtclw(itZonIso( & 1391 1391 & izone_cond,iso_eau),i,k)-xtclw(iso_eau,i,k) & 1392 1392 & ,'cva_driver 909').eq.1) then … … 1394 1394 write(*,*) 'xtclw=',xtclw(:,i,k) 1395 1395 stop 1396 endif !if (iso_verif_positif_nostop(xtclw(i ndex_trac(1396 endif !if (iso_verif_positif_nostop(xtclw(itZonIso( 1397 1397 endif !if ((option_traceurs.eq.17).or. 1398 1398 #endif … … 1509 1509 do i = 1, ncum 1510 1510 do iiso=1,niso 1511 ixt_ddft=i ndex_trac(izone_ddft,iiso)1512 ixt_poubelle=i ndex_trac(izone_poubelle,iiso)1511 ixt_ddft=itZonIso(izone_ddft,iiso) 1512 ixt_poubelle=itZonIso(izone_poubelle,iiso) 1513 1513 xtp(ixt_ddft,i,k)=xtp(ixt_ddft,i,k) & 1514 1514 & +xtp(ixt_poubelle,i,k) … … 1524 1524 do k=1,nd 1525 1525 do i = 1, ncum 1526 do izone=1,n traceurs_zone1526 do izone=1,nzone 1527 1527 if (izone.eq.izone_ddft) then 1528 1528 do iiso=1,niso 1529 ixt_ddft=i ndex_trac(izone,iiso)1530 ixt_revap=i ndex_trac(izone_revap,iiso)1529 ixt_ddft=itZonIso(izone,iiso) 1530 ixt_revap=itZonIso(izone_revap,iiso) 1531 1531 xtp(ixt_ddft,i,k)=xtp(iiso,i,k)-xtp(ixt_revap,i,k) 1532 1532 enddo !do iiso=1,niso … … 1535 1535 else !if (izone.eq.izone_ddft) then 1536 1536 do iiso=1,niso 1537 ixt=i ndex_trac(izone,iiso)1537 ixt=itZonIso(izone,iiso) 1538 1538 xtp(ixt,i,k)=0.0 1539 1539 enddo !do iiso=1,niso 1540 1540 endif !if (izone.eq.izone_ddft) then 1541 enddo !do izone=1,n traceurs_zone1541 enddo !do izone=1,nzone 1542 1542 #ifdef ISOVERIF 1543 1543 call iso_verif_traceur(xtp(1,i,k),'cva_driver 1059') -
LMDZ6/trunk/libf/phylmdiso/fisrtilp.F90
r3927 r4143 27 27 USE add_phys_tend_mod, only : fl_cor_ebil 28 28 #ifdef ISO 29 USE infotrac_phy, ONLY: ntraciso ,niso,index_trac,ntraceurs_zone29 USE infotrac_phy, ONLY: ntraciso=>ntiso,niso,itZonIso 30 30 USE isotopes_mod 31 31 !, ONLY: essai_convergence,bidouille_anti_divergence, & … … 1510 1510 zxtn(iso_eau,i)=zqn(i) 1511 1511 #ifdef ISOTRAC 1512 zxtn(i ndex_trac(izone_poubelle,iso_eau),i)=zqn(i)1512 zxtn(itZonIso(izone_poubelle,iso_eau),i)=zqn(i) 1513 1513 if (option_tmin.eq.1) then 1514 1514 zxtcs(iso_eau,i)=zqcs(i) … … 1848 1848 ! part le tag résuel et le condensat 1849 1849 if (iso_verif_positif_choix_nostop( & 1850 & zxt_ancien(i ndex_trac(izone,iso_eau),i) &1851 & -zxt(i ndex_trac(izone,iso_eau),i),1e-8,'ilp 1270') &1850 & zxt_ancien(itZonIso(izone,iso_eau),i) & 1851 & -zxt(itZonIso(izone,iso_eau),i),1e-8,'ilp 1270') & 1852 1852 & .eq.1) then 1853 1853 write(*,*) 'i,izone,rneb=',i,izone,rneb(i,k) -
LMDZ6/trunk/libf/phylmdiso/fonte_neige_mod.F90
r4033 r4143 629 629 ! de dépendance circulaire. 630 630 631 USE infotrac_phy, ONLY: nt raciso,niso631 USE infotrac_phy, ONLY: ntiso,niso 632 632 USE isotopes_mod, ONLY: iso_eau 633 633 USE indice_sol_mod … … 639 639 ! inputs 640 640 integer klon,knon 641 real xtprecip_snow(nt raciso,klon),xtprecip_rain(ntraciso,klon)641 real xtprecip_snow(ntiso,klon),xtprecip_rain(ntiso,klon) 642 642 INTEGER, INTENT(IN) :: nisurf 643 643 INTEGER, DIMENSION(klon), INTENT(IN) :: knindex -
LMDZ6/trunk/libf/phylmdiso/isotopes_mod.F90
r4124 r4143 3 3 4 4 MODULE isotopes_mod 5 USE infotrac_phy, ONLY: ntraciso,niso,indnum_fn_num,use_iso, & 6 & niso_possibles 7 IMPLICIT NONE 8 SAVE 9 10 ! contient toutes les variables isotopiques et leur initialisation 11 ! les routines specifiquement isotopiques sont dans 12 ! isotopes_routines_mod pour éviter dépendance circulaire avec 13 ! isotopes_verif_mod. 14 15 16 ! indices des isotopes 17 integer, save :: iso_eau,iso_HDO,iso_O18,iso_O17,iso_HTO ! indices de 1 à niso: les isos n'existant pas sont mis à 0 18 !$OMP THREADPRIVATE(iso_eau,iso_HDO,iso_O18,iso_O17,iso_HTO) 19 20 integer :: iso_eau_possible,iso_HDO_possible,iso_O18_possible,iso_O17_possible,iso_HTO_possible ! indices de 1 à niso_possibles: ils correspondent aux tableaux définis dans infotrac: 21 ! tnom_iso=(/'eau','HDO','O18','O17','HTO'/) 22 ! ce sont ces indices qui doivent être utilisés avec use_iso, puisque use_iso est défini comme DIMENSION(niso_possibles) 23 parameter (iso_eau_possible=1) 24 parameter (iso_HDO_possible=2) 25 parameter (iso_O18_possible=3) 26 parameter (iso_O17_possible=4) 27 parameter (iso_HTO_possible=5) 28 29 integer, save :: ntracisoOR 5 USE strings_mod, ONLY: msg, real2str, int2str, bool2str, maxlen, strIdx, strStack 6 IMPLICIT NONE 7 INTERFACE get_in; MODULE PROCEDURE getinp_s, getinp_i, getinp_r, getinp_l; END INTERFACE get_in 8 SAVE 9 10 !--- Contains all isotopic variables + their initialization 11 !--- Isotopes-specific routines are in isotopes_routines_mod to avoid circular dependencies with isotopes_verif_mod. 12 13 !--- Isotopes indices (in [1,niso] ; non-existing => 0 index) 14 INTEGER, SAVE :: iso_eau, iso_HDO, iso_O18, iso_O17, iso_HTO 15 !$OMP THREADPRIVATE(iso_eau, iso_HDO, iso_O18, iso_O17, iso_HTO) 16 17 INTEGER, SAVE :: ntracisoOR 30 18 !$OMP THREADPRIVATE(ntracisoOR) 31 19 32 ! variables indépendantes des isotopes 33 34 real, save :: pxtmelt,pxtice,pxtmin,pxtmax 35 !$OMP THREADPRIVATE(pxtmelt,pxtice,pxtmin,pxtmax) 36 real, save :: tdifexp, tv0cin, thumxt1 20 !--- Variables not depending on isotopes 21 REAL, SAVE :: pxtmelt, pxtice, pxtmin, pxtmax 22 !$OMP THREADPRIVATE(pxtmelt, pxtice, pxtmin, pxtmax) 23 REAL, SAVE :: tdifexp, tv0cin, thumxt1 37 24 !$OMP THREADPRIVATE(tdifexp, tv0cin, thumxt1) 38 integer, save ::ntot25 INTEGER, SAVE :: ntot 39 26 !$OMP THREADPRIVATE(ntot) 40 real, save ::h_land_ice27 REAL, SAVE :: h_land_ice 41 28 !$OMP THREADPRIVATE(h_land_ice) 42 real, save ::P_veg29 REAL, SAVE :: P_veg 43 30 !$OMP THREADPRIVATE(P_veg) 44 real, save :: musi,lambda_sursat45 !$OMP THREADPRIVATE( lambda_sursat)46 real, save ::Kd31 REAL, SAVE :: musi, lambda_sursat 32 !$OMP THREADPRIVATE(musi, lambda_sursat) 33 REAL, SAVE :: Kd 47 34 !$OMP THREADPRIVATE(Kd) 48 real, save :: rh_cste_surf_cond,T_cste_surf_cond 49 !$OMP THREADPRIVATE(rh_cste_surf_cond,T_cste_surf_cond) 50 51 logical, save :: bidouille_anti_divergence 52 ! si true, rappel régulier de xteau vers q, pour éviter dérives lentes 35 REAL, SAVE :: rh_cste_surf_cond, T_cste_surf_cond 36 !$OMP THREADPRIVATE(rh_cste_surf_cond, T_cste_surf_cond) 37 LOGICAL, SAVE :: bidouille_anti_divergence ! T: regularly, xteau <- q to avoid slow drifts 53 38 !$OMP THREADPRIVATE(bidouille_anti_divergence) 54 logical, save :: essai_convergence 55 ! si false, on fait rigoureusement comme dans LMDZ sans isotopes, 56 ! meme si c'est génant pour les isotopes 39 LOGICAL, SAVE :: essai_convergence ! F: as in LMDZ without isotopes (bad for isotopes) 57 40 !$OMP THREADPRIVATE(essai_convergence) 58 integer, save :: initialisation_iso 59 ! 0: dans fichier 60 ! 1: R=0 61 ! 2: R selon distill rayleigh 62 ! 3: R=Rsmow 41 INTEGER, SAVE :: initialisation_iso ! 0: file ; 1: R=0 ; 2: R=distill. Rayleigh ; 3: R=Rsmow 63 42 !$OMP THREADPRIVATE(initialisation_iso) 64 integer, save :: modif_SST ! 0 par defaut, 1 si on veut modifier la sst 65 ! 2 et 3: profils de SST 43 INTEGER, SAVE :: modif_SST ! 0: default ; 1: modified SST ; 2, 3: SST profiles 66 44 !$OMP THREADPRIVATE(modif_SST) 67 real, save :: deltaTtest ! modif de la SST, uniforme. 45 REAL, SAVE :: deltaTtest ! Uniform modification of the SST 68 46 !$OMP THREADPRIVATE(deltaTtest) 69 integer, save :: modif_sic ! on met des trous dans glace de mer 47 INTEGER, SAVE :: modif_sic ! Holes in the Sea Ice 70 48 !$OMP THREADPRIVATE(modif_sic) 71 real, save :: deltasic ! fraction de trous minimale 49 REAL, SAVE :: deltasic ! Minimal holes fraction 72 50 !$OMP THREADPRIVATE(deltasic) 73 real, save ::deltaTtestpoles51 REAL, SAVE :: deltaTtestpoles 74 52 !$OMP THREADPRIVATE(deltaTtestpoles) 75 real, save :: sstlatcrit 76 !$OMP THREADPRIVATE(sstlatcrit) 77 real, save :: dsstlatcrit 78 !$OMP THREADPRIVATE(dsstlatcrit) 79 real, save :: deltaO18_oce 53 REAL, SAVE :: sstlatcrit, dsstlatcrit 54 !$OMP THREADPRIVATE(sstlatcrit, dsstlatcrit) 55 REAL, SAVE :: deltaO18_oce 80 56 !$OMP THREADPRIVATE(deltaO18_oce) 81 integer, save :: albedo_prescrit ! 0 par defaut 82 ! 1 si on veut garder albedo constant 57 INTEGER, SAVE :: albedo_prescrit ! 0: default ; 1: constant albedo 83 58 !$OMP THREADPRIVATE(albedo_prescrit) 84 real, save :: lon_min_albedo,lon_max_albedo 85 !$OMP THREADPRIVATE(lon_min_albedo,lon_max_albedo) 86 real, save :: lat_min_albedo,lat_max_albedo 87 !$OMP THREADPRIVATE(lat_min_albedo,lat_max_albedo) 88 real, save :: deltaP_BL,tdifexp_sol 59 REAL, SAVE :: lon_min_albedo, lon_max_albedo, lat_min_albedo, lat_max_albedo 60 !$OMP THREADPRIVATE(lon_min_albedo, lon_max_albedo, lat_min_albedo, lat_max_albedo) 61 REAL, SAVE :: deltaP_BL,tdifexp_sol 89 62 !$OMP THREADPRIVATE(deltaP_BL,tdifexp_sol) 90 integer, save :: ruissellement_pluie,alphak_stewart91 !$OMP THREADPRIVATE(ruissellement_pluie, alphak_stewart)92 integer, save ::calendrier_guide63 INTEGER, SAVE :: ruissellement_pluie, alphak_stewart 64 !$OMP THREADPRIVATE(ruissellement_pluie, alphak_stewart) 65 INTEGER, SAVE :: calendrier_guide 93 66 !$OMP THREADPRIVATE(calendrier_guide) 94 integer, save ::cste_surf_cond67 INTEGER, SAVE :: cste_surf_cond 95 68 !$OMP THREADPRIVATE(cste_surf_cond) 96 real, save ::mixlen69 REAL, SAVE :: mixlen 97 70 !$OMP THREADPRIVATE(mixlen) 98 integer, save ::evap_cont_cste71 INTEGER, SAVE :: evap_cont_cste 99 72 !$OMP THREADPRIVATE(evap_cont_cste) 100 real, save :: deltaO18_evap_cont,d_evap_cont101 !$OMP THREADPRIVATE(deltaO18_evap_cont, d_evap_cont)102 integer, save :: nudge_qsol,region_nudge_qsol103 !$OMP THREADPRIVATE(nudge_qsol, region_nudge_qsol)104 integer, save:: nlevmaxO1773 REAL, SAVE :: deltaO18_evap_cont, d_evap_cont 74 !$OMP THREADPRIVATE(deltaO18_evap_cont, d_evap_cont) 75 INTEGER, SAVE :: nudge_qsol, region_nudge_qsol 76 !$OMP THREADPRIVATE(nudge_qsol, region_nudge_qsol) 77 INTEGER, SAVE :: nlevmaxO17 105 78 !$OMP THREADPRIVATE(nlevmaxO17) 106 integer, save :: no_pce 107 ! real, save :: slope_limiterxy,slope_limiterz 79 INTEGER, SAVE :: no_pce 108 80 !$OMP THREADPRIVATE(no_pce) 109 real, save ::A_satlim81 REAL, SAVE :: A_satlim 110 82 !$OMP THREADPRIVATE(A_satlim) 111 integer, save :: ok_restrict_A_satlim,modif_ratqs112 !$OMP THREADPRIVATE(ok_restrict_A_satlim, modif_ratqs)113 real, save :: Pcrit_ratqs,ratqsbasnew114 !$OMP THREADPRIVATE(Pcrit_ratqs, ratqsbasnew)115 real, save ::fac_modif_evaoce83 INTEGER, SAVE :: ok_restrict_A_satlim, modif_ratqs 84 !$OMP THREADPRIVATE(ok_restrict_A_satlim, modif_ratqs) 85 REAL, SAVE :: Pcrit_ratqs, ratqsbasnew 86 !$OMP THREADPRIVATE(Pcrit_ratqs, ratqsbasnew) 87 REAL, SAVE :: fac_modif_evaoce 116 88 !$OMP THREADPRIVATE(fac_modif_evaoce) 117 integer, save ::ok_bidouille_wake89 INTEGER, SAVE :: ok_bidouille_wake 118 90 !$OMP THREADPRIVATE(ok_bidouille_wake) 119 logical ::cond_temp_env91 LOGICAL, SAVE :: cond_temp_env 120 92 !$OMP THREADPRIVATE(cond_temp_env) 121 93 122 123 ! variables tableaux fn de niso 124 real, ALLOCATABLE, DIMENSION(:), save :: tnat, toce, tcorr 125 !$OMP THREADPRIVATE(tnat, toce, tcorr) 126 real, ALLOCATABLE, DIMENSION(:), save :: tdifrel 127 !$OMP THREADPRIVATE(tdifrel) 128 real, ALLOCATABLE, DIMENSION(:), save :: talph1, talph2, talph3 129 !$OMP THREADPRIVATE(talph1, talph2, talph3) 130 real, ALLOCATABLE, DIMENSION(:), save :: talps1, talps2 131 !$OMP THREADPRIVATE(talps1, talps2) 132 real, ALLOCATABLE, DIMENSION(:), save :: tkcin0, tkcin1, tkcin2 94 !--- Vectors of length "niso" 95 REAL, ALLOCATABLE, DIMENSION(:), SAVE :: & 96 tnat, toce, tcorr, tdifrel 97 !$OMP THREADPRIVATE(tnat, toce, tcorr, tdifrel) 98 REAL, ALLOCATABLE, DIMENSION(:), SAVE :: & 99 talph1, talph2, talph3, talps1, talps2 100 !$OMP THREADPRIVATE(talph1, talph2, talph3, talps1, talps2) 101 REAL, ALLOCATABLE, DIMENSION(:), SAVE :: & 102 tkcin0, tkcin1, tkcin2 133 103 !$OMP THREADPRIVATE(tkcin0, tkcin1, tkcin2) 134 real, ALLOCATABLE, DIMENSION(:), save :: alpha_liq_sol 135 !$OMP THREADPRIVATE(alpha_liq_sol) 136 real, ALLOCATABLE, DIMENSION(:), save :: Rdefault, Rmethox 137 !$OMP THREADPRIVATE(Rdefault, Rmethox) 104 REAL, ALLOCATABLE, DIMENSION(:), SAVE :: & 105 alpha_liq_sol, Rdefault, Rmethox 106 !$OMP THREADPRIVATE(alpha_liq_sol, Rdefault, Rmethox) 138 107 character*3, ALLOCATABLE, DIMENSION(:), save :: striso 139 108 !$OMP THREADPRIVATE(striso) 140 real, save ::fac_coeff_eq17_liq, fac_coeff_eq17_ice109 REAL, SAVE :: fac_coeff_eq17_liq, fac_coeff_eq17_ice 141 110 !$OMP THREADPRIVATE(fac_coeff_eq17_liq, fac_coeff_eq17_ice) 142 111 143 real ridicule ! valeur maximale pour qu'une variable de type 144 ! rapoport de mélange puisse être considérée comme négligeable. Si 145 ! négligeable, alors on ne verifie pas si sa compo iso esta bérrante. 146 parameter (ridicule=1e-12) 147 ! parameter (ridicule=1) 148 ! 149 real ridicule_rain ! valeur limite de ridicule pour les flux de pluies (rain, zrfl...) 150 parameter (ridicule_rain=1e-8) ! en kg/s <-> 1e-3mm/day 151 152 real ridicule_evap ! valeur limite de ridicule pour les evap 153 parameter (ridicule_evap=ridicule_rain*1e-2) ! en kg/s <-> 1e-3mm/day 154 155 real ridicule_qsol ! valeur limite de ridicule pour les qsol 156 parameter (ridicule_qsol=ridicule_rain) ! en kg <-> 1e-8kg 157 158 real ridicule_snow ! valeur limite de ridicule pour les snow 159 parameter (ridicule_snow=ridicule_qsol) ! en kg/s <-> 1e-8kg 160 161 real expb_max 162 parameter (expb_max=30.0) 163 164 ! spécifique au tritium: 165 166 167 logical, save :: ok_prod_nucl_tritium ! si oui, production de tritium par essais nucleaires 112 !--- Negligible lower thresholds: no need to check for absurd values under these lower limits 113 REAL, PARAMETER :: & 114 ridicule = 1e-12, & ! For mixing ratios 115 ridicule_rain = 1e-8, & ! For rain fluxes (rain, zrfl...) in kg/s <-> 1e-3 mm/day 116 ridicule_evap = ridicule_rain*1e-2, & ! For evaporations in kg/s <-> 1e-3 mm/day 117 ridicule_qsol = ridicule_rain, & ! For qsol in kg <-> 1e-8 kg 118 ridicule_snow = ridicule_qsol ! For snow in kg <-> 1e-8 kg 119 REAL, PARAMETER :: expb_max = 30.0 120 !$OMP THREADPRIVATE(ridicule, ridicule_rain, ridicule_evap, ridicule_qsol, ridicule_snow, expb_max) 121 122 !--- Specific to HTO: 123 LOGICAL, SAVE :: ok_prod_nucl_tritium !--- TRUE => HTO production by nuclear tests 168 124 !$OMP THREADPRIVATE(ok_prod_nucl_tritium) 169 integer nessai 170 parameter (nessai=486) 171 integer, save :: day_nucl(nessai) 172 !$OMP THREADPRIVATE(day_nucl) 173 integer, save :: month_nucl(nessai) 174 !$OMP THREADPRIVATE(month_nucl) 175 integer, save :: year_nucl(nessai) 176 !$OMP THREADPRIVATE(year_nucl) 177 real, save :: lat_nucl(nessai) 178 !$OMP THREADPRIVATE(lat_nucl) 179 real, save :: lon_nucl(nessai) 180 !$OMP THREADPRIVATE(lon_nucl) 181 real, save :: zmin_nucl(nessai) 182 !$OMP THREADPRIVATE(zmin_nucl) 183 real, save :: zmax_nucl(nessai) 184 !$OMP THREADPRIVATE(zmax_nucl) 185 real, save :: HTO_nucl(nessai) 186 !$OMP THREADPRIVATE(HTO_nucl) 187 125 INTEGER, PARAMETER :: nessai = 486 126 INTEGER, DIMENSION(nessai), SAVE :: & 127 day_nucl, month_nucl, year_nucl 128 !$OMP THREADPRIVATE(day_nucl, month_nucl, year_nucl) 129 REAL, DIMENSION(nessai), SAVE :: & 130 lat_nucl, lon_nucl, zmin_nucl, zmax_nucl, HTO_nucl 131 !$OMP THREADPRIVATE(lat_nucl, lon_nucl, zmin_nucl, zmax_nucl, HTO_nucl) 132 188 133 189 134 CONTAINS 190 135 191 SUBROUTINE iso_init() 192 use ioipsl_getin_p_mod, ONLY : getin_p 193 implicit none 194 195 ! -- local variables: 196 197 integer ixt 198 ! référence O18 199 real fac_enrichoce18 200 real alpha_liq_sol_O18, & 201 & talph1_O18,talph2_O18,talph3_O18, & 202 & talps1_O18,talps2_O18, & 203 & tkcin0_O18,tkcin1_O18,tkcin2_O18, & 204 & tdifrel_O18 136 SUBROUTINE iso_init() 137 USE ioipsl_getin_p_mod, ONLY: getin_p 138 USE infotrac_phy, ONLY: ntiso, niso, isoName 139 IMPLICIT NONE 140 141 !=== Local variables: 142 INTEGER :: ixt 143 144 !--- H2[18]O reference 145 REAL :: fac_enrichoce18, alpha_liq_sol_O18, & 146 talph1_O18, talph2_O18, talph3_O18, talps1_O18, talps2_O18, & 147 tkcin0_O18, tkcin1_O18, tkcin2_O18, tdifrel_O18 148 149 !--- For H2[17]O 150 REAL :: fac_kcin, pente_MWL 151 INTEGER :: ierr 205 152 206 ! cas de l'O17 207 real fac_kcin 208 real pente_MWL 209 integer ierr 210 211 logical ok_nocinsat, ok_nocinsfc !sensi test 212 parameter (ok_nocinsfc=.FALSE.) ! if T: no kinetic effect in sfc evap 213 parameter (ok_nocinsat=.FALSE.) ! if T: no sursaturation effect for ice 214 logical Rdefault_smow 215 parameter (Rdefault_smow=.FALSE.) ! si T: Rdefault=smow; si F: nul 216 ! pour le tritium 217 integer iessai 218 219 write(*,*) 'iso_init 219: entree' 220 221 ! allocations mémoire 222 allocate (tnat(niso)) 223 allocate (toce(niso)) 224 allocate (tcorr(niso)) 225 allocate (tdifrel(niso)) 226 allocate (talph1(niso)) 227 allocate (talph2(niso)) 228 allocate (talph3(niso)) 229 allocate (talps1(niso)) 230 allocate (talps2(niso)) 231 allocate (tkcin0(niso)) 232 allocate (tkcin1(niso)) 233 allocate (tkcin2(niso)) 234 allocate (alpha_liq_sol(niso)) 235 allocate (Rdefault(niso)) 236 allocate (Rmethox(niso)) 237 allocate (striso(niso)) 238 239 240 !-------------------------------------------------------------- 241 ! General: 242 !-------------------------------------------------------------- 243 244 ! -- verif du nombre d'isotopes: 245 write(*,*) 'iso_init 64: niso=',niso 246 247 ! init de ntracisoOR: on écrasera en cas de nzone>0 si complications avec 248 ! ORCHIDEE 249 ntracisoOR=ntraciso 250 251 ! -- Type of water isotopes: 252 253 iso_eau=indnum_fn_num(1) 254 iso_HDO=indnum_fn_num(2) 255 iso_O18=indnum_fn_num(3) 256 iso_O17=indnum_fn_num(4) 257 iso_HTO=indnum_fn_num(5) 258 write(*,*) 'iso_init 59: iso_eau=',iso_eau 259 write(*,*) 'iso_HDO=',iso_HDO 260 write(*,*) 'iso_O18=',iso_O18 261 write(*,*) 'iso_O17=',iso_O17 262 write(*,*) 'iso_HTO=',iso_HTO 263 write(*,*) 'iso_init 251: use_iso=',use_iso 264 265 ! initialisation 266 lambda_sursat=0.004 267 thumxt1=0.75*1.2 268 ntot=20 269 h_land_ice=20. ! à comparer aux 3000mm de snow_max 270 P_veg=1.0 271 bidouille_anti_divergence=.false. 272 essai_convergence=.false. 273 initialisation_iso=0 274 modif_sst=0 275 modif_sic=0 276 deltaTtest=0.0 277 deltasic=0.1 278 deltaTtestpoles=0.0 279 sstlatcrit=30.0 280 deltaO18_oce=0.0 281 albedo_prescrit=0 282 lon_min_albedo=-200 283 lon_max_albedo=200 284 lat_min_albedo=-100 285 lat_max_albedo=100 286 deltaP_BL=10.0 287 ruissellement_pluie=0 288 alphak_stewart=1 289 tdifexp_sol=0.67 290 calendrier_guide=0 291 cste_surf_cond=0 292 mixlen=35.0 293 evap_cont_cste=0.0 294 deltaO18_evap_cont=0.0 295 d_evap_cont=0.0 296 nudge_qsol=0 297 region_nudge_qsol=1 298 nlevmaxO17=50 299 no_pce=0 300 A_satlim=1.0 301 ok_restrict_A_satlim=0 302 ! slope_limiterxy=2.0 303 ! slope_limiterz=2.0 304 modif_ratqs=0 305 Pcrit_ratqs=500.0 306 ratqsbasnew=0.05 307 308 fac_modif_evaoce=1.0 309 ok_bidouille_wake=0 310 cond_temp_env=.false. 311 ! si oui, la temperature de cond est celle de l'environnement, 312 ! pour eviter bugs quand temperature dans ascendances convs est 313 ! mal calculee 314 ok_prod_nucl_tritium=.false. 315 316 ! lecture des paramètres isotopiques: 317 ! pour que ça marche en openMP, il faut utiliser getin_p. Car le getin ne peut 318 ! être appelé que par un thread à la fois, et ça pose tout un tas de problème, 319 ! d'où tout un tas de magouilles comme dans conf_phys_m. A terme, tout le monde 320 ! lira par getin_p. 321 call getin_p('lambda',lambda_sursat) 322 call getin_p('thumxt1',thumxt1) 323 call getin_p('ntot',ntot) 324 call getin_p('h_land_ice',h_land_ice) 325 call getin_p('P_veg',P_veg) 326 call getin_p('bidouille_anti_divergence',bidouille_anti_divergence) 327 call getin_p('essai_convergence',essai_convergence) 328 call getin_p('initialisation_iso',initialisation_iso) 329 !if (nzone>0) then 330 !if (initialisation_iso.eq.0) then 331 ! call getin_p('initialisation_isotrac',initialisation_isotrac) 332 !endif !if (initialisation_iso.eq.0) then 333 !endif !if (nzone>0) 334 call getin_p('modif_sst',modif_sst) 335 if (modif_sst.ge.1) then 336 call getin_p('deltaTtest',deltaTtest) 337 if (modif_sst.ge.2) then 338 call getin_p('deltaTtestpoles',deltaTtestpoles) 339 call getin_p('sstlatcrit',sstlatcrit) 153 !--- Sensitivity tests 154 LOGICAL, PARAMETER :: ok_nocinsfc = .FALSE. ! if T: no kinetic effect in sfc evap 155 LOGICAL, PARAMETER :: ok_nocinsat = .FALSE. ! if T: no sursaturation effect for ice 156 LOGICAL, PARAMETER :: Rdefault_smow = .FALSE. ! if T: Rdefault=smow; if F: nul 157 158 !--- For [3]H 159 INTEGER :: iessai 160 161 CHARACTER(LEN=maxlen) :: modname, sxt 162 163 modname = 'iso_init' 164 CALL msg('219: entree', modname) 165 166 !--- Memory allocations 167 ALLOCATE(talph1(niso), tkcin0(niso), talps1(niso), tnat(niso)) 168 ALLOCATE(talph2(niso), tkcin1(niso), talps2(niso), toce(niso)) 169 ALLOCATE(talph3(niso), tkcin2(niso), tdifrel(niso), tcorr(niso)) 170 ALLOCATE(alpha_liq_sol(niso), Rdefault(niso), Rmethox(niso)) 171 ALLOCATE(striso(niso)) 172 173 174 !-------------------------------------------------------------- 175 ! General: 176 !-------------------------------------------------------------- 177 178 !--- Check number of isotopes 179 CALL msg('64: niso = '//TRIM(int2str(niso)), modname) 180 181 !--- Init de ntracisoOR: on ecrasera en cas de traceurs de tagging isotopiques 182 ! (nzone>0) si complications avec ORCHIDEE 183 ntracisoOR = ntiso 184 185 !--- Type of water isotopes: 186 iso_eau = strIdx(isoName, 'H2[16]O'); CALL msg('59: iso_eau='//int2str(iso_eau), modname) 187 iso_O17 = strIdx(isoName, 'H2[17]O'); CALL msg('iso_HDO='//int2str(iso_HDO), modname) 188 iso_O18 = strIdx(isoName, 'H2[18]O'); CALL msg('iso_O18='//int2str(iso_O18), modname) 189 iso_HDO = strIdx(isoName, 'H[2]HO'); CALL msg('iso_O17='//int2str(iso_O17), modname) 190 iso_HTO = strIdx(isoName, 'H[3]HO'); CALL msg('iso_HTO='//int2str(iso_HTO), modname) 191 192 ! initialisation 193 ! lecture des parametres isotopiques: 194 ! pour que ca marche en openMP, il faut utiliser getin_p. Car le getin ne peut 195 ! etre appele que par un thread a la fois, et ca pose tout un tas de problemes, 196 ! d'ou tout un tas de magouilles comme dans conf_phys_m. A terme, tout le monde 197 ! lira par getin_p. 198 CALL get_in('lambda', lambda_sursat, 0.004) 199 CALL get_in('thumxt1', thumxt1, 0.75*1.2) 200 CALL get_in('ntot', ntot, 20, .FALSE.) 201 CALL get_in('h_land_ice', h_land_ice, 20., .FALSE.) 202 CALL get_in('P_veg', P_veg, 1.0, .FALSE.) 203 CALL get_in('bidouille_anti_divergence', bidouille_anti_divergence, .FALSE.) 204 CALL get_in('essai_convergence', essai_convergence, .FALSE.) 205 CALL get_in('initialisation_iso', initialisation_iso, 0) 206 207 ! IF(nzone>0 .AND. initialisation_iso==0) & 208 ! CALL get_in('initialisation_isotrac',initialisation_isotrac) 209 CALL get_in('modif_sst', modif_sst, 0) 210 CALL get_in('deltaTtest', deltaTtest, 0.0) !--- For modif_sst>=1 211 CALL get_in('deltaTtestpoles',deltaTtestpoles, 0.0) !--- For modif_sst>=2 212 CALL get_in( 'sstlatcrit', sstlatcrit, 30.0) !--- For modif_sst>=3 213 CALL get_in('dsstlatcrit', dsstlatcrit, 0.0) !--- For modif_sst>=3 340 214 #ifdef ISOVERIF 341 !call iso_verif_positif(sstlatcrit,'iso_init 107') 342 if (sstlatcrit.lt.0.0) then 343 write(*,*) 'iso_init 270: sstlatcrit=',sstlatcrit 344 stop 345 endif 215 CALL msg('iso_init 270: sstlatcrit='//real2str( sstlatcrit), modname, sstlatcrit < 0.0) !--- For modif_sst>=2 216 CALL msg('iso_init 279: dsstlatcrit='//real2str(dsstlatcrit), modname, sstlatcrit < 0.0) !--- For modif_sst>=3 217 IF(modif_sst >= 2 .AND. sstlatcrit < 0.0) STOP 346 218 #endif 347 if (modif_sst.ge.3) then 348 call getin_p('dsstlatcrit',dsstlatcrit) 219 220 CALL get_in('modif_sic', modif_sic, 0) 221 IF(modif_sic >= 1) & 222 CALL get_in('deltasic', deltasic, 0.1) 223 224 CALL get_in('albedo_prescrit', albedo_prescrit, 0) 225 IF(albedo_prescrit == 1) THEN 226 CALL get_in('lon_min_albedo', lon_min_albedo, -200.) 227 CALL get_in('lon_max_albedo', lon_max_albedo, 200.) 228 CALL get_in('lat_min_albedo', lat_min_albedo, -100.) 229 CALL get_in('lat_max_albedo', lat_max_albedo, 100.) 230 END IF 231 CALL get_in('deltaO18_oce', deltaO18_oce, 0.0) 232 233 CALL get_in('deltaP_BL', deltaP_BL, 10.0) 234 CALL get_in('ruissellement_pluie', ruissellement_pluie, 0) 235 CALL get_in('alphak_stewart', alphak_stewart, 1) 236 CALL get_in('tdifexp_sol', tdifexp_sol, 0.67) 237 CALL get_in('calendrier_guide', calendrier_guide, 0) 238 CALL get_in('cste_surf_cond', cste_surf_cond, 0) 239 CALL get_in('mixlen', mixlen, 35.0) 240 CALL get_in('evap_cont_cste', evap_cont_cste, 0) 241 CALL get_in('deltaO18_evap_cont', deltaO18_evap_cont,0.0) 242 CALL get_in('d_evap_cont', d_evap_cont, 0.0) 243 CALL get_in('nudge_qsol', nudge_qsol, 0) 244 CALL get_in('region_nudge_qsol', region_nudge_qsol, 1) 245 nlevmaxO17 = 50 246 CALL msg('nlevmaxO17='//TRIM(int2str(nlevmaxO17))) 247 CALL get_in('no_pce', no_pce, 0) 248 CALL get_in('A_satlim', A_satlim, 1.0) 249 CALL get_in('ok_restrict_A_satlim', ok_restrict_A_satlim, 0) 349 250 #ifdef ISOVERIF 350 !call iso_verif_positif(dsstlatcrit,'iso_init 110') 351 if (sstlatcrit.lt.0.0) then 352 write(*,*) 'iso_init 279: dsstlatcrit=',dsstlatcrit 353 stop 354 endif 355 #endif 356 endif !if (modif_sst.ge.3) then 357 endif !if (modif_sst.ge.2) then 358 endif ! if (modif_sst.ge.1) then 359 call getin_p('modif_sic',modif_sic) 360 if (modif_sic.ge.1) then 361 call getin_p('deltasic',deltasic) 362 endif !if (modif_sic.ge.1) then 363 364 call getin_p('albedo_prescrit',albedo_prescrit) 365 call getin_p('lon_min_albedo',lon_min_albedo) 366 call getin_p('lon_max_albedo',lon_max_albedo) 367 call getin_p('lat_min_albedo',lat_min_albedo) 368 call getin_p('lat_max_albedo',lat_max_albedo) 369 call getin_p('deltaO18_oce',deltaO18_oce) 370 call getin_p('deltaP_BL',deltaP_BL) 371 call getin_p('ruissellement_pluie',ruissellement_pluie) 372 call getin_p('alphak_stewart',alphak_stewart) 373 call getin_p('tdifexp_sol',tdifexp_sol) 374 call getin_p('calendrier_guide',calendrier_guide) 375 call getin_p('cste_surf_cond',cste_surf_cond) 376 call getin_p('mixlen',mixlen) 377 call getin_p('evap_cont_cste',evap_cont_cste) 378 call getin_p('deltaO18_evap_cont',deltaO18_evap_cont) 379 call getin_p('d_evap_cont',d_evap_cont) 380 call getin_p('nudge_qsol',nudge_qsol) 381 call getin_p('region_nudge_qsol',region_nudge_qsol) 382 call getin_p('no_pce',no_pce) 383 call getin_p('A_satlim',A_satlim) 384 call getin_p('ok_restrict_A_satlim',ok_restrict_A_satlim) 385 #ifdef ISOVERIF 386 !call iso_verif_positif(1.0-A_satlim,'iso_init 158') 387 if (A_satlim.gt.1.0) then 388 write(*,*) 'iso_init 315: A_satlim=',A_satlim 389 stop 390 endif 391 #endif 392 ! call getin_p('slope_limiterxy',slope_limiterxy) 393 ! call getin_p('slope_limiterz',slope_limiterz) 394 call getin_p('modif_ratqs',modif_ratqs) 395 call getin_p('Pcrit_ratqs',Pcrit_ratqs) 396 call getin_p('ratqsbasnew',ratqsbasnew) 397 call getin_p('fac_modif_evaoce',fac_modif_evaoce) 398 call getin_p('ok_bidouille_wake',ok_bidouille_wake) 399 call getin_p('cond_temp_env',cond_temp_env) 400 if (use_iso(iso_HTO_possible)) then 401 ok_prod_nucl_tritium=.true. 402 call getin_p('ok_prod_nucl_tritium',ok_prod_nucl_tritium) 403 endif 404 405 write(*,*) 'lambda,thumxt1=',lambda_sursat,thumxt1 406 write(*,*) 'bidouille_anti_divergence=',bidouille_anti_divergence 407 write(*,*) 'essai_convergence=',essai_convergence 408 write(*,*) 'initialisation_iso=',initialisation_iso 409 write(*,*) 'modif_sst=',modif_sst 410 if (modif_sst.ge.1) then 411 write(*,*) 'deltaTtest=',deltaTtest 412 if (modif_sst.ge.2) then 413 write(*,*) 'deltaTtestpoles,sstlatcrit=', & 414 & deltaTtestpoles,sstlatcrit 415 if (modif_sst.ge.3) then 416 write(*,*) 'dsstlatcrit=',dsstlatcrit 417 endif !if (modif_sst.ge.3) then 418 endif !if (modif_sst.ge.2) then 419 endif !if (modif_sst.ge.1) then 420 write(*,*) 'modif_sic=',modif_sic 421 if (modif_sic.ge.1) then 422 write(*,*) 'deltasic=',deltasic 423 endif !if (modif_sic.ge.1) then 424 write(*,*) 'deltaO18_oce=',deltaO18_oce 425 write(*,*) 'albedo_prescrit=',albedo_prescrit 426 if (albedo_prescrit.eq.1) then 427 write(*,*) 'lon_min_albedo,lon_max_albedo=', & 428 & lon_min_albedo,lon_max_albedo 429 write(*,*) 'lat_min_albedo,lat_max_albedo=', & 430 & lat_min_albedo,lat_max_albedo 431 endif !if (albedo_prescrit.eq.1) then 432 write(*,*) 'deltaP_BL,ruissellement_pluie,alphak_stewart=', & 433 & deltaP_BL,ruissellement_pluie,alphak_stewart 434 write(*,*) 'cste_surf_cond=',cste_surf_cond 435 write(*,*) 'mixlen=',mixlen 436 write(*,*) 'tdifexp_sol=',tdifexp_sol 437 write(*,*) 'calendrier_guide=',calendrier_guide 438 write(*,*) 'evap_cont_cste=',evap_cont_cste 439 write(*,*) 'deltaO18_evap_cont,d_evap_cont=', & 440 & deltaO18_evap_cont,d_evap_cont 441 write(*,*) 'nudge_qsol,region_nudge_qsol=', & 442 & nudge_qsol,region_nudge_qsol 443 write(*,*) 'nlevmaxO17=',nlevmaxO17 444 write(*,*) 'no_pce=',no_pce 445 write(*,*) 'A_satlim=',A_satlim 446 write(*,*) 'ok_restrict_A_satlim=',ok_restrict_A_satlim 447 ! write(*,*) 'slope_limiterxy=',slope_limiterxy 448 ! write(*,*) 'slope_limiterz=',slope_limiterz 449 write(*,*) 'modif_ratqs=',modif_ratqs 450 write(*,*) 'Pcrit_ratqs=',Pcrit_ratqs 451 write(*,*) 'ratqsbasnew=',ratqsbasnew 452 write(*,*) 'fac_modif_evaoce=',fac_modif_evaoce 453 write(*,*) 'ok_bidouille_wake=',ok_bidouille_wake 454 write(*,*) 'cond_temp_env=',cond_temp_env 455 write(*,*) 'ok_prod_nucl_tritium=',ok_prod_nucl_tritium 456 457 458 !-------------------------------------------------------------- 459 ! Parameters that do not depend on the nature of water isotopes: 460 !-------------------------------------------------------------- 461 462 ! -- temperature at which ice condensate starts to form (valeur ECHAM?): 463 pxtmelt=273.15 464 ! pxtmelt=273.15-10.0 ! test PHASE 465 466 ! -- temperature at which all condensate is ice: 467 pxtice=273.15-10.0 468 ! pxtice=273.15-30.0 ! test PHASE 469 470 ! -- minimum temperature to calculate fractionation coeff 471 pxtmin=273.15-120.0 ! On ne calcule qu'au dessus de -120°C 472 pxtmax=273.15+60.0 ! On ne calcule qu'au dessus de +60°C 473 ! remarque: les coeffs ont été mesurés seulement jusq'à -40! 474 475 ! -- a constant for alpha_eff for equilibrium below cloud base: 476 tdifexp=0.58 477 tv0cin=7.0 478 479 ! facteurs lambda et mu dans Si=musi-lambda*T 480 musi=1.0 481 if (ok_nocinsat) then 482 lambda_sursat = 0.0 ! no sursaturation effect 483 endif 484 485 486 ! diffusion dans le sol 487 Kd=2.5e-9 ! m2/s 488 489 ! cas où cste_surf_cond: on met rhs ou/et Ts cste pour voir 490 rh_cste_surf_cond=0.6 491 T_cste_surf_cond=288.0 492 493 !-------------------------------------------------------------- 494 ! Parameters that depend on the nature of water isotopes: 495 !-------------------------------------------------------------- 496 ! ** constantes locales 497 fac_enrichoce18=0.0005 498 ! on a alors tcor018=1+fac_enrichoce18 499 ! tcorD=1+fac_enrichoce18*8 500 ! tcorO17=1+fac_enrichoce18*0.528 501 alpha_liq_sol_O18=1.00291 ! valeur de Lehmann & Siegenthaler, 1991, 502 ! Journal of Glaciology, vol 37, p 23 503 talph1_O18=1137. 504 talph2_O18=-0.4156 505 talph3_O18=-2.0667E-3 506 talps1_O18=11.839 507 talps2_O18=-0.028244 508 tkcin0_O18 = 0.006 509 tkcin1_O18 = 0.000285 510 tkcin2_O18 = 0.00082 511 tdifrel_O18= 1./0.9723 512 513 ! rapport des ln(alphaeq) entre O18 et O17 514 fac_coeff_eq17_liq=0.529 ! donné par Amaelle 515 ! fac_coeff_eq17_ice=0.528 ! slope MWL 516 fac_coeff_eq17_ice=0.529 517 518 519 write(*,*) 'iso_O18,iso_HDO,iso_eau=',iso_O18,iso_HDO,iso_eau 520 do 999 ixt = 1, niso 521 write(*,*) 'iso_init 80: ixt=',ixt 522 523 524 ! -- kinetic factor for surface evaporation: 525 ! (cf: kcin = tkcin0 if |V|<tv0cin 526 ! kcin = tkcin1*|Vsurf| + tkcin2 if |V|>tv0cin ) 527 ! (Rq: formula discontinuous for |V|=tv0cin... ) 528 529 ! -- main: 530 if (ixt.eq.iso_HTO) then ! Tritium 531 tkcin0(ixt) = 0.01056 532 tkcin1(ixt) = 0.0005016 533 tkcin2(ixt) = 0.0014432 534 tnat(ixt)=0. 535 !toce(ixt)=2.2222E-8 ! corrigé par Alex Cauquoin 536 !toce(ixt)=1.0E-18 ! rapport 3H/1H ocean 537 toce(ixt)=4.0E-19 ! rapport T/H = 0.2 TU Dreisigacker and Roether 1978 538 tcorr(ixt)=1. 539 tdifrel(ixt)=1./0.968 540 talph1(ixt)=46480. 541 talph2(ixt)=-103.87 542 talph3(ixt)=0. 543 talps1(ixt)=46480. 544 talps2(ixt)=-103.87 545 alpha_liq_sol(ixt)=1. 546 Rdefault(ixt)=0.0 547 Rmethox(ixt)=0.0 548 striso(ixt)='HTO' 549 endif 550 if (ixt.eq.iso_O17) then ! Deuterium 551 pente_MWL=0.528 552 ! tdifrel(ixt)=1./0.985452 ! donné par Amaelle 553 tdifrel(ixt)=1./0.98555 ! valeur utilisée en 1D et dans modèle de LdG 554 ! fac_kcin=0.5145 ! donné par Amaelle 555 fac_kcin= (tdifrel(ixt)-1.0)/(tdifrel_O18-1.0) 556 tkcin0(ixt) = tkcin0_O18*fac_kcin 557 tkcin1(ixt) = tkcin1_O18*fac_kcin 558 tkcin2(ixt) = tkcin2_O18*fac_kcin 559 tnat(ixt)=0.004/100. ! O17 représente 0.004% de l'oxygène 560 toce(ixt)=tnat(ixt)*(1.0+deltaO18_oce/1000.0)**pente_MWL 561 tcorr(ixt)=1.0+fac_enrichoce18*pente_MWL ! donné par Amaelle 562 talph1(ixt)=talph1_O18 563 talph2(ixt)=talph2_O18 564 talph3(ixt)=talph3_O18 565 talps1(ixt)=talps1_O18 566 talps2(ixt)=talps2_O18 567 alpha_liq_sol(ixt)=(alpha_liq_sol_O18)**fac_coeff_eq17_liq 568 if (Rdefault_smow) then 569 Rdefault(ixt)=tnat(ixt)*(-3.15/1000.0+1.0) 570 else 571 Rdefault(ixt)=0.0 572 endif 573 Rmethox(ixt)=(230./1000.+1.)*tnat(ixt) !Zahn et al 2006 574 striso(ixt)='O17' 575 endif 576 577 if (ixt.eq.iso_O18) then ! Oxygene18 578 tkcin0(ixt) = tkcin0_O18 579 tkcin1(ixt) = tkcin1_O18 580 tkcin2(ixt) = tkcin2_O18 581 tnat(ixt)=2005.2E-6 582 toce(ixt)=tnat(ixt)*(1.0+deltaO18_oce/1000.0) 583 tcorr(ixt)=1.0+fac_enrichoce18 584 tdifrel(ixt)=tdifrel_O18 585 talph1(ixt)=talph1_O18 586 talph2(ixt)=talph2_O18 587 talph3(ixt)=talph3_O18 588 talps1(ixt)=talps1_O18 589 talps2(ixt)=talps2_O18 590 alpha_liq_sol(ixt)=alpha_liq_sol_O18 591 if (Rdefault_smow) then 592 Rdefault(ixt)=tnat(ixt)*(-6.0/1000.0+1.0) 593 else 594 Rdefault(ixt)=0.0 595 endif 596 Rmethox(ixt)=(130./1000.+1.)*tnat(ixt) !Zahn et al 2006 597 ! write(*,*) 'iso_init 163: ZXalpha_liq_sol=',ZXalpha_liq_sol 598 striso(ixt)='O18' 599 write(*,*) 'isotopes_mod 519: ixt,striso(ixt)=',ixt,striso(ixt) 600 endif 601 602 if (ixt.eq.iso_HDO) then ! Deuterium 603 pente_MWL=8.0 604 ! fac_kcin=0.88 605 tdifrel(ixt)=1./0.9755 606 fac_kcin= (tdifrel(ixt)-1)/(tdifrel_O18-1) 607 tkcin0(ixt) = tkcin0_O18*fac_kcin 608 tkcin1(ixt) = tkcin1_O18*fac_kcin 609 tkcin2(ixt) = tkcin2_O18*fac_kcin 610 tnat(ixt)=155.76E-6 611 toce(ixt)=tnat(ixt)*(1.0+pente_MWL*deltaO18_oce/1000.0) 612 tcorr(ixt)=1.0+fac_enrichoce18*pente_MWL 613 talph1(ixt)=24844. 614 talph2(ixt)=-76.248 615 talph3(ixt)=52.612E-3 616 talps1(ixt)=16288. 617 talps2(ixt)=-0.0934 618 !ZXalpha_liq_sol=1.0192 ! Weston, Ralph, 1955 619 alpha_liq_sol(ixt)=1.0212 620 ! valeur de Lehmann & Siegenthaler, 1991, Journal of 621 ! Glaciology, vol 37, p 23 622 if (Rdefault_smow) then 623 Rdefault(ixt)=tnat(ixt)*((-6.0*pente_MWL+10.0)/1000.0+1.0) 624 else 625 Rdefault(ixt)=0.0 626 endif 627 Rmethox(ixt)=tnat(ixt)*(-25.0/1000.+1.) ! Zahn et al 2006 628 striso(ixt)='HDO' 629 write(*,*) 'isotopes_mod 548: ixt,striso(ixt)=',ixt,striso(ixt) 630 endif 631 632 ! write(*,*) 'iso_init 163: ZXalpha_liq_sol=',ZXalpha_liq_sol 633 if (ixt.eq.iso_eau) then ! Oxygene16 634 tkcin0(ixt) = 0.0 635 tkcin1(ixt) = 0.0 636 tkcin2(ixt) = 0.0 637 tnat(ixt)=1. 638 toce(ixt)=tnat(ixt) 639 tcorr(ixt)=1.0 640 tdifrel(ixt)=1. 641 talph1(ixt)=0. 642 talph2(ixt)=0. 643 talph3(ixt)=0. 644 talps1(ixt)=0. 645 talph3(ixt)=0. 646 alpha_liq_sol(ixt)=1. 647 if (Rdefault_smow) then 648 Rdefault(ixt)=tnat(ixt)*1.0 649 else 650 Rdefault(ixt)=1.0 651 endif 652 Rmethox(ixt)=1.0 653 striso(ixt)='eau' 654 endif 655 656 999 continue 657 658 ! test de sensibilité: 659 if (ok_nocinsfc) then ! no kinetic effect in sfc evaporation 660 do ixt=1,niso 661 tkcin0(ixt) = 0.0 662 tkcin1(ixt) = 0.0 663 tkcin2(ixt) = 0.0 664 enddo 665 endif 666 667 ! nom des isotopes 668 669 ! verif 670 write(*,*) 'iso_init 285: verif initialisation:' 671 672 do ixt=1,niso 673 write(*,*) '* striso(',ixt,')=<'//striso(ixt)//'>' 674 write(*,*) 'tnat(',ixt,')=',tnat(ixt) 675 ! write(*,*) 'alpha_liq_sol(',ixt,')=',alpha_liq_sol(ixt) 676 ! write(*,*) 'tkcin0(',ixt,')=',tkcin0(ixt) 677 ! write(*,*) 'tdifrel(',ixt,')=',tdifrel(ixt) 678 enddo 679 write(*,*) 'iso_init 69: lambda=',lambda_sursat 680 write(*,*) 'iso_init 69: thumxt1=',thumxt1 681 write(*,*) 'iso_init 69: h_land_ice=',h_land_ice 682 write(*,*) 'iso_init 69: P_veg=',P_veg 683 684 return 251 CALL msg(' 315: A_satlim='//real2str(A_satlim), modname, A_satlim > 1.0) 252 IF(A_satlim > 1.0) STOP 253 #endif 254 ! CALL get_in('slope_limiterxy', slope_limiterxy, 2.0) 255 ! CALL get_in('slope_limiterz', slope_limiterz, 2.0) 256 CALL get_in('modif_ratqs', modif_ratqs, 0) 257 CALL get_in('Pcrit_ratqs', Pcrit_ratqs, 500.0) 258 CALL get_in('ratqsbasnew', ratqsbasnew, 0.05) 259 CALL get_in('fac_modif_evaoce', fac_modif_evaoce, 1.0) 260 CALL get_in('ok_bidouille_wake', ok_bidouille_wake, 0) 261 ! si oui, la temperature de cond est celle de l'environnement, pour eviter 262 ! bugs quand temperature dans ascendances convs est mal calculee 263 CALL get_in('cond_temp_env', cond_temp_env, .FALSE.) 264 IF(ANY(isoName == 'H[3]HO')) & 265 CALL get_in('ok_prod_nucl_tritium', ok_prod_nucl_tritium, .FALSE., .FALSE.) 266 267 !-------------------------------------------------------------- 268 ! Parameters that do not depend on the nature of water isotopes: 269 !-------------------------------------------------------------- 270 ! -- temperature at which ice condensate starts to form (valeur ECHAM?): 271 pxtmelt = 273.15 272 273 ! -- temperature at which all condensate is ice: 274 pxtice = 273.15-10.0 275 276 !- -- test PHASE 277 ! pxtmelt = 273.15 - 10.0 278 ! pxtice = 273.15 - 30.0 279 280 ! -- minimum temperature to calculate fractionation coeff 281 pxtmin = 273.15 - 120.0 ! On ne calcule qu'au dessus de -120°C 282 pxtmax = 273.15 + 60.0 ! On ne calcule qu'au dessus de +60°C 283 ! Remarque: les coeffs ont ete mesures seulement jusq'à -40! 284 285 ! -- a constant for alpha_eff for equilibrium below cloud base: 286 tdifexp = 0.58 287 tv0cin = 7.0 288 289 ! facteurs lambda et mu dans Si=musi-lambda*T 290 musi=1.0 291 if (ok_nocinsat) lambda_sursat = 0.0 ! no sursaturation effect 292 293 ! diffusion dans le sol 294 Kd=2.5e-9 ! m2/s 295 296 ! cas où cste_surf_cond: on met rhs ou/et Ts cste pour voir 297 rh_cste_surf_cond = 0.6 298 T_cste_surf_cond = 288.0 299 300 !-------------------------------------------------------------- 301 ! Parameters that depend on the nature of water isotopes: 302 !-------------------------------------------------------------- 303 ! Local constants 304 fac_enrichoce18 = 0.0005 ! Then: tcorO18 = 1 + fac_enrichoce18 305 ! tcorD = 1 + fac_enrichoce18*8 306 ! tcorO17 = 1 + fac_enrichoce18*0.528 307 alpha_liq_sol_O18 = 1.00291 ! From Lehmann & Siegenthaler, 1991, 308 ! Journal of Glaciology, vol 37, p 23 309 talph1_O18 = 1137. ; talph2_O18 = -0.4156 ; talph3_O18 = -2.0667E-3 310 talps1_O18 = 11.839 ; talps2_O18 = -0.028244 311 tkcin0_O18 = 0.006 ; tkcin1_O18 = 0.000285 ; tkcin2_O18 = 0.00082 312 tdifrel_O18 = 1./0.9723 313 314 ! ln(alphaeq) ratio between O18 and O17 315 fac_coeff_eq17_liq = 0.529 ! From Amaelle 316 !fac_coeff_eq17_ice = 0.528 ! slope MWL 317 fac_coeff_eq17_ice = 0.529 318 319 CALL msg('iso_O18, iso_HDO, iso_eau = '//TRIM(strStack(int2str([iso_O18, iso_HDO, iso_eau]))), modname) 320 321 !--- Kinetic factor for surface evaporation: 322 ! (cf: kcin = tkcin0 if |V|<tv0cin 323 ! kcin = tkcin1*|Vsurf| + tkcin2 if |V|>tv0cin ) 324 ! (Rq: formula discontinuous for |V|=tv0cin... ) 325 326 DO ixt = 1, niso 327 sxt=int2str(ixt) 328 WRITE(*,*) 'iso_init 80: ixt=',ixt 329 330 Rdefault(ixt) = 0.0 331 IF(ixt == iso_HTO) THEN !=== H[3]HO 332 tdifrel(ixt) = 1./0.968 333 tkcin0(ixt) = 0.01056 334 tkcin1(ixt) = 0.0005016 335 tkcin2(ixt) = 0.0014432 336 tnat (ixt) = 0. 337 toce (ixt) = 4.0E-19 ! Ratio T/H = 0.2 TU, Dreisigacker and Roether 1978 338 !toce (ixt) = 2.2222E-8 ! Corrected by Alex Cauquoin 339 !toce (ixt) = 1.0E-18 ! Ratio 3H/1H ocean 340 tcorr (ixt) = 1. 341 talph1(ixt) = 46480. ; talph2(ixt) = -103.87 ; talph3(ixt) = 0. 342 talps1(ixt) = 46480. ; talps2(ixt) = -103.87 343 alpha_liq_sol(ixt) = 1. 344 Rmethox(ixt) = 0.0 345 striso (ixt) = 'HTO' 346 ELSE IF(ixt == iso_O17) THEN !=== H2[17]O 347 tdifrel(ixt)=1./0.98555 ! Used in 1D and in LdG's model 348 !tdifrel(ixt)=1./0.985452 ! From Amaelle 349 !fac_kcin=0.5145 ! From Amaelle 350 fac_kcin= (tdifrel(ixt)-1.0)/(tdifrel_O18-1.0) 351 tkcin0(ixt) = tkcin0_O18*fac_kcin 352 tkcin1(ixt) = tkcin1_O18*fac_kcin 353 tkcin2(ixt) = tkcin2_O18*fac_kcin 354 tnat (ixt) = 0.004/100. ! O17 = 0.004% of oxygen 355 pente_MWL=0.528 356 toce (ixt) = tnat(ixt)*(1.0+deltaO18_oce/1000.0)**pente_MWL 357 tcorr (ixt) = 1.0+fac_enrichoce18*pente_MWL ! From Amaelle 358 talph1(ixt) = talph1_O18 ; talph2(ixt) = talph2_O18 ; talph3(ixt) = talph3_O18 359 talps1(ixt) = talps1_O18 ; talps2(ixt) = talps2_O18 360 alpha_liq_sol(ixt) = (alpha_liq_sol_O18)**fac_coeff_eq17_liq 361 IF(Rdefault_smow) Rdefault(ixt) = tnat(ixt)*(-3.15/1000.0+1.0) 362 Rmethox(ixt) = (230./1000.+1.)*tnat(ixt) ! Zahn et al 2006 363 striso (ixt) = 'O17' 364 ELSE IF(ixt == iso_O18) THEN !=== H2[18]O 365 tdifrel(ixt) = tdifrel_O18 366 tkcin0(ixt) = tkcin0_O18 367 tkcin1(ixt) = tkcin1_O18 368 tkcin2(ixt) = tkcin2_O18 369 tnat (ixt) = 2005.2E-6 370 toce (ixt) = tnat(ixt)*(1.0+deltaO18_oce/1000.0) 371 tcorr (ixt) = 1.0+fac_enrichoce18 372 talph1(ixt) = talph1_O18 ; talph2(ixt) = talph2_O18 ; talph3(ixt) = talph3_O18 373 talps1(ixt) = talps1_O18 ; talps2(ixt) = talps2_O18 374 alpha_liq_sol(ixt) = alpha_liq_sol_O18 375 IF(Rdefault_smow) Rdefault(ixt) = tnat(ixt)*(-6.0/1000.0+1.0) 376 Rmethox(ixt) = (130./1000.+1.)*tnat(ixt) ! Zahn et al 2006 377 striso (ixt) = 'O18' 378 CALL msg('519: ixt, striso(ixt) = '//TRIM(sxt)//', '//TRIM(striso(ixt)), modname) 379 ELSE IF(ixt == iso_HDO) THEN !=== H[2]HO 380 tdifrel(ixt) = 1./0.9755 381 !fac_kcin=0.88 382 fac_kcin= (tdifrel(ixt)-1.0)/(tdifrel_O18-1.0) 383 tkcin0(ixt) = tkcin0_O18*fac_kcin 384 tkcin1(ixt) = tkcin1_O18*fac_kcin 385 tkcin2(ixt) = tkcin2_O18*fac_kcin 386 tnat (ixt) = 155.76E-6 387 pente_MWL = 8.0 388 toce (ixt) = tnat(ixt)*(1.0+pente_MWL*deltaO18_oce/1000.0) 389 tcorr (ixt) = 1.0+fac_enrichoce18*pente_MWL 390 talph1(ixt) = 24844. ; talph2(ixt) = -76.248 ; talph3(ixt) = 52.612E-3 391 talps1(ixt) = 16288. ; talps2(ixt) = -0.0934 392 !alpha_liq_sol(ixt)=1.0192 ZX ! From Weston, Ralph, 1955 393 alpha_liq_sol(ixt)=1.0212 ! From Lehmann & Siegenthaler, 1991, 394 ! Journal of Glaciology, vol 37, p 23 395 IF(Rdefault_smow) Rdefault(ixt) = tnat(ixt)*((-6.0*pente_MWL+10.0)/1000.0+1.0) 396 Rmethox(ixt) = tnat(ixt)*(-25.0/1000.+1.) ! Zahn et al 2006 397 striso (ixt) = 'HDO' 398 CALL msg('548: ixt,striso(ixt) = '//TRIM(sxt)//', '//striso(ixt), modname) 399 ELSE IF(ixt == iso_eau) THEN !=== H2O[16] 400 tkcin0(ixt) = 0.0 401 tkcin1(ixt) = 0.0 402 tkcin2(ixt) = 0.0 403 tnat (ixt) = 1. 404 toce (ixt)=tnat(ixt) 405 tcorr (ixt) = 1.0 406 tdifrel(ixt) = 1. 407 talph1(ixt) = 0. ; talph2(ixt) = 0. ; talph3(ixt) = 0. 408 talps1(ixt) = 0. ; talph3(ixt) = 0. 409 alpha_liq_sol(ixt)=1. 410 IF(Rdefault_smow) Rdefault(ixt) = tnat(ixt)*1.0 411 Rmethox(ixt) = 1.0 412 striso(ixt) = 'eau' 413 END IF 414 END DO 415 416 !--- Sensitivity test: no kinetic effect in sfc evaporation 417 IF(ok_nocinsfc) THEN 418 tkcin0(1:niso) = 0.0 419 tkcin1(1:niso) = 0.0 420 tkcin2(1:niso) = 0.0 421 END IF 422 423 CALL msg('285: verif initialisation:', modname) 424 DO ixt=1,niso 425 CALL msg(' * striso('//TRIM(sxt)//') = <'//TRIM(striso(ixt))//'>', modname) 426 CALL msg( ' tnat('//TRIM(sxt)//') = '//TRIM(real2str(tnat(ixt))), modname) 427 ! CALL msg(' alpha_liq_sol('//TRIM(sxt)//') = '//TRIM(real2str(alpha_liq_sol(ixt))), modname) 428 ! CALL msg( ' tkcin0('//TRIM(sxt)//') = '//TRIM(real2str(tkcin0(ixt))), modname) 429 ! CALL msg( ' tdifrel('//TRIM(sxt)//') = '//TRIM(real2str(tdifrel(ixt))), modname) 430 END DO 431 CALL msg('69: lambda = '//TRIM(real2str(lambda_sursat)), modname) 432 CALL msg('69: thumxt1 = '//TRIM(real2str(thumxt1)), modname) 433 CALL msg('69: h_land_ice = '//TRIM(real2str(h_land_ice)), modname) 434 CALL msg('69: P_veg = '//TRIM(real2str(P_veg)), modname) 435 685 436 END SUBROUTINE iso_init 686 437 438 439 SUBROUTINE getinp_s(nam, val, def, lDisp) 440 USE ioipsl_getincom, ONLY: getin 441 USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root 442 USE mod_phys_lmdz_omp_data, ONLY : is_omp_root 443 USE mod_phys_lmdz_transfert_para, ONLY : bcast 444 CHARACTER(LEN=*), INTENT(IN) :: nam 445 CHARACTER(LEN=*), INTENT(INOUT) :: val 446 CHARACTER(LEN=*), INTENT(IN) :: def 447 LOGICAL, OPTIONAL, INTENT(IN) :: lDisp 448 LOGICAL :: lD 449 !$OMP BARRIER 450 IF(.NOT.(is_mpi_root.AND.is_omp_root)) RETURN 451 val=def; CALL getin(nam,val); CALL bcast(val) 452 lD=.TRUE.; IF(PRESENT(lDisp)) lD=lDisp 453 IF(lD) CALL msg(TRIM(nam)//' = '//TRIM(val)) 454 END SUBROUTINE getinp_s 455 456 SUBROUTINE getinp_i(nam, val, def, lDisp) 457 USE ioipsl_getincom, ONLY: getin 458 USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root 459 USE mod_phys_lmdz_omp_data, ONLY : is_omp_root 460 USE mod_phys_lmdz_transfert_para, ONLY : bcast 461 CHARACTER(LEN=*), INTENT(IN) :: nam 462 INTEGER, INTENT(INOUT) :: val 463 INTEGER, INTENT(IN) :: def 464 LOGICAL, OPTIONAL, INTENT(IN) :: lDisp 465 LOGICAL :: lD 466 !$OMP BARRIER 467 IF(.NOT.(is_mpi_root.AND.is_omp_root)) RETURN 468 val=def; CALL getin(nam,val); CALL bcast(val) 469 lD=.TRUE.; IF(PRESENT(lDisp)) lD=lDisp 470 IF(lD) CALL msg(TRIM(nam)//' = '//TRIM(int2str(val))) 471 END SUBROUTINE getinp_i 472 473 SUBROUTINE getinp_r(nam, val, def, lDisp) 474 USE ioipsl_getincom, ONLY: getin 475 USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root 476 USE mod_phys_lmdz_omp_data, ONLY : is_omp_root 477 USE mod_phys_lmdz_transfert_para, ONLY : bcast 478 CHARACTER(LEN=*), INTENT(IN) :: nam 479 REAL, INTENT(INOUT) :: val 480 REAL, INTENT(IN) :: def 481 LOGICAL, OPTIONAL, INTENT(IN) :: lDisp 482 LOGICAL :: lD 483 !$OMP BARRIER 484 IF(.NOT.(is_mpi_root.AND.is_omp_root)) RETURN 485 val=def; CALL getin(nam,val); CALL bcast(val) 486 lD=.TRUE.; IF(PRESENT(lDisp)) lD=lDisp 487 IF(lD) CALL msg(TRIM(nam)//' = '//TRIM(real2str(val))) 488 END SUBROUTINE getinp_r 489 490 SUBROUTINE getinp_l(nam, val, def, lDisp) 491 USE ioipsl_getincom, ONLY: getin 492 USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root 493 USE mod_phys_lmdz_omp_data, ONLY : is_omp_root 494 USE mod_phys_lmdz_transfert_para, ONLY : bcast 495 CHARACTER(LEN=*), INTENT(IN) :: nam 496 LOGICAL, INTENT(INOUT) :: val 497 LOGICAL, INTENT(IN) :: def 498 LOGICAL, OPTIONAL, INTENT(IN) :: lDisp 499 LOGICAL :: lD 500 !$OMP BARRIER 501 IF(.NOT.(is_mpi_root.AND.is_omp_root)) RETURN 502 val=def; CALL getin(nam,val); CALL bcast(val) 503 lD=.TRUE.; IF(PRESENT(lDisp)) lD=lDisp 504 IF(lD) CALL msg(TRIM(nam)//' = '//TRIM(bool2str(val))) 505 END SUBROUTINE getinp_l 687 506 688 507 END MODULE isotopes_mod -
LMDZ6/trunk/libf/phylmdiso/isotopes_routines_mod.F90
r4089 r4143 3 3 4 4 MODULE isotopes_routines_mod 5 USE infotrac_phy, ONLY: niso, ntraciso=>ntiso, index_trac=>itZonIso, ntraceurs_zone=>nzone 5 6 IMPLICIT NONE 6 7 … … 13 14 & zqs,zq_ancien,zqev_diag,zq) 14 15 15 USE infotrac_phy, ONLY: ntraciso,niso, &16 ntraceurs_zone,index_trac17 16 USE isotopes_mod, ONLY: ridicule, ridicule_rain, thumxt1, no_pce, & 18 17 & bidouille_anti_divergence, & … … 846 845 & L, xtnu,Pveg) 847 846 848 USE infotrac_phy, ONLY: niso849 847 USE isotopes_mod, ONLY: ridicule_qsol, ridicule, & 850 848 & ridicule_evap,P_veg,iso_HDO,iso_eau,iso_O17,iso_O18 … … 1301 1299 1302 1300 subroutine calcul_kcin(Vsurf,KCIN) 1303 USE infotrac_phy, ONLY: niso1304 1301 USE isotopes_mod, ONLY: tv0cin,tkcin0,tkcin1,tkcin2 1305 1302 implicit none … … 1328 1325 1329 1326 subroutine fractcalk(kt, ptin, pxtfra, pfraice) 1330 !USE infotrac_phy, ONLY: use_iso1331 1327 USE isotopes_mod, ONLY: talph1,talph2,talph3,pxtmin,iso_O17, & 1332 1328 & fac_coeff_eq17_liq, pxtmelt, & … … 1457 1453 subroutine fractcalk_liq(kt, ptin, pxtfra) 1458 1454 1459 ! USE infotrac_phy, ONLY: use_iso1460 1455 USE isotopes_mod, ONLY: pxtmin,talph1,talph2,talph3, & 1461 1456 & fac_coeff_eq17_liq, pxtice, & … … 1522 1517 subroutine fractcalk_glace(kt, ptin, pfraice) 1523 1518 1524 ! use infotrac_phy, ONLY: use_iso1525 1519 use isotopes_mod, ONLY: talps1,talps2, iso_O17,fac_coeff_eq17_ice, & 1526 1520 & pxtmelt,musi, lambda_sursat, tdifrel, & … … 1631 1625 subroutine fractcalk_vectall(ptin, pxtfra, pfraice,n) 1632 1626 1633 USE infotrac_phy, ONLY: niso1634 1627 USE isotopes_mod, ONLY: talph1,talph2,talph3,tdifrel,pxtmin, & 1635 1628 & iso_O17, iso_HTO, iso_eau, iso_O18, iso_HDO, musi, lambda_sursat, & … … 1803 1796 subroutine fractcalk_vectall_liq(ptin, pxtfra, n) 1804 1797 1805 USE infotrac_phy, ONLY: niso1806 1798 USE isotopes_mod, ONLY: pxtmin,talph1,talph2,talph3, & 1807 1799 & iso_eau,iso_HDO, iso_O18, iso_O17,iso_HTO,fac_coeff_eq17_liq, & … … 1882 1874 subroutine fractcalk_vectall_ice(ptin, pfraice,n) 1883 1875 1884 use infotrac_phy, ONLY: niso1885 1876 use isotopes_mod, ONLY: talps1,talps2, fac_coeff_eq17_ice, & 1886 1877 & pxtmelt,musi, lambda_sursat, tdifrel, & … … 2023 2014 & i,Rsol,klon) 2024 2015 2025 USE infotrac_phy, ONLY: niso,ntraciso2026 2016 USE isotopes_mod, ONLY: iso_eau, iso_HDO,ridicule, & 2027 2017 & ridicule_qsol,iso_O17,iso_O18 … … 2233 2223 & i,xtevap,klon) 2234 2224 2235 USE infotrac_phy, ONLY: ntraciso,niso2236 2225 USE isotopes_mod, ONLY: iso_eau, iso_HDO,ridicule,ridicule_rain, & 2237 2226 iso_O18,iso_O17 … … 2444 2433 & ) 2445 2434 2446 USE infotrac_phy, ONLY: ntraciso,niso2447 2435 USE isotopes_mod, ONLY: iso_eau, iso_HDO,expb_max,tdifrel,tdifexp, & 2448 2436 & ridicule,thumxt1,ridicule_rain,bidouille_anti_divergence, & … … 4500 4488 & Tevap) 4501 4489 4502 USE infotrac_phy, ONLY: niso,ntraciso4503 4490 USE isotopes_mod, ONLY: iso_eau, iso_HDO,bidouille_anti_divergence, & 4504 4491 & ridicule,ridicule_rain … … 4658 4645 & ,fac_ftmr) 4659 4646 4660 USE infotrac_phy, ONLY: niso,ntraciso4661 4647 USE isotopes_mod, ONLY: iso_eau, iso_HDO,bidouille_anti_divergence, & 4662 4648 & Rdefault,ridicule,ridicule_rain … … 4904 4890 & Pqiinf_cas,Pqiinf) 4905 4891 4906 USE infotrac_phy, ONLY: niso,ntraciso4907 4892 USE isotopes_mod, ONLY: iso_eau, iso_HDO 4908 4893 … … 5066 5051 & xtnew_cas,xtnew,Pxtiinf_cas,Pxtiinf) 5067 5052 5068 USE infotrac_phy, ONLY: niso5069 5053 USE isotopes_mod, ONLY: iso_eau, iso_HDO 5070 5054 #ifdef ISOVERIF … … 5111 5095 & ncum) 5112 5096 5113 USE infotrac_phy, ONLY: niso,ntraciso5114 5097 USE isotopes_mod, ONLY: iso_eau, iso_HDO 5115 5098 … … 5176 5159 & nloc,ncum,nd,i) 5177 5160 5178 USE infotrac_phy, ONLY: niso, ntraciso5179 5161 USE isotopes_mod, ONLY: iso_eau, iso_HDO 5180 5162 … … 5252 5234 & nloc,ncum,nd,i) 5253 5235 5254 USE infotrac_phy, ONLY: niso,ntraciso5255 5236 USE isotopes_mod, ONLY: iso_eau, iso_HDO 5256 5237 … … 5326 5307 & nloc,ncum,nd,i) 5327 5308 5328 USE infotrac_phy, ONLY: niso,ntraciso5329 5309 USE isotopes_mod, ONLY: iso_eau, iso_HDO 5330 5310 … … 5396 5376 & nloc,ncum,nd,i) 5397 5377 5398 USE infotrac_phy, ONLY: niso,ntraciso5399 5378 USE isotopes_mod, ONLY: iso_eau, iso_HDO,ridicule 5400 5379 … … 5566 5545 & nloc,ncum,nd,i,frac_sublim) 5567 5546 5568 USE infotrac_phy, ONLY: niso,ntraciso5569 5547 USE isotopes_mod, ONLY: iso_eau, iso_HDO,ridicule 5570 5548 … … 5703 5681 & zxtrfln_cas,zxt_cas,zxtrfl,zxtrfln,zxt,klon) 5704 5682 5705 USE infotrac_phy, ONLY: niso,ntraciso5706 5683 USE isotopes_mod, ONLY: iso_eau, iso_HDO 5707 5684 … … 5739 5716 & delP,paprs,k,klon,klev) 5740 5717 5741 USE infotrac_phy, ONLY: niso5742 5718 USE isotopes_mod, ONLY: iso_eau, iso_HDO 5743 5719 implicit none … … 5777 5753 & delP,paprs,k,klon,klev) 5778 5754 5779 USE infotrac_phy, ONLY: niso,ntraciso5780 5755 USE isotopes_mod, ONLY: iso_eau, iso_HDO 5781 5756 implicit none … … 5828 5803 & delP,paprs,k,klon,klev,frac_sublim) 5829 5804 5830 USE infotrac_phy, ONLY: niso,ntraciso5831 5805 USE isotopes_mod, ONLY: iso_eau, iso_HDO 5832 5806 #ifdef ISOVERIF … … 5905 5879 & qp0,A,m0,beta,gama,g0) 5906 5880 5907 USE infotrac_phy, ONLY: niso5908 5881 USE isotopes_mod, ONLY: iso_eau, iso_HDO,ntot 5909 5882 #ifdef ISOVERIF … … 6100 6073 6101 6074 6102 USE infotrac_phy, ONLY: ntraciso,niso,ntraceurs_zone, &6103 & index_trac6104 6075 USE isotopes_mod, ONLY: iso_eau, iso_HDO,thumxt1, & 6105 6076 & bidouille_anti_divergence,ridicule … … 7680 7651 & ) 7681 7652 7682 USE infotrac_phy, ONLY: niso,ntraciso7683 7653 USE isotopes_mod, ONLY: iso_eau, iso_HDO, Rdefault, ridicule 7684 7654 #ifdef ISOVERIF … … 8048 8018 & ) 8049 8019 8050 USE infotrac_phy, ONLY: niso,ntraciso8051 8020 USE isotopes_mod, ONLY: iso_eau, iso_HDO, Rdefault,ridicule 8052 8021 #ifdef ISOVERIF … … 8253 8222 & ) 8254 8223 8255 USE infotrac_phy, ONLY: niso,ntraciso8256 8224 USE isotopes_mod, ONLY: iso_eau, iso_HDO, Rdefault,ridicule 8257 8225 #ifdef ISOVERIF … … 8390 8358 & ,xtp_cas,xtwater_cas,xtevap_cas) 8391 8359 8392 USE infotrac_phy, ONLY: niso,ntraciso8393 8360 USE isotopes_mod, ONLY: iso_eau, iso_HDO,no_pce, Rdefault,ridicule 8394 8361 #ifdef ISOVERIF … … 8927 8894 & ,xtp_cas,xtwater_cas,xtevap_cas) 8928 8895 8929 USE infotrac_phy, ONLY: niso,ntraciso8930 8896 USE isotopes_mod, ONLY: iso_eau, iso_HDO, Rdefault, ridicule 8931 8897 #ifdef ISOVERIF … … 9317 9283 9318 9284 9319 USE infotrac_phy, ONLY: niso,ntraciso, &9320 & ntraceurs_zone,index_trac9321 9285 USE isotopes_mod, ONLY: iso_eau, iso_HDO,bidouille_anti_divergence, & 9322 9286 & thumxt1, ridicule … … 11022 10986 & ) 11023 10987 11024 USE infotrac_phy, ONLY: niso,ntraciso11025 10988 USE isotopes_mod, ONLY: iso_eau, iso_HDO,Rdefault,ridicule 11026 10989 #ifdef ISOVERIF … … 11172 11135 & ,xtp_cas,xtwater_cas,xtevap_cas) 11173 11136 11174 USE infotrac_phy, ONLY: niso,ntraciso11175 11137 USE isotopes_mod, ONLY: iso_eau, iso_HDO,Rdefault,no_pce,ridicule 11176 11138 #ifdef ISOVERIF … … 11770 11732 & ,xtp_cas,xtwater_cas,xtevap_cas) 11771 11733 11772 USE infotrac_phy, ONLY: niso,ntraciso11773 11734 USE isotopes_mod, ONLY: iso_eau, iso_HDO, Rdefault, ridicule 11774 11735 #ifdef ISOVERIF … … 12198 12159 & tcond,zfice,zxtice,zxtliq) 12199 12160 12200 USE infotrac_phy, ONLY: ntraciso,niso12201 12161 USE isotopes_mod, ONLY: iso_eau,iso_HDO,essai_convergence, & 12202 12162 & bidouille_anti_divergence,ridicule … … 12432 12392 & tcond,zfice,zxtice,zxtliq,n) 12433 12393 12434 USE infotrac_phy, ONLY: ntraciso,niso12435 12394 USE isotopes_mod, ONLY: iso_eau,iso_HDO,iso_O18,bidouille_anti_divergence, & 12436 12395 & ridicule … … 12890 12849 & tcond,zfice,zxtice,zxtliq) 12891 12850 12892 USE infotrac_phy, ONLY: ntraciso12893 12851 USE isotopes_mod, ONLY: iso_eau,iso_HDO,bidouille_anti_divergence, & 12894 12852 & ridicule,iso_O18 … … 13088 13046 & xt1lay,q1lay,tsurf,t_coup,nisurf,Rland_ice) 13089 13047 13090 USE infotrac_phy, ONLY: ntraciso,niso13091 13048 USE isotopes_mod, ONLY: Rdefault,iso_eau,iso_HDO, & 13092 13049 & bidouille_anti_divergence, ridicule,ridicule_snow, & … … 13658 13615 & ) 13659 13616 13660 USE infotrac_phy, ONLY: ntraciso,niso13661 13617 USE isotopes_mod, ONLY: iso_eau,iso_HDO,cste_surf_cond, & 13662 13618 & rh_cste_surf_cond,Rdefault,T_cste_surf_cond,iso_O17,iso_O18, & … … 13982 13938 & ) 13983 13939 13984 USE infotrac_phy, ONLY: ntraciso,niso13985 13940 USE isotopes_mod, ONLY: tcorr, toce, alpha_liq_sol,ridicule_evap, & 13986 13941 iso_eau,iso_HDO … … 14238 14193 & ) 14239 14194 14240 USE infotrac_phy, ONLY: ntraciso,niso14241 14195 USE isotopes_mod, ONLY: h_land_ice, ridicule,ridicule_snow,ridicule_evap, & 14242 14196 iso_eau,iso_HDO,iso_O18 … … 14573 14527 & ) 14574 14528 14575 USE infotrac_phy, ONLY: niso,ntraciso14576 14529 USE isotopes_mod, ONLY: tdifrel,tdifexp_sol, iso_eau, iso_HDO, & 14577 14530 & bidouille_anti_divergence,ruissellement_pluie, Rdefault,Kd, & … … 16001 15954 !USE write_field_phy 16002 15955 USE indice_sol_mod, only: nbsrf 16003 USE infotrac_phy, ONLY: ntraciso,niso16004 15956 USE isotopes_mod, ONLY: initialisation_iso, iso_eau,iso_HDO, & 16005 15957 ridicule_qsol,tnat, P_veg,iso_O18,ridicule, ridicule_snow,iso_O17, & … … 16187 16139 !USE write_field_phy 16188 16140 USE indice_sol_mod, only: nbsrf 16189 USE infotrac_phy, ONLY: ntraciso,niso16190 16141 USE isotopes_mod, ONLY: tnat,iso_HDO,iso_O18,iso_HTO, iso_eau,toce, & 16191 16142 & Rdefault,iso_O17,ridicule,ridicule_qsol … … 16574 16525 !USE write_field_phy 16575 16526 USE indice_sol_mod, only: nbsrf 16576 USE infotrac_phy, ONLY: ntraciso,niso16577 16527 USE isotopes_mod, ONLY: striso,iso_HDO,iso_eau 16578 16528 #ifdef ISOVERIF … … 16849 16799 & d_xt_decroiss, & 16850 16800 & xt_seri) 16851 USE infotrac_phy, only: ntraciso16852 16801 USE isotopes_mod, only: iso_HTO,ok_prod_nucl_tritium 16853 16802 USE dimphy, only: klon,klev … … 18371 18320 ! & prod_nucl_HTO) 18372 18321 18373 USE infotrac_phy, only: ntraciso18374 18322 use isotopes_mod, only: nessai, lat_nucl, lon_nucl, & 18375 18323 & zmin_nucl, zmax_nucl, HTO_nucl … … 18593 18541 & paprs, & 18594 18542 & prod_nucl) 18595 USE infotrac_phy, only: ntraciso18596 18543 USE isotopes_mod, ONLY: iso_HTO 18597 18544 use geometry_mod, only: cell_area … … 18739 18686 & tcond,zfice,zxtice,zxtliq) 18740 18687 18741 USE infotrac_phy, ONLY: ntraciso,niso,index_trac,ntraceurs_zone18742 18688 USE isotopes_mod, ONLY: iso_eau,iso_HDO,essai_convergence, & 18743 18689 & bidouille_anti_divergence,ridicule … … 18869 18815 & tcond,zfice,zxtice,zxtliq,n) 18870 18816 18871 USE infotrac_phy, ONLY: ntraciso,niso,index_trac,ntraceurs_zone18872 18817 USE isotopes_mod, ONLY: iso_eau,iso_HDO,iso_O18,bidouille_anti_divergence, & 18873 18818 & ridicule -
LMDZ6/trunk/libf/phylmdiso/isotopes_verif_mod.F90
r4050 r4143 5 5 MODULE isotopes_verif_mod 6 6 !use isotopes_mod, ONLY: 7 !#ifdef ISOTRAC 8 !use isotrac_mod, ONLY: 9 !#endif 7 #ifdef ISOTRAC 8 USE isotrac_mod, ONLY: nzone 9 #endif 10 USE infotrac_phy, ONLY: ntraciso=>ntiso, niso, itZonIso 10 11 implicit none 11 12 save … … 93 94 SUBROUTINE iso_verif_init() 94 95 use ioipsl_getin_p_mod, ONLY : getin_p 95 !USE infotrac_phy, ONLY: use_iso96 96 use isotopes_mod, ONLY: iso_O17, iso_O18, iso_HDO 97 97 implicit none … … 196 196 197 197 subroutine iso_verif_aberrant(R,err_msg) 198 !USE infotrac_phy, ONLY: use_iso199 198 use isotopes_mod, ONLY: ridicule, iso_HDO 200 199 implicit none … … 227 226 228 227 subroutine iso_verif_aberrant_encadre(R,err_msg) 229 !use infotrac_phy, ONLY: use_iso230 228 use isotopes_mod, ONLY: ridicule, iso_HDO 231 229 implicit none … … 263 261 264 262 subroutine iso_verif_aberrant_choix(xt,q,qmin,deltaDmax,err_msg) 265 !use infotrac_phy, ONLY: use_iso266 263 use isotopes_mod, ONLY: iso_HDO 267 264 implicit none … … 298 295 299 296 function iso_verif_aberrant_nostop(R,err_msg) 300 !use infotrac_phy, ONLY: use_iso301 297 use isotopes_mod, ONLY: ridicule,iso_HDO 302 298 implicit none … … 330 326 331 327 function iso_verif_aberrant_enc_nostop(R,err_msg) 332 !use infotrac_phy, ONLY: use_iso333 328 use isotopes_mod, ONLY: ridicule,iso_HDO 334 329 implicit none … … 366 361 & qmin,deltaDmax,err_msg) 367 362 368 !use infotrac_phy, ONLY: use_iso369 363 use isotopes_mod, ONLY: iso_HDO 370 364 implicit none … … 428 422 function iso_verif_aberrant_enc_choix_nostop(xt,q, & 429 423 & qmin,deltaDmax,err_msg) 430 !use infotrac_phy, ONLY: use_iso431 424 use isotopes_mod, ONLY: iso_HDO 432 425 implicit none … … 1065 1058 ! ********** 1066 1059 function deltaD(R) 1067 !use infotrac_phy, ONLY: use_iso1068 1060 USE isotopes_mod, ONLY: tnat,iso_HDO 1069 1061 implicit none … … 1082 1074 ! ********** 1083 1075 function deltaO(R) 1084 !use infotrac_phy, ONLY: use_iso1085 1076 USE isotopes_mod, ONLY: tnat,iso_O18 1086 1077 implicit none … … 1098 1089 ! ********** 1099 1090 function dexcess(RD,RO) 1100 !use infotrac_phy, ONLY: use_iso1101 1091 USE isotopes_mod, ONLY: tnat,iso_O18,iso_HDO 1102 1092 implicit none … … 1138 1128 ! ********** 1139 1129 function o17excess(R17,R18) 1140 !use infotrac_phy, ONLY: use_iso1141 1130 USE isotopes_mod, ONLY: tnat,iso_O18,iso_O17 1142 1131 implicit none … … 1160 1149 & xt,q,err_msg,ni,n,m) 1161 1150 1162 !use infotrac_phy, ONLY: use_iso1163 1151 USE isotopes_mod, ONLY: iso_eau 1164 1152 implicit none … … 1212 1200 & xt,q,err_msg,ni,n) 1213 1201 1214 !use infotrac_phy, ONLY: use_iso1215 1202 USE isotopes_mod, ONLY: iso_eau 1216 1203 implicit none … … 1296 1283 subroutine iso_verif_aberrant_vect2D( & 1297 1284 & xt,q,err_msg,ni,n,m) 1298 !use infotrac_phy, ONLY: use_iso1299 1285 use isotopes_mod, ONLY: ridicule,tnat,iso_HDO 1300 1286 implicit none … … 1345 1331 & xt,q,err_msg,ni,n,m) 1346 1332 1347 !use infotrac_phy, ONLY: use_iso1348 1333 use isotopes_mod, ONLY: ridicule,tnat,iso_HDO 1349 1334 implicit none … … 1399 1384 & xt,q,err_msg,ni,n,m) 1400 1385 1401 !use infotrac_phy, ONLY: use_iso1402 1386 use isotopes_mod, ONLY: ridicule,tnat,iso_HDO 1403 1387 implicit none … … 1450 1434 & xt,q,err_msg,ni,n,m,deltaDmax) 1451 1435 1452 !use infotrac_phy, ONLY: use_iso1453 1436 use isotopes_mod, ONLY: ridicule,tnat,iso_HDO 1454 1437 implicit none … … 1501 1484 & xt,q,err_msg,ni,n,m) 1502 1485 1503 !use infotrac_phy, ONLY: use_iso1504 1486 use isotopes_mod, ONLY: ridicule,tnat,iso_HDO,iso_O18 1505 1487 implicit none … … 1766 1748 & xt,q,err_msg,ni,n,m,ib,ie) 1767 1749 1768 !use infotrac_phy, ONLY: use_iso1769 1750 use isotopes_mod, ONLY: ridicule,tnat,iso_HDO 1770 1751 implicit none … … 1817 1798 & xt,q,err_msg,ni,n,m,ib,ie) 1818 1799 1819 !use infotrac_phy, ONLY: use_iso1820 1800 USE isotopes_mod, ONLY: iso_eau 1821 1801 implicit none … … 1863 1843 function iso_verif_traceur_choix_nostop(x,err_msg, & 1864 1844 & errmax,errmaxrel,ridicule_trac,deltalimtrac) 1865 USE infotrac_phy, ONLY: ntraciso1866 1845 use isotopes_mod, ONLY: iso_HDO 1867 1846 implicit none … … 1915 1894 function iso_verif_tracnps_choix_nostop(x,err_msg, & 1916 1895 & errmax,errmaxrel,ridicule_trac,deltalimtrac) 1917 USE infotrac_phy, ONLY: ntraciso1918 1896 USE isotopes_mod, ONLY: iso_HDO 1919 1897 implicit none … … 1961 1939 1962 1940 function iso_verif_tracpos_choix_nostop(x,err_msg,seuil) 1963 use infotrac_phy, ONLY: ntraciso,niso1964 1941 use isotrac_mod, only: index_iso,strtrac,index_zone 1965 1942 use isotopes_mod, only: striso … … 1994 1971 1995 1972 function iso_verif_traceur_noNaN_nostop(x,err_msg) 1996 use infotrac_phy, ONLY: ntraciso,niso1997 1973 use isotrac_mod, only: index_iso 1998 1974 use isotopes_mod, only: striso … … 2029 2005 & errmaxin,errmaxrelin) 2030 2006 2031 use infotrac_phy, ONLY: index_trac,ntraciso,niso2032 2007 use isotopes_mod, ONLY: ridicule,striso 2033 use isotrac_mod, only: ntraceurs_zone2034 2008 ! on vérifie juste bilan de masse 2035 2009 implicit none … … 2053 2027 2054 2028 xtractot=0.0 2055 do izone=1,n traceurs_zone2056 ixt=i ndex_trac(izone,iiso)2029 do izone=1,nzone 2030 ixt=itZonIso(izone,iiso) 2057 2031 xtractot=xtractot+x(ixt) 2058 enddo !do izone=1,ntraceurs_zone2032 enddo 2059 2033 2060 2034 if (iso_verif_egalite_choix_nostop(xtractot,x(iiso), & … … 2082 2056 & ridicule_trac,deltalimtrac) 2083 2057 2084 use infotrac_phy, ONLY: index_trac,ntraciso2085 2058 USE isotopes_mod, ONLY: iso_eau, iso_HDO 2086 use isotrac_mod, only: strtrac ,ntraceurs_zone2059 use isotrac_mod, only: strtrac 2087 2060 ! on vérifie juste deltaD 2088 2061 implicit none … … 2103 2076 2104 2077 if ((iso_eau.gt.0).and.(iso_HDO.gt.0)) then 2105 do izone=1,n traceurs_zone2106 ieau=i ndex_trac(izone,iso_eau)2107 ixt=i ndex_trac(izone,iso_HDO)2078 do izone=1,nzone 2079 ieau=itZonIso(izone,iso_eau) 2080 ixt=itZonIso(izone,iso_HDO) 2108 2081 2109 2082 if (iso_verif_aberrant_choix_nostop(x(ixt),x(ieau), & … … 2118 2091 ! : //strtrac(izone)) 2119 2092 ! endif 2120 enddo !do izone=1,n traceurs_zone2093 enddo !do izone=1,nzone 2121 2094 endif ! if ((iso_eau.gt.0).and.(iso_HDO.gt.0)) then 2122 2095 … … 2124 2097 2125 2098 INTEGER FUNCTION iso_verif_tag17_q_deltaD_chns(x,err_msg) RESULT(res) 2126 USE infotrac_phy, ONLY: index_trac, ntraciso2127 2099 USE isotopes_mod, ONLY: iso_HDO, iso_eau, ridicule 2128 2100 USE isotrac_mod, ONLY: nzone_temp, option_traceurs … … 2135 2107 !--- Check whether * deltaD(highest tagging layer) < 200 permil 2136 2108 ! * q < 2137 ieau=i ndex_trac(nzone_temp,iso_eau)2138 ixt=i ndex_trac(nzone_temp,iso_HDO)2109 ieau=itZonIso(nzone_temp,iso_eau) 2110 ixt=itZonIso(nzone_temp,iso_HDO) 2139 2111 IF(x(ieau)>ridicule) THEN 2140 2112 IF(iso_verif_positif_nostop(-200.0-deltaD(x(ixt)/x(ieau)), err_msg//': deltaDt05 trop fort')==1) THEN … … 2147 2119 !--- Check whether q is small ; then, qt01 < 10% 2148 2120 IF(x(iso_eau)<2.0e-3) THEN 2149 ieau1= i ndex_trac(1,iso_eau)2121 ieau1= itZonIso(1,iso_eau) 2150 2122 IF(iso_verif_positif_nostop(0.1-(x(ieau1)/x(iso_eau)),err_msg//': qt01 trop abondant')==1) THEN 2151 2123 res=1; write(*,*) 'x=',x … … 2156 2128 SUBROUTINE iso_verif_trac17_q_deltaD(x,err_msg) 2157 2129 USE isotrac_mod, ONLY: nzone_temp, option_traceurs 2158 USE infotrac_phy, ONLY: ntraciso2159 2130 IMPLICIT NONE 2160 2131 REAL, INTENT(IN) :: x(ntraciso) … … 2167 2138 2168 2139 subroutine iso_verif_traceur(x,err_msg) 2169 USE infotrac_phy, ONLY: ntraciso2170 2140 use isotrac_mod, only: ridicule_trac 2171 2141 implicit none … … 2195 2165 subroutine iso_verif_traceur_retourne3D(x,n1,n2,n3, & 2196 2166 & i1,i2,i3,err_msg) 2197 USE infotrac_phy, ONLY: ntraciso2198 2167 use isotrac_mod, only: ridicule_trac 2199 2168 … … 2228 2197 subroutine iso_verif_traceur_retourne4D(x,n1,n2,n3,n4, & 2229 2198 & i1,i2,i3,i4,err_msg) 2230 USE infotrac_phy, ONLY: ntraciso2231 2199 use isotrac_mod, only: ridicule_trac 2232 2200 … … 2262 2230 subroutine iso_verif_traceur_retourne2D(x,n1,n2, & 2263 2231 & i1,i2,err_msg) 2264 USE infotrac_phy, ONLY: ntraciso2265 2232 use isotrac_mod, only: ridicule_trac 2266 2233 implicit none … … 2293 2260 2294 2261 subroutine iso_verif_traceur_vect(x,n,m,err_msg) 2295 USE infotrac_phy, ONLY: ntraciso2296 2262 USE isotopes_mod, ONLY: iso_HDO 2297 2263 implicit none … … 2329 2295 2330 2296 subroutine iso_verif_tracnps_vect(x,n,m,err_msg) 2331 USE infotrac_phy, ONLY: ntraciso2332 2297 USE isotopes_mod, ONLY: iso_HDO 2333 2298 implicit none … … 2363 2328 2364 2329 subroutine iso_verif_traceur_noNaN_vect(x,n,m,err_msg) 2365 USE infotrac_phy, ONLY: ntraciso,niso2366 2330 implicit none 2367 2331 … … 2407 2371 subroutine iso_verif_trac_masse_vect(x,n,m,err_msg, & 2408 2372 & errmax,errmaxrel) 2409 USE infotrac_phy, ONLY: index_trac,ntraciso,niso2410 2373 use isotopes_mod, only: striso 2411 use isotrac_mod, only: ntraceurs_zone2412 2374 implicit none 2413 2375 … … 2430 2392 xtractot(i,j)=0.0 2431 2393 xiiso(i,j)=x(iiso,i,j) 2432 do izone=1,n traceurs_zone2433 ixt=i ndex_trac(izone,iiso)2394 do izone=1,nzone 2395 ixt=itZonIso(izone,iiso) 2434 2396 xtractot(i,j)=xtractot(i,j)+x(ixt,i,j) 2435 enddo !do izone=1,n traceurs_zone2397 enddo !do izone=1,nzone 2436 2398 enddo !do i=1,n 2437 2399 enddo !do j=1,m … … 2447 2409 2448 2410 subroutine iso_verif_tracdd_vect(x,n,m,err_msg) 2449 use infotrac_phy, only: index_trac,ntraciso,niso2450 2411 use isotopes_mod, only: iso_HDO,iso_eau 2451 use isotrac_mod, only: strtrac ,ntraceurs_zone2412 use isotrac_mod, only: strtrac 2452 2413 implicit none 2453 2414 … … 2464 2425 2465 2426 if (iso_HDO.gt.0) then 2466 do izone=1,n traceurs_zone2467 ieau=i ndex_trac(izone,iso_eau)2427 do izone=1,nzone 2428 ieau=itZonIso(izone,iso_eau) 2468 2429 do iiso=1,niso 2469 ixt=i ndex_trac(izone,iiso)2430 ixt=itZonIso(izone,iiso) 2470 2431 do j=1,m 2471 2432 do i=1,n … … 2484 2445 & xiiso,xeau,err_msg//strtrac(izone),niso,n,m, & 2485 2446 & deltalimtrac) 2486 enddo !do izone=1,n traceurs_zone2447 enddo !do izone=1,nzone 2487 2448 endif !if (iso_HDO.gt.0) then 2488 2449 … … 2490 2451 2491 2452 subroutine iso_verif_tracpos_vect(x,n,m,err_msg,seuil) 2492 USE infotrac_phy, ONLY: ntraciso,niso2493 2453 implicit none 2494 2454 … … 2532 2492 2533 2493 subroutine iso_verif_tracnps(x,err_msg) 2534 USE infotrac_phy, ONLY: ntraciso2535 2494 use isotrac_mod, only: ridicule_trac 2536 2495 … … 2559 2518 2560 2519 subroutine iso_verif_tracpos_choix(x,err_msg,seuil) 2561 USE infotrac_phy, ONLY: ntraciso2562 2520 implicit none 2563 2521 ! vérifier des choses sur les traceurs … … 2585 2543 subroutine iso_verif_traceur_choix(x,err_msg, & 2586 2544 & errmax,errmaxrel,ridicule_trac_loc,deltalimtrac) 2587 USE infotrac_phy, ONLY: ntraciso2588 2545 implicit none 2589 2546 ! vérifier des choses sur les traceurs … … 2608 2565 2609 2566 function iso_verif_traceur_nostop(x,err_msg) 2610 USE infotrac_phy, ONLY: ntraciso2611 2567 use isotrac_mod, only: ridicule_trac 2612 2568 !use isotopes_verif, only: errmax,errmaxrel,deltalimtrac … … 2637 2593 2638 2594 subroutine iso_verif_traceur_justmass(x,err_msg) 2639 USE infotrac_phy, ONLY: ntraciso2640 2595 implicit none 2641 2596 ! on vérifie que noNaN et masse … … 2666 2621 2667 2622 function iso_verif_traceur_jm_nostop(x,err_msg) 2668 USE infotrac_phy, ONLY: ntraciso2669 2623 implicit none 2670 2624 ! on vérifie que noNaN et masse … … 2699 2653 2700 2654 subroutine iso_verif_tag17_q_deltaD_vect(x,n,m,err_msg) 2701 USE infotrac_phy, ONLY: index_trac,ntraciso2702 2655 USE isotopes_mod, ONLY: tnat,iso_eau, ridicule,iso_HDO 2703 2656 use isotrac_mod, only: option_traceurs,nzone_temp … … 2719 2672 ! verifier que deltaD du tag de la couche la plus haute < 2720 2673 ! 200 permil, et vérifier que son q est inférieur à 2721 ieau=i ndex_trac(nzone_temp,iso_eau)2722 ixt=i ndex_trac(nzone_temp,iso_HDO)2723 ieau1=i ndex_trac(1,iso_eau)2674 ieau=itZonIso(nzone_temp,iso_eau) 2675 ixt=itZonIso(nzone_temp,iso_HDO) 2676 ieau1=itZonIso(1,iso_eau) 2724 2677 do i=1,n 2725 2678 do k=1,m … … 2759 2712 2760 2713 subroutine iso_verif_tag17_q_deltaD_vect_ret3D(x,n,m,nq,err_msg) 2761 USE infotrac_phy, ONLY: index_trac,ntraciso2762 2714 USE isotopes_mod, ONLY: tnat,iso_eau,iso_HDO,ridicule 2763 2715 use isotrac_mod, only: option_traceurs,nzone_temp … … 2779 2731 ! verifier que deltaD du tag de la couche la plus haute < 2780 2732 ! 200 permil, et vérifier que son q est inférieur à 2781 ieau=i ndex_trac(nzone_temp,iso_eau)2782 ixt=i ndex_trac(nzone_temp,iso_HDO)2783 ieau1=i ndex_trac(1,iso_eau)2733 ieau=itZonIso(nzone_temp,iso_eau) 2734 ixt=itZonIso(nzone_temp,iso_HDO) 2735 ieau1=itZonIso(1,iso_eau) 2784 2736 do iq=1,nq 2785 2737 do i=1,n -
LMDZ6/trunk/libf/phylmdiso/isotrac_mod.F90
r3927 r4143 4 4 5 5 MODULE isotrac_mod 6 use infotrac_phy, ONLY: niso,nt raciso,ntraceurs_zone6 use infotrac_phy, ONLY: niso,ntiso,ntraceurs_zone=>nzone 7 7 use isotopes_mod, only: ridicule 8 8 … … 120 120 ! ces variables sont initialisées dans traceurs_init 121 121 122 !integer ntraciso123 !parameter (ntraciso=(ntraceurs_zone+1)*niso)124 !integer ntracisoOR ! défini dans traceurs_init125 122 integer, ALLOCATABLE, DIMENSION(:), save :: index_iso 126 123 !$OMP THREADPRIVATE(index_iso) 127 124 integer, ALLOCATABLE, DIMENSION(:), save :: index_zone 128 125 !$OMP THREADPRIVATE(index_zone) 129 integer, ALLOCATABLE, DIMENSION(:,:), save :: i ndex_trac_loc ! il y a déjà un index_tracdans infotrac: vérifier que c'est le même130 !$OMP THREADPRIVATE(i ndex_trac_loc)126 integer, ALLOCATABLE, DIMENSION(:,:), save :: itZonIso_loc ! il y a déjà un itZonIso dans infotrac: vérifier que c'est le même 127 !$OMP THREADPRIVATE(itZonIso_loc) 131 128 character*3, ALLOCATABLE, DIMENSION(:), save :: strtrac 132 129 !$OMP THREADPRIVATE(strtrac) … … 211 208 212 209 use IOIPSL ! getin 213 USE infotrac_phy, ONLY: ntraciso,niso,ntraceurs_zone,index_trac 214 USE isotopes_mod, ONLY: iso_eau,ntracisoOR,initialisation_iso, & 215 & iso_eau_possible 210 USE infotrac_phy, ONLY: itZonIso 211 USE isotopes_mod, ONLY: iso_eau,ntracisoOR,initialisation_iso 216 212 USE dimphy, only: klon,klev 217 213 … … 244 240 245 241 ! allouer 246 allocate (index_iso(nt raciso))247 allocate (index_zone(nt raciso))248 allocate (i ndex_trac_loc(ntraceurs_zone,niso))242 allocate (index_iso(ntiso)) 243 allocate (index_zone(ntiso)) 244 allocate (itZonIso_loc(ntraceurs_zone,niso)) 249 245 allocate (strtrac(ntraceurs_zone)) 250 246 allocate (bassin_map(klon)) … … 779 775 780 776 ! dans ce cas particulier, il y a des traceurs dans ORCHIDEE 781 ntracisoOR=nt raciso777 ntracisoOR=ntiso 782 778 783 779 else if ((option_traceurs.eq.17).or. & … … 990 986 index_zone(itrac)=izone 991 987 index_iso(itrac)=ixt 992 i ndex_trac_loc(izone,ixt)=itrac993 if (i ndex_trac(izone,ixt).ne.index_trac_loc(izone,ixt)) then988 itZonIso_loc(izone,ixt)=itrac 989 if (itZonIso(izone,ixt).ne.itZonIso_loc(izone,ixt)) then 994 990 write(*,*) 'isotrac 989: izone,ixt,itrac=',izone,ixt,itrac 995 991 CALL abort_physic ('isotrac','isotrac 989',1) … … 998 994 enddo 999 995 #ifdef ISOVERIF 1000 ! call iso_verif_egalite(float(itrac),float(nt raciso), &996 ! call iso_verif_egalite(float(itrac),float(ntiso), & 1001 997 ! & 'traceurs_init 50') 1002 if (itrac.ne.nt raciso) then998 if (itrac.ne.ntiso) then 1003 999 write(*,*) 'traceurs_init 50' 1004 1000 stop … … 1006 1002 1007 1003 write(*,*) 'traceurs_init 65: bilan de l''init:' 1008 write(*,*) 'index_zone=',index_zone(1:nt raciso)1009 write(*,*) 'index_iso=',index_iso(1:nt raciso)1010 write(*,*) 'i ndex_trac=',index_trac(1:ntraceurs_zone,1:niso)1004 write(*,*) 'index_zone=',index_zone(1:ntiso) 1005 write(*,*) 'index_iso=',index_iso(1:ntiso) 1006 write(*,*) 'itZonIso=',itZonIso(1:ntraceurs_zone,1:niso) 1011 1007 do izone=1,ntraceurs_zone 1012 1008 write(*,*) 'strtrac(',izone,')=',strtrac(izone) -
LMDZ6/trunk/libf/phylmdiso/isotrac_routines_mod.F90
r3927 r4143 8 8 ! isotopes_verif a besoin de isotopes et isotrac 9 9 ! isotrac n'a besoin que de isotopes 10 USE infotrac_phy, ONLY: ntraciso=>ntiso, niso, index_trac=>itZonIso, ntraceurs_zone=>nzone 10 11 IMPLICIT NONE 11 12 … … 17 18 & ncum,izone) 18 19 19 USE infotrac_phy, ONLY: ntraciso,niso,index_trac20 20 USE isotopes_mod, ONLY: ridicule,iso_eau 21 21 … … 63 63 & xtp_avantevap_cas,liq,hdiag) 64 64 65 USE infotrac_phy, ONLY: ntraciso,niso,index_trac66 65 USE isotopes_mod, ONLY: ridicule,iso_eau,iso_HDO,ridicule_evap 67 66 USE isotrac_mod, only: option_revap,evap_franche,izone_revap, & … … 231 230 & nloc,ncum,nd,i,izone) 232 231 233 USE infotrac_phy, ONLY: ntraciso,niso,index_trac234 232 USE isotopes_mod, ONLY: iso_eau 235 233 #ifdef ISOVERIF … … 320 318 & nloc,ncum,nd,i,izone) 321 319 322 USE infotrac_phy, ONLY: ntraciso,niso,index_trac323 320 USE isotopes_mod, ONLY: iso_eau 324 321 #ifdef ISOVERIF … … 408 405 & nloc,ncum,nd,i,izone) 409 406 410 USE infotrac_phy, ONLY: ntraciso,niso,index_trac411 407 USE isotopes_mod, ONLY: ridicule,iso_eau 412 408 #ifdef ISOVERIF … … 476 472 & nloc,ncum,nd,izone) 477 473 478 USE infotrac_phy, ONLY: ntraciso,niso,index_trac479 474 USE isotopes_mod, ONLY: ridicule,iso_eau 480 475 #ifdef ISOVERIF … … 643 638 & nloc,ncum,nd,i,frac_sublim,izone) 644 639 645 USE infotrac_phy, ONLY: ntraciso,niso,index_trac646 640 USE isotopes_mod, ONLY: ridicule,iso_eau 647 641 #ifdef ISOVERIF … … 802 796 & xtrevap_tag,liq,hdiag) 803 797 804 USE infotrac_phy, ONLY: ntraciso,niso,index_trac805 798 USE isotopes_mod, ONLY: ridicule,iso_eau 806 799 USE isotrac_mod, only: option_revap,evap_franche … … 899 892 & klon,izone,ptrac) 900 893 901 USE infotrac_phy, ONLY: ntraciso,niso,index_trac902 894 USE isotopes_mod, ONLY: ridicule,iso_eau 903 895 #ifdef ISOVERIF … … 986 978 & klon,izone) 987 979 988 USE infotrac_phy, ONLY: ntraciso,niso,index_trac989 980 USE isotopes_mod, ONLY: ridicule,iso_eau 990 981 #ifdef ISOVERIF … … 1052 1043 & klon,izone,zxt,xtrevap_tag) 1053 1044 1054 USE infotrac_phy, ONLY: ntraciso,niso, &1055 ntraceurs_zone,index_trac1056 1045 #ifdef ISOVERIF 1057 1046 USE isotopes_verif_mod … … 1342 1331 1343 1332 subroutine find_bassin(lat,lon,bassin) 1344 use isotrac_mod, only: izone_poubelle,ntraceurs_zone ,option_traceurs, &1333 use isotrac_mod, only: izone_poubelle,ntraceurs_zone=>ntiso,option_traceurs, & 1345 1334 & bassin_map 1346 1335 #ifdef ISOVERIF … … 1517 1506 subroutine isotrac_recolorise_tmin(xt,t) 1518 1507 USE dimphy, only: klon, klev 1519 USE infotrac_phy, ONLY: ntraciso,niso, &1520 ntraceurs_zone,index_trac1521 1508 USE isotrac_mod, only: zone_temp,nzone_temp 1522 1509 #ifdef ISOVERIF … … 1603 1590 subroutine isotrac_recolorise_tmin_sfrev(xt,t) 1604 1591 USE dimphy, only: klon,klev 1605 USE infotrac_phy, ONLY: ntraciso,niso, &1606 ntraceurs_zone,index_trac1607 1592 USE isotrac_mod, only: nzone_temp,zone_temp 1608 1593 #ifdef ISOVERIF … … 1661 1646 subroutine isotrac_recolorise_saturation(xt,rh,lat,pres) 1662 1647 USE dimphy, only: klon,klev 1663 USE infotrac_phy, ONLY: ntraciso,niso, &1664 ntraceurs_zone,index_trac1665 1648 #ifdef ISOVERIF 1666 1649 USE isotopes_verif_mod … … 1727 1710 subroutine isotrac_recolorise_boite(xt,boite_map) 1728 1711 USE dimphy, only: klon,klev 1729 USE infotrac_phy, ONLY: ntraciso,niso, &1730 ntraceurs_zone,index_trac1731 1712 #ifdef ISOVERIF 1732 1713 USE isotopes_verif_mod … … 1781 1762 subroutine isotrac_recolorise_extra(xt,rlat) 1782 1763 USE dimphy, only: klon,klev 1783 USE infotrac_phy, ONLY: ntraciso,niso, &1784 ntraceurs_zone,index_trac1785 1764 usE isotrac_mod, only: lim_tag20,izone_trop,izone_extra 1786 1765 #ifdef ISOVERIF … … 1830 1809 subroutine isotrac_recolorise_conv(xt,rlat,presnivs,rain_con) 1831 1810 USE dimphy, only: klon,klev 1832 USE infotrac_phy, ONLY: ntraciso,niso, &1833 ntraceurs_zone,index_trac1834 1811 use isotrac_mod, only: lim_precip_tag22, & 1835 1812 & izone_conv_BT,izone_conv_UT … … 1902 1879 subroutine boite_AMMA_init(lat,lon,presnivs,boite_map) 1903 1880 USE dimphy, only: klon,klev 1904 USE infotrac_phy, ONLY: ntraciso,niso, &1905 ntraceurs_zone,index_trac1906 1881 #ifdef ISOVERIF 1907 1882 USE isotopes_verif_mod … … 1957 1932 subroutine boite_UT_extra_init(lat,lon,presnivs,boite_map) 1958 1933 USE dimphy, only: klon,klev 1959 USE infotrac_phy, ONLY: ntraciso,niso, &1960 ntraceurs_zone,index_trac1961 1934 use isotrac_mod, only: izone_extra,izone_trop 1962 1935 #ifdef ISOVERIF … … 2095 2068 & seuil_in) 2096 2069 USE dimphy, only: klon,klev 2097 USE infotrac_phy, ONLY: ntraciso,niso, &2098 ntraceurs_zone,index_trac2099 2070 USE isotopes_mod, only: bidouille_anti_divergence,iso_eau 2100 2071 use isotrac_mod, only: option_seuil_tag_tmin,izone_cond, & … … 2304 2275 subroutine bassin_map_init_opt20(lat,bassin_map) 2305 2276 USE dimphy, only: klon 2306 USE infotrac_phy, ONLY: ntraciso,niso, &2307 ntraceurs_zone,index_trac2308 2277 use isotrac_mod, only: izone_cont,izone_trop,lim_tag20 2309 2278 #ifdef ISOVERIF … … 2334 2303 USE geometry_mod, ONLY : latitude_deg 2335 2304 USE dimphy, only: klon,klev 2336 use infotrac_phy, only: ntraciso2337 2305 use isotrac_mod, only: option_traceurs,boite_map 2338 2306 implicit none … … 2365 2333 subroutine iso_verif_traceur_jbid_vect(x,n,m) 2366 2334 USE isotopes_mod, ONLY: bidouille_anti_divergence,iso_eau,ridicule 2367 USE infotrac_phy, ONLY: index_trac,niso,ntraciso 2368 use isotrac_mod, only: ntraceurs_zone 2335 use isotrac_mod, only: ntraceurs_zone=>nzone 2369 2336 implicit none 2370 2337 … … 2430 2397 subroutine iso_verif_traceur_jbidouille(x) 2431 2398 USE isotopes_mod, ONLY: bidouille_anti_divergence,iso_eau,ridicule 2432 USE infotrac_phy, ONLY: index_trac,niso,ntraciso,ntraceurs_zone2433 2399 implicit none 2434 2400 … … 2470 2436 subroutine iso_verif_traceur_jbid_pos(x) 2471 2437 USE isotopes_mod, ONLY: bidouille_anti_divergence,iso_eau,ridicule 2472 USE infotrac_phy, ONLY: index_trac,niso,ntraciso,ntraceurs_zone2473 2438 !#ifdef ISOVERIF 2474 2439 ! use isotopes_verif_mod, only: iso_verif_traceur_pbidouille … … 2544 2509 subroutine iso_verif_traceur_jbid_pos_vect(n,m,x) 2545 2510 USE isotopes_mod, ONLY: bidouille_anti_divergence,iso_eau,ridicule 2546 USE infotrac_phy, ONLY: index_trac,niso,ntraciso,ntraceurs_zone2547 2511 #ifdef ISOVERIF 2548 2512 USE isotopes_verif_mod … … 2625 2589 subroutine iso_verif_traceur_jbid_pos2(x,q) 2626 2590 USE isotopes_mod, ONLY: bidouille_anti_divergence,iso_eau,ridicule 2627 USE infotrac_phy, ONLY: index_trac,niso,ntraciso,ntraceurs_zone2628 2591 #ifdef ISOVERIF 2629 2592 use isotopes_verif_mod … … 2696 2659 subroutine iso_verif_traceur_jbid_vect1D(x,n) 2697 2660 USE isotopes_mod, ONLY: bidouille_anti_divergence,iso_eau,ridicule 2698 USE infotrac_phy, ONLY: index_trac,niso,ntraciso,ntraceurs_zone2699 2661 implicit none 2700 2662 … … 2739 2701 2740 2702 subroutine iso_verif_traceur_pbidouille(x,err_msg) 2741 USE infotrac_phy, ONLY: ntraciso2742 2703 use isotopes_verif_mod 2743 2704 implicit none … … 2765 2726 2766 2727 function iso_verif_traceur_pbid_ns(x,err_msg) 2767 USE infotrac_phy, ONLY: ntraciso2768 2728 use isotopes_mod, ONLY: iso_HDO,bidouille_anti_divergence 2769 2729 use isotrac_mod, only: ridicule_trac … … 2828 2788 2829 2789 subroutine iso_verif_traceur_pbid_vect(x,n,m,err_msg) 2830 USE infotrac_phy, ONLY: ntraciso2831 2790 use isotopes_mod, ONLY: iso_HDO,bidouille_anti_divergence 2832 2791 use isotopes_verif_mod -
LMDZ6/trunk/libf/phylmdiso/limit_read_mod.F90
r3927 r4143 281 281 USE indice_sol_mod 282 282 #ifdef ISO 283 !USE infotrac_phy, ONLY: use_iso284 283 USE isotopes_mod, ONLY : iso_HTO,ok_prod_nucl_tritium 285 284 #ifdef ISOVERIF -
LMDZ6/trunk/libf/phylmdiso/ocean_forced_mod.F90
r4033 r4143 42 42 use config_ocean_skin_m, only: activate_ocean_skin 43 43 #ifdef ISO 44 USE infotrac_phy, ONLY: nt raciso,niso44 USE infotrac_phy, ONLY: ntiso,niso 45 45 USE isotopes_routines_mod, ONLY: calcul_iso_surf_oce_vectall, & 46 46 & calcul_iso_surf_sic_vectall … … 73 73 74 74 #ifdef ISO 75 REAL, DIMENSION(nt raciso,klon), INTENT(IN):: xtprecip_rain, xtprecip_snow76 REAL, DIMENSION(nt raciso,klon), INTENT(IN):: xtspechum75 REAL, DIMENSION(ntiso,klon), INTENT(IN) :: xtprecip_rain, xtprecip_snow 76 REAL, DIMENSION(ntiso,klon), INTENT(IN) :: xtspechum 77 77 real, dimension(klon), intent(IN) :: rlat 78 78 #endif … … 98 98 99 99 #ifdef ISO 100 REAL, DIMENSION(nt raciso,klon), INTENT(OUT):: xtevap ! isotopes in evaporation flux100 REAL, DIMENSION(ntiso,klon), INTENT(OUT) :: xtevap ! isotopes in evaporation flux 101 101 REAL, DIMENSION(klon), INTENT(out) :: h1 ! just a diagnostic, not useful for the simulation 102 102 #endif … … 271 271 USE phys_output_var_mod, ONLY : sens_prec_liq_o, sens_prec_sol_o, lat_prec_liq_o, lat_prec_sol_o 272 272 #ifdef ISO 273 USE infotrac_phy, ONLY: niso, ntraciso273 USE infotrac_phy, ONLY: niso, ntiso 274 274 USE isotopes_routines_mod, ONLY: calcul_iso_surf_oce_vectall, & 275 275 & calcul_iso_surf_sic_vectall … … 303 303 real, intent(in):: rhoa(:) ! (knon) density of moist air (kg / m3) 304 304 #ifdef ISO 305 REAL, DIMENSION(nt raciso,klon), INTENT(IN) :: xtprecip_rain, xtprecip_snow306 REAL, DIMENSION(nt raciso,klon), INTENT(IN) :: xtspechum307 REAL, DIMENSION(niso,klon), INTENT(IN) :: Roce308 REAL, DIMENSION(niso,klon), INTENT(IN):: Rland_ice305 REAL, DIMENSION(ntiso,klon), INTENT(IN) :: xtprecip_rain, xtprecip_snow 306 REAL, DIMENSION(ntiso,klon), INTENT(IN) :: xtspechum 307 REAL, DIMENSION(niso,klon), INTENT(IN) :: Roce 308 REAL, DIMENSION(niso,klon), INTENT(IN) :: Rland_ice 309 309 #endif 310 310 … … 330 330 REAL, DIMENSION(klon), INTENT(OUT) :: dflux_s, dflux_l 331 331 #ifdef ISO 332 REAL, DIMENSION(nt raciso,klon), INTENT(OUT) :: xtevap332 REAL, DIMENSION(ntiso,klon), INTENT(OUT) :: xtevap 333 333 #endif 334 334 -
LMDZ6/trunk/libf/phylmdiso/pbl_surface_mod.F90
r4036 r4143 31 31 wx_pbl_check, wx_pbl_dts_check, wx_evappot 32 32 use config_ocean_skin_m, only: activate_ocean_skin 33 #ifdef ISO 34 USE infotrac_phy, ONLY: niso,ntraciso=>ntiso 35 #endif 33 36 34 37 IMPLICIT NONE … … 193 196 USE indice_sol_mod 194 197 USE print_control_mod, ONLY: lunout 195 USE infotrac_phy, ONLY: niso,ntraciso ! ajout C Risi pour isos196 198 #ifdef ISOVERIF 197 199 USE isotopes_mod, ONLY: iso_eau,ridicule … … 395 397 USE print_control_mod, ONLY : prt_level,lunout 396 398 #ifdef ISO 397 USE infotrac_phy, ONLY: ntraciso,niso ! ajout C Risi pour isos398 399 USE isotopes_mod, ONLY: Rdefault,iso_eau 399 400 #ifdef ISOVERIF … … 4051 4052 USE indice_sol_mod 4052 4053 #ifdef ISO 4053 USE infotrac_phy, ONLY: ntraciso,niso ! ajout C Risi pour isos4054 4054 #ifdef ISOVERIF 4055 4055 USE isotopes_mod, ONLY: iso_eau,ridicule … … 4130 4130 use phys_state_var_mod, only: delta_sal, ds_ns, dt_ns, delta_sst 4131 4131 use config_ocean_skin_m, only: activate_ocean_skin 4132 #ifdef ISO4133 USE infotrac_phy, ONLY: ntraciso4134 #endif4135 4132 4136 4133 -
LMDZ6/trunk/libf/phylmdiso/phyredem.F90
r4089 r4143 39 39 USE iostart, ONLY: open_restartphy, close_restartphy, enddef_restartphy, put_field, put_var 40 40 USE traclmdz_mod, ONLY : traclmdz_to_restart 41 USE infotrac_phy, ONLY: type_trac, nqtot, tracers, nbtr, niso , ntraciso41 USE infotrac_phy, ONLY: type_trac, nqtot, tracers, nbtr, niso 42 42 #ifdef ISO 43 43 #ifdef ISOVERIF … … 485 485 xtrain_fall,xtsnow_fall, ql_ancien,xtl_ancien,qs_ancien,xts_ancien, & 486 486 xtsol,fxtevap 487 USE infotrac_phy,ONLY: niso, nt raciso487 USE infotrac_phy,ONLY: niso, ntiso 488 488 !USE control_mod 489 489 USE indice_sol_mod, ONLY: nbsrf … … 509 509 !REAL xtsol(niso,klon) 510 510 REAL xtsnow(niso,klon,nbsrf) 511 !REAL xtevap(nt raciso,klon,nbsrf)511 !REAL xtevap(ntiso,klon,nbsrf) 512 512 REAL xtrun_off_lic_0(niso,klon) 513 513 REAL Rland_ice(niso,klon) … … 566 566 #endif 567 567 568 do ixt=1,nt raciso568 do ixt=1,ntiso 569 569 570 570 if (ixt.le.niso) then … … 576 576 outiso=striso(iiso)//strtrac(izone) 577 577 #else 578 write(*,*) 'phyredem 546: ixt,nt raciso=', ixt,ntraciso578 write(*,*) 'phyredem 546: ixt,ntiso=', ixt,ntiso 579 579 stop 580 580 #endif -
LMDZ6/trunk/libf/phylmdiso/phys_local_var_mod.F90
r4118 r4143 726 726 USE infotrac_phy, ONLY : nbtr 727 727 #ifdef ISO 728 USE infotrac_phy, ONLY : ntraciso ,niso728 USE infotrac_phy, ONLY : ntraciso=>ntiso,niso 729 729 #endif 730 730 USE aero_mod -
LMDZ6/trunk/libf/phylmdiso/phys_output_mod.F90
r4120 r4143 35 35 USE iophy 36 36 USE dimphy 37 USE infotrac_phy, ONLY: nqtot, tracers, type_trac, niso, ntraciso 37 USE infotrac_phy, ONLY: nqtot, tracers, type_trac, niso, ntraciso=>ntiso 38 38 USE strings_mod, ONLY: maxlen 39 39 USE ioipsl -
LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90
r4124 r4143 39 39 USE ioipsl_getin_p_mod, ONLY : getin_p 40 40 USE indice_sol_mod 41 USE infotrac, ONLY: iso_num, iso_indnum 42 USE infotrac_phy, ONLY: nqtot, nbtr, nqo, tracers, type_trac, nqCO2, indnum_fn_num 41 USE infotrac_phy, ONLY: nqtot, nbtr, nqo, tracers, type_trac, nqCO2 43 42 USE readTracFiles_mod, ONLY: addPhase 44 43 USE strings_mod, ONLY: strIdx, strStack, int2str … … 126 125 127 126 #ifdef ISO 128 USE infotrac_phy, ONLY: iq iso,niso, ntraciso, nzone127 USE infotrac_phy, ONLY: iqIsoPha,niso, ntraciso=>ntiso, nzone 129 128 USE isotopes_mod, ONLY: iso_eau,iso_HDO,iso_O18,iso_O17,iso_HTO, & 130 129 & bidouille_anti_divergence,ok_bidouille_wake, & … … 509 508 !====================================================================== 510 509 ! 511 INTEGER ivap ! indice de traceurs pour vapeur d'eau 512 PARAMETER (ivap=1) 513 INTEGER iliq ! indice de traceurs pour eau liquide 514 PARAMETER (iliq=2) 515 !CR: on ajoute la phase glace 516 INTEGER isol ! indice de traceurs pour eau glace 517 PARAMETER (isol=3) 518 INTEGER irneb ! indice de traceurs pour fraction nuageuse LS (optional) 519 PARAMETER (irneb=4) 510 ! indices de traceurs eau vapeur, liquide, glace, fraction nuageuse LS (optional) 511 INTEGER,SAVE :: ivap, iliq, isol, irneb 512 !$OMP THREADPRIVATE(ivap, iliq, isol, irneb) 520 513 ! 521 514 ! … … 1354 1347 1355 1348 IF (first) THEN 1349 ivap = strIdx(tracers(:)%name, addPhase('H2O', 'g')) 1350 iliq = strIdx(tracers(:)%name, addPhase('H2O', 'l')) 1351 isol = strIdx(tracers(:)%name, addPhase('H2O', 's')) 1352 irneb= strIdx(tracers(:)%name, addPhase('H2O', 'r')) 1356 1353 CALL init_etat0_limit_unstruct 1357 1354 IF (.NOT. create_etat0_limit) CALL init_limit_read(days_elapsed) … … 2412 2409 do ixt=1,ntraciso 2413 2410 #ifdef ISOVERIF 2414 write(*,*) 'physiq tmp 1762a: ixt,iqiso_vap=',ixt,iq iso(ixt,ivap)2415 write(*,*) 'physiq tmp 1762b: ixt,iqiso_liq=',ixt,iq iso(ixt,iliq)2411 write(*,*) 'physiq tmp 1762a: ixt,iqiso_vap=',ixt,iqIsoPha(ixt,ivap) 2412 write(*,*) 'physiq tmp 1762b: ixt,iqiso_liq=',ixt,iqIsoPha(ixt,iliq) 2416 2413 if (nqo.eq.3) then 2417 write(*,*) 'physiq tmp 1762c: ixt,iqiso_liq=',ixt,iq iso(ixt,iliq)2414 write(*,*) 'physiq tmp 1762c: ixt,iqiso_liq=',ixt,iqIsoPha(ixt,iliq) 2418 2415 endif !if (nqo.eq.3) then 2419 2416 #endif 2420 if (ixt.gt.niso) write(*,*) 'izone=',tracers(iq iso(ixt,ivap))%iso_iZone2417 if (ixt.gt.niso) write(*,*) 'izone=',tracers(iqIsoPha(ixt,ivap))%iso_iZone 2421 2418 DO k = 1, klev 2422 2419 DO i = 1, klon 2423 xt_seri(ixt,i,k) = qx(i,k,iq iso(ixt,ivap))2424 xtl_seri(ixt,i,k) = qx(i,k,iq iso(ixt,iliq))2420 xt_seri(ixt,i,k) = qx(i,k,iqIsoPha(ixt,ivap)) 2421 xtl_seri(ixt,i,k) = qx(i,k,iqIsoPha(ixt,iliq)) 2425 2422 if (nqo.eq.2) then 2426 2423 xts_seri(ixt,i,k) = 0. 2427 2424 else if (nqo.eq.3) then 2428 xts_seri(ixt,i,k) = qx(i,k,iq iso(ixt,isol))2425 xts_seri(ixt,i,k) = qx(i,k,iqIsoPha(ixt,isol)) 2429 2426 endif 2430 2427 enddo !DO i = 1, klon … … 3032 3029 ! verif iso_eau 3033 3030 !write(*,*) 'physiq tmp 2748: iso_eau=',iso_eau 3034 !write(*,*) 'use_iso=',use_iso3035 3031 !write(*,*) 'iso_eau.gt.0=',iso_eau.gt.0 3036 3032 !write(*,*) 'd_xt_vdf(iso_eau,1,1),d_q_vdf(1,1)=',d_xt_vdf(iso_eau,1,1),d_q_vdf(1,1) … … 6496 6492 DO k = 1, klev 6497 6493 DO i = 1, klon 6498 iq=iq iso(ixt,ivap)6494 iq=iqIsoPha(ixt,ivap) 6499 6495 d_qx(i,k,iq) = ( xt_seri(ixt,i,k) - qx(i,k,iq) ) / phys_tstep 6500 iq=iq iso(ixt,iliq)6496 iq=iqIsoPha(ixt,iliq) 6501 6497 d_qx(i,k,iq) = ( xtl_seri(ixt,i,k) - qx(i,k,iq) ) / phys_tstep 6502 6498 if (nqo.eq.3) then 6503 iq=iq iso(ixt,isol)6499 iq=iqIsoPha(ixt,isol) 6504 6500 d_qx(i,k,iq) = ( xts_seri(ixt,i,k) - qx(i,k,iq) ) / phys_tstep 6505 6501 endif -
LMDZ6/trunk/libf/phylmdiso/reevap.F90
r3927 r4143 9 9 USE add_phys_tend_mod, only : fl_cor_ebil 10 10 #ifdef ISO 11 USE infotrac_phy, ONLY: nt raciso11 USE infotrac_phy, ONLY: ntiso 12 12 #ifdef ISOVERIF 13 13 USE isotopes_verif_mod … … 30 30 31 31 #ifdef ISO 32 REAL, DIMENSION(nt raciso,klon,klev), INTENT(in) :: xt_seri,xtl_seri,xts_seri33 REAL, DIMENSION(nt raciso,klon,klev), INTENT(out) :: d_xt_eva,d_xtl_eva,d_xts_eva32 REAL, DIMENSION(ntiso,klon,klev), INTENT(in) :: xt_seri,xtl_seri,xts_seri 33 REAL, DIMENSION(ntiso,klon,klev), INTENT(out) :: d_xt_eva,d_xtl_eva,d_xts_eva 34 34 integer ixt 35 35 #endif … … 76 76 77 77 #ifdef ISO 78 do ixt=1,nt raciso78 do ixt=1,ntiso 79 79 zb = MAX(0.0,xtl_seri(ixt,i,k)) 80 80 d_xt_eva(ixt,i,k) = zb 81 81 d_xtl_eva(ixt,i,k) = -xtl_seri(ixt,i,k) 82 82 d_xts_eva(ixt,i,k) = 0. 83 enddo ! do ixt=1,ntraciso83 enddo 84 84 #ifdef ISOVERIF 85 do ixt=1,nt raciso85 do ixt=1,ntiso 86 86 call iso_verif_noNaN(xt_seri(ixt,i,k), & 87 87 & 'physiq 2417: apres evap tot') … … 136 136 137 137 #ifdef ISO 138 do ixt=1,nt raciso138 do ixt=1,ntiso 139 139 zb = MAX(0.0,xtl_seri(ixt,i,k)+xts_seri(ixt,i,k)) 140 140 d_xt_eva(ixt,i,k) = zb 141 141 d_xtl_eva(ixt,i,k) = -xtl_seri(ixt,i,k) 142 142 d_xts_eva(ixt,i,k) = -xts_seri(ixt,i,k) 143 enddo ! do ixt=1,ntraciso143 enddo 144 144 145 145 #ifdef ISOVERIF 146 do ixt=1,nt raciso146 do ixt=1,ntiso 147 147 call iso_verif_noNaN(xt_seri(ixt,i,k), & 148 148 & 'physiq 2417: apres evap tot') -
LMDZ6/trunk/libf/phylmdiso/surf_land_bucket_mod.F90
r4033 r4143 35 35 USE indice_sol_mod 36 36 #ifdef ISO 37 use infotrac_phy, ONLY: nt raciso,niso37 use infotrac_phy, ONLY: ntiso,niso 38 38 USE isotopes_mod, ONLY: iso_eau, iso_HDO, iso_O18, iso_O17, & 39 39 ridicule_qsol … … 69 69 REAL, DIMENSION(klon), INTENT(IN) :: swnet, lwnet 70 70 #ifdef ISO 71 REAL, DIMENSION(nt raciso,klon), INTENT(IN):: xtprecip_rain, xtprecip_snow72 REAL, DIMENSION(nt raciso,klon), INTENT(IN):: xtspechum71 REAL, DIMENSION(ntiso,klon), INTENT(IN) :: xtprecip_rain, xtprecip_snow 72 REAL, DIMENSION(ntiso,klon), INTENT(IN) :: xtspechum 73 73 #endif 74 74 … … 91 91 REAL, DIMENSION(klon), INTENT(OUT) :: dflux_s, dflux_l 92 92 #ifdef ISO 93 REAL, DIMENSION(nt raciso,klon), INTENT(OUT):: xtevap94 REAL, DIMENSION(klon), INTENT(OUT):: h195 REAL, DIMENSION(niso,klon), INTENT(OUT):: xtrunoff_diag96 REAL, DIMENSION(klon), INTENT(OUT):: runoff_diag97 REAL, DIMENSION(niso,klon), INTENT(IN):: Rland_ice93 REAL, DIMENSION(ntiso,klon), INTENT(OUT) :: xtevap 94 REAL, DIMENSION(klon), INTENT(OUT) :: h1 95 REAL, DIMENSION(niso,klon), INTENT(OUT) :: xtrunoff_diag 96 REAL, DIMENSION(klon), INTENT(OUT) :: runoff_diag 97 REAL, DIMENSION(niso,klon), INTENT(IN) :: Rland_ice 98 98 #endif 99 99 -
LMDZ6/trunk/libf/phylmdiso/surf_land_mod.F90
r4033 r4143 61 61 USE indice_sol_mod 62 62 #ifdef ISO 63 use infotrac_phy, ONLY: nt raciso,niso63 use infotrac_phy, ONLY: ntiso,niso 64 64 use isotopes_mod, ONLY: nudge_qsol, iso_eau 65 65 #ifdef ISOVERIF … … 104 104 REAL, DIMENSION(klon), INTENT(IN) :: q2m, t2m 105 105 #ifdef ISO 106 REAL, DIMENSION(nt raciso,klon), INTENT(IN) :: xtprecip_rain, xtprecip_snow107 REAL, DIMENSION(nt raciso,klon), INTENT(IN) :: xtspechum106 REAL, DIMENSION(ntiso,klon), INTENT(IN) :: xtprecip_rain, xtprecip_snow 107 REAL, DIMENSION(ntiso,klon), INTENT(IN) :: xtspechum 108 108 #endif 109 109 … … 135 135 REAL, DIMENSION(klon,nvm_lmdz), INTENT(OUT) :: height 136 136 #ifdef ISO 137 REAL, DIMENSION(nt raciso,klon), INTENT(OUT) :: xtevap137 REAL, DIMENSION(ntiso,klon), INTENT(OUT) :: xtevap 138 138 REAL, DIMENSION(klon), INTENT(OUT) :: h1 139 139 REAL, DIMENSION(niso,klon), INTENT(OUT) :: xtrunoff_diag … … 181 181 ! write(*,*) 'surf_land 169: ok_veget=',ok_veget 182 182 do i=1,knon 183 do ixt=1,nt raciso183 do ixt=1,ntiso 184 184 call iso_verif_noNaN(xtprecip_snow(ixt,i),'surf_land 146') 185 185 enddo -
LMDZ6/trunk/libf/phylmdiso/surf_landice_mod.F90
r4033 r4143 37 37 #ifdef ISO 38 38 USE fonte_neige_mod, ONLY : xtrun_off_lic 39 USE infotrac_phy, ONLY : nt raciso,niso39 USE infotrac_phy, ONLY : ntiso,niso 40 40 USE isotopes_routines_mod, ONLY: calcul_iso_surf_lic_vectall 41 41 #ifdef ISOVERIF … … 82 82 REAL, DIMENSION(klon,nbsrf), INTENT(IN) :: pctsrf 83 83 #ifdef ISO 84 REAL, DIMENSION(nt raciso,klon), INTENT(IN):: xtprecip_rain, xtprecip_snow85 REAL, DIMENSION(nt raciso,klon), INTENT(IN):: xtspechum84 REAL, DIMENSION(ntiso,klon), INTENT(IN) :: xtprecip_rain, xtprecip_snow 85 REAL, DIMENSION(ntiso,klon), INTENT(IN) :: xtspechum 86 86 #endif 87 87 … … 129 129 REAL, DIMENSION(klon), INTENT(OUT) :: runoff !Land ice runoff 130 130 #ifdef ISO 131 REAL, DIMENSION(nt raciso,klon), INTENT(OUT):: xtevap131 REAL, DIMENSION(ntiso,klon), INTENT(OUT) :: xtevap 132 132 ! real, DIMENSION(niso,klon) :: xtrun_off_lic_0_diag ! est une variable globale de 133 133 ! fonte_neige -
LMDZ6/trunk/libf/phylmdiso/surf_ocean_mod.F90
r3940 r4143 37 37 USE indice_sol_mod, ONLY : nbsrf, is_oce 38 38 #ifdef ISO 39 USE infotrac_phy, ONLY : ntraciso ,niso39 USE infotrac_phy, ONLY : ntraciso=>ntiso,niso 40 40 #ifdef ISOVERIF 41 41 USE isotopes_mod, ONLY: iso_eau,ridicule -
LMDZ6/trunk/libf/phylmdiso/surf_seaice_mod.F90
r3940 r4143 35 35 USE indice_sol_mod 36 36 #ifdef ISO 37 USE infotrac_phy, ONLY : nt raciso,niso37 USE infotrac_phy, ONLY : ntiso,niso 38 38 #endif 39 39 … … 71 71 REAL, DIMENSION(klon,nbsrf), INTENT(IN) :: pctsrf 72 72 #ifdef ISO 73 REAL, DIMENSION(nt raciso,klon), INTENT(IN) :: xtprecip_rain, xtprecip_snow73 REAL, DIMENSION(ntiso,klon), INTENT(IN) :: xtprecip_rain, xtprecip_snow 74 74 REAL, DIMENSION(klon), INTENT(IN) :: xtspechum 75 75 REAL, DIMENSION(niso,klon), INTENT(IN) :: Roce … … 101 101 REAL, DIMENSION(klon), INTENT(OUT) :: flux_u1, flux_v1 102 102 #ifdef ISO 103 REAL, DIMENSION(nt raciso,klon), INTENT(OUT) :: xtevap103 REAL, DIMENSION(ntiso,klon), INTENT(OUT) :: xtevap 104 104 #endif 105 105 -
LMDZ6/trunk/libf/phylmdiso/wake.F90
r4036 r4143 34 34 USE print_control_mod, ONLY: prt_level 35 35 #ifdef ISO 36 USE infotrac_phy, ONLY : ntraciso 36 USE infotrac_phy, ONLY : ntraciso=>ntiso 37 37 #ifdef ISOVERIF 38 38 USE isotopes_verif_mod
Note: See TracChangeset
for help on using the changeset viewer.