Changeset 2641 for LMDZ5/branches
- Timestamp:
- Sep 29, 2016, 11:26:46 PM (8 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 17 deleted
- 222 edited
- 63 copied
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 2596-2640
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/DefLists/field_def_lmdz.xml
r2594 r2641 214 214 <field id="n2" long_name="Nombre de panaches de type 2" unit="-" /> 215 215 <field id="s2" long_name="Surface moyenne des panaches de type 2" unit="m2" /> 216 <field id="proba_notrig" long_name="Probabilit é de non-déclenchement" unit="-" />217 <field id="random_notrig" long_name="Tirage al éatoire de non-déclenchement" unit="-" />216 <field id="proba_notrig" long_name="Probabilite de non-declenchement" unit="-" /> 217 <field id="random_notrig" long_name="Tirage aleatoire de non-declenchement" unit="-" /> 218 218 <field id="ale_bl_stat" long_name="ALE_BL_STAT" unit="m2/s2" /> 219 219 <field id="ale_bl_trig" long_name="ALE_BL_STAT + Condition P>Pseuil" unit="m2/s2" /> -
LMDZ5/branches/testing/bld.cfg
r2408 r2641 28 28 src::sisvat %SISVAT 29 29 src::rrtm %RRTM 30 src::dust %DUST 30 31 src::grid %SRC_PATH/grid 31 32 src::filtrez %FILTRE -
LMDZ5/branches/testing/libf/dyn3d/addfi.F
r1999 r2641 46 46 c ------------------ 47 47 c 48 #include "dimensions.h" 49 #include "paramet.h" 50 #include "comconst.h" 51 #include "comgeom.h" 52 #include "serre.h" 48 include "dimensions.h" 49 include "paramet.h" 50 include "comgeom.h" 53 51 c 54 52 c Arguments : -
LMDZ5/branches/testing/libf/dyn3d/advect.F
r1910 r2641 4 4 SUBROUTINE advect(ucov,vcov,teta,w,massebx,masseby,du,dv,dteta) 5 5 6 USE comconst_mod, ONLY: daysec 7 USE logic_mod, ONLY: conser 8 USE ener_mod, ONLY: gtot 9 6 10 IMPLICIT NONE 7 11 c======================================================================= … … 24 28 c ------------- 25 29 26 #include "dimensions.h" 27 #include "paramet.h" 28 #include "comconst.h" 29 #include "comvert.h" 30 #include "comgeom.h" 31 #include "logic.h" 32 #include "ener.h" 30 include "dimensions.h" 31 include "paramet.h" 32 include "comgeom.h" 33 33 34 34 c Arguments: -
LMDZ5/branches/testing/libf/dyn3d/advtrac.F90
r2298 r2641 11 11 USE infotrac, ONLY: nqtot, iadv,nqperes,ok_iso_verif 12 12 USE control_mod, ONLY: iapp_tracvl, day_step 13 13 USE comconst_mod, ONLY: dtvr 14 14 15 15 IMPLICIT NONE … … 17 17 include "dimensions.h" 18 18 include "paramet.h" 19 include "comconst.h"20 include "comvert.h"21 19 include "comdissip.h" 22 20 include "comgeom2.h" 23 include "logic.h"24 include "temps.h"25 include "ener.h"26 21 include "description.h" 27 22 include "iniprint.h" -
LMDZ5/branches/testing/libf/dyn3d/bilan_dyn.F
r1910 r2641 13 13 USE IOIPSL 14 14 #endif 15 USE comconst_mod, ONLY: pi, cpp 16 USE comvert_mod, ONLY: presnivs 17 USE temps_mod, ONLY: annee_ref, day_ref, itau_dyn 15 18 16 19 IMPLICIT NONE 17 20 18 #include "dimensions.h" 19 #include "paramet.h" 20 #include "comconst.h" 21 #include "comvert.h" 22 #include "comgeom2.h" 23 #include "temps.h" 24 #include "iniprint.h" 21 include "dimensions.h" 22 include "paramet.h" 23 include "comgeom2.h" 24 include "iniprint.h" 25 25 26 26 c==================================================================== -
LMDZ5/branches/testing/libf/dyn3d/caladvtrac.F
r2298 r2641 10 10 USE infotrac, ONLY : nqtot 11 11 USE control_mod, ONLY : iapp_tracvl,planet_type 12 USE comconst_mod, ONLY: dtvr 12 13 13 14 IMPLICIT NONE … … 23 24 24 25 25 #include "dimensions.h" 26 #include "paramet.h" 27 #include "comconst.h" 26 include "dimensions.h" 27 include "paramet.h" 28 28 29 29 c Arguments: -
LMDZ5/branches/testing/libf/dyn3d/caldyn.F
r1999 r2641 6 6 $ phi,conser,du,dv,dteta,dp,w,pbaru,pbarv,time ) 7 7 8 9 USE comvert_mod, ONLY: ap, bp 10 8 11 IMPLICIT NONE 9 12 … … 24 27 ! ---------------- 25 28 26 #include "dimensions.h" 27 #include "paramet.h" 28 #include "comconst.h" 29 #include "comvert.h" 30 #include "comgeom.h" 29 include "dimensions.h" 30 include "paramet.h" 31 include "comgeom.h" 31 32 32 33 ! Arguments: -
LMDZ5/branches/testing/libf/dyn3d/conf_gcm.F90
r2471 r2641 13 13 USE infotrac, ONLY : type_trac 14 14 use assert_m, only: assert 15 USE comconst_mod, ONLY: dissip_deltaz, dissip_factz, dissip_zref, & 16 iflag_top_bound, mode_top_bound, tau_top_bound, & 17 ngroup 18 USE logic_mod, ONLY: fxyhypb, iflag_phys, ok_etat0, ok_gradsfile, & 19 ok_guide, ok_limit, ok_strato, purmats, read_start, & 20 ysinus 21 USE serre_mod, ONLY: clon,clat,grossismx,grossismy,dzoomx,dzoomy, & 22 alphax,alphay,taux,tauy 23 USE temps_mod, ONLY: calend 15 24 16 25 IMPLICIT NONE … … 31 40 include "dimensions.h" 32 41 include "paramet.h" 33 include "logic.h"34 include "serre.h"35 42 include "comdissnew.h" 36 include "temps.h"37 include "comconst.h"38 43 include "iniprint.h" 39 44 … … 41 46 ! ------ 42 47 43 CHARACTER ch1*72,ch2*72,ch3*72,ch4*1244 48 REAL clonn,clatt,grossismxx,grossismyy 45 49 REAL dzoomxx,dzoomyy, tauxx,tauyy 46 50 LOGICAL fxyhypbb, ysinuss 47 INTEGER i48 51 49 52 ! ------------------------------------------------------------------- -
LMDZ5/branches/testing/libf/dyn3d/dissip.F
r1999 r2641 4 4 SUBROUTINE dissip( vcov,ucov,teta,p, dv,du,dh ) 5 5 c 6 USE comconst_mod, ONLY: dtdiss 7 6 8 IMPLICIT NONE 7 9 … … 25 27 c ------------- 26 28 27 #include "dimensions.h" 28 #include "paramet.h" 29 #include "comconst.h" 30 #include "comgeom.h" 31 #include "comdissnew.h" 32 #include "comdissipn.h" 29 include "dimensions.h" 30 include "paramet.h" 31 include "comgeom.h" 32 include "comdissnew.h" 33 include "comdissipn.h" 33 34 34 35 c Arguments: -
LMDZ5/branches/testing/libf/dyn3d/dteta1.F
r1910 r2641 21 21 22 22 23 #include "dimensions.h" 24 #include "paramet.h" 25 #include "logic.h" 23 include "dimensions.h" 24 include "paramet.h" 26 25 27 26 REAL teta( ip1jmp1,llm ),pbaru( ip1jmp1,llm ),pbarv( ip1jm,llm) -
LMDZ5/branches/testing/libf/dyn3d/dudv2.F
r1910 r2641 26 26 c======================================================================= 27 27 c 28 #include "dimensions.h" 29 #include "paramet.h" 30 #include "comvert.h" 28 include "dimensions.h" 29 include "paramet.h" 31 30 32 31 REAL teta( ip1jmp1,llm ),pkf( ip1jmp1,llm ) ,bern( ip1jmp1,llm ), -
LMDZ5/branches/testing/libf/dyn3d/dynetat0.f90
r2408 r2641 11 11 USE control_mod, ONLY: planet_type 12 12 USE assert_eq_m, ONLY: assert_eq 13 USE comvert_mod, ONLY: pa,preff 14 USE comconst_mod, ONLY: cpp, daysec, dtvr, g, im, jm, kappa, lllm, omeg, rad 15 USE logic_mod, ONLY: fxyhypb, ysinus 16 USE serre_mod, ONLY: clon, clat, grossismx, grossismy 17 USE temps_mod, ONLY: annee_ref, day_ini, day_ref, itau_dyn, start_time 18 USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang0 19 13 20 IMPLICIT NONE 14 21 include "dimensions.h" 15 22 include "paramet.h" 16 include "temps.h"17 include "comconst.h"18 include "comvert.h"19 23 include "comgeom2.h" 20 include "ener.h"21 24 include "description.h" 22 include "serre.h"23 include "logic.h"24 25 include "iniprint.h" 25 26 !=============================================================================== -
LMDZ5/branches/testing/libf/dyn3d/dynredem.F90
r2408 r2641 11 11 NF90_CLOSE, NF90_PUT_ATT, NF90_UNLIMITED, NF90_CLOBBER 12 12 USE dynredem_mod, ONLY: cre_var, put_var1, put_var2, err, modname, fil 13 USE comvert_mod, ONLY: ap,bp,aps,bps,presnivs,pseudoalt,pa,preff, & 14 nivsig,nivsigs 15 USE comconst_mod, ONLY: cpp, daysec, dtvr, g, kappa, omeg, rad 16 USE logic_mod, ONLY: fxyhypb, ysinus 17 USE serre_mod, ONLY: clon,clat,grossismx,grossismy,dzoomx,dzoomy, & 18 taux,tauy 19 USE temps_mod, ONLY: annee_ref, day_ref, itau_dyn, itaufin, start_time 20 USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang0 21 13 22 IMPLICIT NONE 14 23 include "dimensions.h" 15 24 include "paramet.h" 16 include "comconst.h"17 include "comvert.h"18 25 include "comgeom2.h" 19 include "temps.h"20 include "ener.h"21 include "logic.h"22 26 include "description.h" 23 include "serre.h"24 27 include "iniprint.h" 25 28 !=============================================================================== … … 168 171 USE dynredem_mod, ONLY: dynredem_write_u, dynredem_write_v, dynredem_read_u, & 169 172 err, modname, fil, msg 173 USE temps_mod, ONLY: itau_dyn, itaufin 174 170 175 IMPLICIT NONE 171 176 include "dimensions.h" 172 177 include "paramet.h" 173 178 include "description.h" 174 include "comvert.h"175 179 include "comgeom.h" 176 include "temps.h"177 180 include "iniprint.h" 178 181 !=============================================================================== -
LMDZ5/branches/testing/libf/dyn3d/fluxstokenc.F
r2298 r2641 16 16 IMPLICIT NONE 17 17 c 18 #include "dimensions.h" 19 #include "paramet.h" 20 #include "comconst.h" 21 #include "comvert.h" 22 #include "comgeom.h" 23 #include "tracstoke.h" 24 #include "temps.h" 25 #include "iniprint.h" 18 include "dimensions.h" 19 include "paramet.h" 20 include "comgeom.h" 21 include "tracstoke.h" 22 include "iniprint.h" 26 23 27 24 REAL time_step,t_wrt, t_ops … … 36 33 37 34 REAL pbarvst(iip1,jjp1,llm),zistdyn 38 35 real dtcum 39 36 40 37 INTEGER iadvtr,ndex(1) … … 60 57 if(first) then 61 58 62 59 CALL initfluxsto( 'fluxstoke', 63 60 . time_step,istdyn* time_step,istdyn* time_step, 64 61 . fluxid,fluxvid,fluxdid) 65 66 62 63 ndex(1) = 0 67 64 call histwrite(fluxid, 'phis', 1, phis, iip1*jjp1, ndex) 68 65 call histwrite(fluxid, 'aire', 1, aire, iip1*jjp1, ndex) 69 70 66 67 ndex(1) = 0 71 68 nscal = 1 72 69 tst(1) = time_step … … 76 73 istp(1)= istphy 77 74 call histwrite(fluxdid, 'istphy', 1, istp, nscal, ndex) 78 79 75 76 first = .false. 80 77 81 78 endif … … 141 138 142 139 iadvtr=0 143 144 145 140 write(lunout,*)'ITAU auquel on stoke les fluxmasses',itau 141 142 call histwrite(fluxid, 'masse', itau, massem, 146 143 . iip1*jjp1*llm, ndex) 147 148 144 145 call histwrite(fluxid, 'pbaru', itau, pbarug, 149 146 . iip1*jjp1*llm, ndex) 150 151 147 148 call histwrite(fluxvid, 'pbarv', itau, pbarvg, 152 149 . iip1*jjm*llm, ndex) 153 150 154 151 call histwrite(fluxid, 'w' ,itau, wg, 155 152 . iip1*jjp1*llm, ndex) 156 157 153 154 call histwrite(fluxid, 'teta' ,itau, tetac, 158 155 . iip1*jjp1*llm, ndex) 159 160 156 157 call histwrite(fluxid, 'phi' ,itau, phic, 161 158 . iip1*jjp1*llm, ndex) 162 159 163 160 C 164 161 -
LMDZ5/branches/testing/libf/dyn3d/friction.F
r1910 r2641 12 12 USE ioipsl_getincom 13 13 #endif 14 14 USE comconst_mod, ONLY: pi 15 15 IMPLICIT NONE 16 16 … … 27 27 !======================================================================= 28 28 29 #include "dimensions.h" 30 #include "paramet.h" 31 #include "comgeom2.h" 32 #include "comconst.h" 33 #include "iniprint.h" 34 #include "academic.h" 29 include "dimensions.h" 30 include "paramet.h" 31 include "comgeom2.h" 32 include "iniprint.h" 33 include "academic.h" 35 34 36 35 ! arguments: -
LMDZ5/branches/testing/libf/dyn3d/gcm.F90
r2471 r2641 23 23 USE control_mod 24 24 USE mod_const_mpi, ONLY: COMM_LMDZ 25 25 USE temps_mod, ONLY: calend,start_time,annee_ref,day_ref, & 26 itau_dyn,itau_phy,day_ini,jD_ref,jH_ref,day_end 27 USE comconst_mod, ONLY: cpp, daysec, dtphys, dtvr, g, r, rad 28 USE logic_mod, ONLY: ecripar, iflag_phys, read_start 26 29 27 30 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 68 71 include "dimensions.h" 69 72 include "paramet.h" 70 include "comconst.h"71 73 include "comdissnew.h" 72 include "comvert.h"73 74 include "comgeom.h" 74 include "logic.h"75 include "temps.h"76 !!!!!!!!!!!include "control.h"77 include "ener.h"78 75 include "description.h" 79 include "serre.h"80 !include "com_io_dyn.h"81 76 include "iniprint.h" 82 77 include "tracstoke.h" … … 89 84 REAL, ALLOCATABLE, DIMENSION(:,:,:):: q! champs advectes 90 85 REAL ps(ip1jmp1) ! pression au sol 91 REAL p (ip1jmp1,llmp1 ) ! pression aux interfac.des couches86 ! REAL p (ip1jmp1,llmp1 ) ! pression aux interfac.des couches 92 87 REAL masse(ip1jmp1,llm) ! masse d'air 93 88 REAL phis(ip1jmp1) ! geopotentiel au sol 94 REAL phi(ip1jmp1,llm) ! geopotentiel95 REAL w(ip1jmp1,llm) ! vitesse verticale89 ! REAL phi(ip1jmp1,llm) ! geopotentiel 90 ! REAL w(ip1jmp1,llm) ! vitesse verticale 96 91 97 92 ! variables dynamiques intermediaire pour le transport … … 103 98 104 99 LOGICAL lafin 105 INTEGER ij,iq,l,i,j106 100 107 101 108 102 real time_step, t_wrt, t_ops 109 110 LOGICAL first111 103 112 104 ! LOGICAL call_iniphys … … 118 110 ! tansformation d'energie cinetique en energie thermique 119 111 ! cree par la dissipation 120 REAL dhecdt(ip1jmp1,llm)112 ! REAL dhecdt(ip1jmp1,llm) 121 113 ! REAL vcont(ip1jm,llm),ucont(ip1jmp1,llm) 122 114 ! REAL d_h_vcol, d_qt, d_qw, d_ql, d_ec 123 CHARACTER (len=15) :: ztit115 ! CHARACTER (len=15) :: ztit 124 116 !-jld 125 117 -
LMDZ5/branches/testing/libf/dyn3d/groupe.F
r2471 r2641 3 3 ! 4 4 subroutine groupe(pext,pbaru,pbarv,pbarum,pbarvm,wm) 5 6 use comconst_mod, only: ngroup 7 5 8 implicit none 6 9 … … 16 19 c pas besoin de w en entree. 17 20 18 #include "dimensions.h" 19 #include "paramet.h" 20 #include "comconst.h" 21 #include "comgeom2.h" 22 #include "comvert.h" 21 include "dimensions.h" 22 include "paramet.h" 23 include "comgeom2.h" 23 24 24 25 ! integer ngroup -
LMDZ5/branches/testing/libf/dyn3d/groupeun.F
r2471 r2641 3 3 ! 4 4 SUBROUTINE groupeun(jjmax,llmax,q) 5 6 USE comconst_mod, ONLY: ngroup 7 5 8 IMPLICIT NONE 6 9 7 #include "dimensions.h" 8 #include "paramet.h" 9 #include "comconst.h" 10 #include "comgeom2.h" 10 include "dimensions.h" 11 include "paramet.h" 12 include "comgeom2.h" 11 13 12 14 INTEGER jjmax,llmax … … 135 137 136 138 SUBROUTINE INIT_GROUPEUN(airen_tab, aires_tab) 139 140 USE comconst_mod, ONLY: ngroup 141 137 142 IMPLICIT NONE 138 143 139 #include "dimensions.h" 140 #include "paramet.h" 141 #include "comconst.h" 142 #include "comgeom2.h" 144 include "dimensions.h" 145 include "paramet.h" 146 include "comgeom2.h" 143 147 144 148 ! INTEGER ngroup -
LMDZ5/branches/testing/libf/dyn3d/guide_mod.F90
r2298 r2641 63 63 SUBROUTINE guide_init 64 64 65 USE control_mod 65 USE control_mod, ONLY: day_step 66 USE serre_mod, ONLY: grossismx 66 67 67 68 IMPLICIT NONE … … 70 71 INCLUDE "paramet.h" 71 72 INCLUDE "netcdf.inc" 72 73 ! For grossismx:74 include "serre.h"75 73 76 74 INTEGER :: error,ncidpl,rid,rcod … … 314 312 SUBROUTINE guide_main(itau,ucov,vcov,teta,q,masse,ps) 315 313 316 USE control_mod 314 USE control_mod, ONLY: day_step, iperiod 315 USE comconst_mod, ONLY: dtvr, daysec 316 USE comvert_mod, ONLY: ap, bp, preff, presnivs 317 317 318 318 IMPLICIT NONE … … 320 320 INCLUDE "dimensions.h" 321 321 INCLUDE "paramet.h" 322 INCLUDE "comconst.h"323 INCLUDE "comvert.h"324 322 325 323 ! Variables entree … … 542 540 SUBROUTINE guide_zonave(typ,hsize,vsize,field) 543 541 542 USE comconst_mod, ONLY: pi 543 544 544 IMPLICIT NONE 545 545 … … 547 547 INCLUDE "paramet.h" 548 548 INCLUDE "comgeom.h" 549 INCLUDE "comconst.h"550 549 551 550 ! input/output variables … … 607 606 use exner_hyb_m, only: exner_hyb 608 607 use exner_milieu_m, only: exner_milieu 608 use comconst_mod, only: kappa, cpp 609 use comvert_mod, only: preff, pressure_exner, bp, ap 609 610 IMPLICIT NONE 610 611 611 612 include "dimensions.h" 612 613 include "paramet.h" 613 include "comvert.h"614 614 include "comgeom2.h" 615 include "comconst.h"616 615 617 616 REAL, DIMENSION (iip1,jjp1), INTENT(IN) :: psi ! Psol gcm … … 777 776 do j=1,jjp1 778 777 IF (guide_teta) THEN 779 780 781 782 783 778 do i=1,iim 779 ij=(j-1)*iip1+i 780 tgui1(ij,l)=zu1(i,j,l) 781 tgui2(ij,l)=zu2(i,j,l) 782 enddo 784 783 ELSE 785 786 787 788 789 784 do i=1,iim 785 ij=(j-1)*iip1+i 786 tgui1(ij,l)=zu1(i,j,l)*cpp/pk(i,j,l) 787 tgui2(ij,l)=zu2(i,j,l)*cpp/pk(i,j,l) 788 enddo 790 789 ENDIF 791 790 tgui1(j*iip1,l)=tgui1((j-1)*iip1+1,l) … … 855 854 ! Calcul des constantes de rappel alpha (=1/tau) 856 855 856 use comconst_mod, only: pi 857 use serre_mod, only: clon, clat, grossismx, grossismy 858 857 859 implicit none 858 860 859 861 include "dimensions.h" 860 862 include "paramet.h" 861 include "comconst.h"862 863 include "comgeom2.h" 863 include "serre.h"864 864 865 865 ! input arguments : … … 1516 1516 SUBROUTINE guide_out(varname,hsize,vsize,field) 1517 1517 1518 USE comconst_mod, ONLY: pi 1519 USE comvert_mod, ONLY: presnivs 1520 1518 1521 IMPLICIT NONE 1519 1522 … … 1522 1525 INCLUDE "netcdf.inc" 1523 1526 INCLUDE "comgeom2.h" 1524 INCLUDE "comconst.h"1525 INCLUDE "comvert.h"1526 1527 1527 1528 ! Variables entree -
LMDZ5/branches/testing/libf/dyn3d/iniacademic.F90
r2298 r2641 16 16 use exner_hyb_m, only: exner_hyb 17 17 use exner_milieu_m, only: exner_milieu 18 USE comconst_mod, ONLY: cpp, kappa, g, daysec, dtvr, pi, im, jm 19 USE logic_mod, ONLY: iflag_phys, read_start 20 USE comvert_mod, ONLY: ap, bp, preff, presnivs, pressure_exner 21 USE temps_mod, ONLY: annee_ref, day_ini, day_ref 22 USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang0 18 23 19 24 ! Author: Frederic Hourdin original: 15/01/93 … … 28 33 include "dimensions.h" 29 34 include "paramet.h" 30 include "comvert.h"31 include "comconst.h"32 35 include "comgeom.h" 33 36 include "academic.h" 34 include "ener.h"35 include "temps.h"36 37 include "iniprint.h" 37 include "logic.h"38 38 39 39 ! Arguments: -
LMDZ5/branches/testing/libf/dyn3d/integrd.F
r2160 r2641 8 8 9 9 use control_mod, only : planet_type 10 use comconst_mod, only: pi 11 USE logic_mod, ONLY: leapf 12 use comvert_mod, only: ap, bp 13 USE temps_mod, ONLY: dt 10 14 11 15 IMPLICIT NONE … … 27 31 c ------------- 28 32 29 #include "dimensions.h" 30 #include "paramet.h" 31 #include "comconst.h" 32 #include "comgeom.h" 33 #include "comvert.h" 34 #include "logic.h" 35 #include "temps.h" 36 #include "serre.h" 37 #include "iniprint.h" 33 include "dimensions.h" 34 include "paramet.h" 35 include "comgeom.h" 36 include "iniprint.h" 38 37 39 38 c Arguments: -
LMDZ5/branches/testing/libf/dyn3d/leapfrog.F
r2488 r2641 20 20 use exner_hyb_m, only: exner_hyb 21 21 use exner_milieu_m, only: exner_milieu 22 USE comvert_mod, ONLY: ap,bp,pressure_exner,presnivs 23 USE comconst_mod, ONLY: cpp, dtphys, dtvr, pi, ihf 24 USE logic_mod, ONLY: iflag_phys,ok_guide,forward,leapf,apphys, 25 & statcl,conser,apdiss,purmats,ok_strato 26 USE temps_mod, ONLY: jD_ref,jH_ref,itaufin,day_ini,day_ref, 27 & start_time,dt 22 28 23 29 IMPLICIT NONE … … 54 60 c ------------- 55 61 56 #include "dimensions.h" 57 #include "paramet.h" 58 #include "comconst.h" 59 #include "comdissnew.h" 60 #include "comvert.h" 61 #include "comgeom.h" 62 #include "logic.h" 63 #include "temps.h" 64 #include "ener.h" 65 #include "description.h" 66 #include "serre.h" 67 !#include "com_io_dyn.h" 68 #include "iniprint.h" 69 #include "academic.h" 62 include "dimensions.h" 63 include "paramet.h" 64 include "comdissnew.h" 65 include "comgeom.h" 66 include "description.h" 67 include "iniprint.h" 68 include "academic.h" 70 69 71 70 REAL,INTENT(IN) :: time_0 ! not used … … 714 713 IF( MOD(itau,iecri).EQ.0) THEN 715 714 ! Ehouarn: output only during LF or Backward Matsuno 716 715 if (leapf.or.(.not.leapf.and.(.not.forward))) then 717 716 CALL geopot(ip1jmp1,teta,pk,pks,phis,phi) 718 717 unat=0. … … 724 723 if (ok_dyn_ins) then 725 724 ! write(lunout,*) "leapfrog: call writehist, itau=",itau 726 725 CALL writehist(itau,vcov,ucov,teta,phi,q,masse,ps,phis) 727 726 ! call WriteField('ucov',reshape(ucov,(/iip1,jmp1,llm/))) 728 727 ! call WriteField('vcov',reshape(vcov,(/iip1,jjm,llm/))) … … 854 853 ! write(lunout,*) "leapfrog: call writehist (b)", 855 854 ! & itau,iecri 856 855 CALL writehist(itau,vcov,ucov,teta,phi,q,masse,ps,phis) 857 856 endif ! of if (ok_dyn_ins) 858 857 #endif -
LMDZ5/branches/testing/libf/dyn3d/qminimum.F
r2298 r2641 10 10 c pour l'eau vapeur et l'eau liquide 11 11 c 12 #include "dimensions.h" 13 #include "paramet.h" 14 #include "comvert.h" 12 include "dimensions.h" 13 include "paramet.h" 15 14 c 16 15 INTEGER nqtot -
LMDZ5/branches/testing/libf/dyn3d/sw_case_williamson91_6.F
r1910 r2641 26 26 c 27 27 c======================================================================= 28 USE comconst_mod, ONLY: cpp, omeg, rad 29 USE comvert_mod, ONLY: ap, bp, preff 30 28 31 IMPLICIT NONE 29 32 c----------------------------------------------------------------------- … … 31 34 c --------------- 32 35 33 #include "dimensions.h" 34 #include "paramet.h" 35 #include "comvert.h" 36 #include "comconst.h" 37 #include "comgeom.h" 38 #include "iniprint.h" 36 include "dimensions.h" 37 include "paramet.h" 38 include "comgeom.h" 39 include "iniprint.h" 39 40 40 41 c Arguments: -
LMDZ5/branches/testing/libf/dyn3d/top_bound.F
r1910 r2641 3 3 ! 4 4 SUBROUTINE top_bound(vcov,ucov,teta,masse,dt) 5 6 USE comconst_mod, ONLY: iflag_top_bound, mode_top_bound, 7 & tau_top_bound 8 USE comvert_mod, ONLY: presnivs, preff, scaleheight 9 5 10 IMPLICIT NONE 6 11 c 7 #include "dimensions.h" 8 #include "paramet.h" 9 #include "comconst.h" 10 #include "comvert.h" 11 #include "comgeom2.h" 12 include "dimensions.h" 13 include "paramet.h" 14 include "comgeom2.h" 12 15 13 16 … … 39 42 ! NB: top_bound sponge is only called from leapfrog if ok_strato=.true. 40 43 41 ! sponge parameters: (loaded/set in conf_gcm.F ; stored in comconst .h)44 ! sponge parameters: (loaded/set in conf_gcm.F ; stored in comconst_mod) 42 45 ! iflag_top_bound=0 for no sponge 43 46 ! iflag_top_bound=1 for sponge over 4 topmost layers -
LMDZ5/branches/testing/libf/dyn3d/vlsplt.F
r2298 r2641 21 21 IMPLICIT NONE 22 22 c 23 #include "dimensions.h" 24 #include "paramet.h" 25 #include "logic.h" 26 #include "comvert.h" 27 #include "comconst.h" 23 include "dimensions.h" 24 include "paramet.h" 28 25 29 26 c … … 157 154 include "dimensions.h" 158 155 include "paramet.h" 159 include "logic.h"160 include "comvert.h"161 include "comconst.h"162 156 include "iniprint.h" 163 157 c … … 528 522 c 529 523 c -------------------------------------------------------------------- 524 USE comconst_mod, ONLY: pi 530 525 IMPLICIT NONE 531 526 c 532 #include "dimensions.h" 533 #include "paramet.h" 534 #include "logic.h" 535 #include "comvert.h" 536 #include "comconst.h" 537 #include "comgeom.h" 527 include "dimensions.h" 528 include "paramet.h" 529 include "comgeom.h" 538 530 c 539 531 c … … 893 885 IMPLICIT NONE 894 886 c 895 #include "dimensions.h" 896 #include "paramet.h" 897 #include "logic.h" 898 #include "comvert.h" 899 #include "comconst.h" 887 include "dimensions.h" 888 include "paramet.h" 900 889 c 901 890 c -
LMDZ5/branches/testing/libf/dyn3d/vlspltqs.F
r2298 r2641 23 23 c pk exner au milieu des couches necessaire pour calculer Qsat 24 24 c -------------------------------------------------------------------- 25 26 USE comconst_mod, ONLY: cpp 27 25 28 IMPLICIT NONE 26 29 c 27 #include "dimensions.h" 28 #include "paramet.h" 29 #include "logic.h" 30 #include "comvert.h" 31 #include "comconst.h" 30 include "dimensions.h" 31 include "paramet.h" 32 32 33 33 c … … 192 192 IMPLICIT NONE 193 193 c 194 #include "dimensions.h" 195 #include "paramet.h" 196 #include "logic.h" 197 #include "comvert.h" 198 #include "comconst.h" 194 include "dimensions.h" 195 include "paramet.h" 199 196 c 200 197 c … … 559 556 c 560 557 c -------------------------------------------------------------------- 558 559 USE comconst_mod, ONLY: pi 560 561 561 IMPLICIT NONE 562 562 c 563 #include "dimensions.h" 564 #include "paramet.h" 565 #include "logic.h" 566 #include "comvert.h" 567 #include "comconst.h" 568 #include "comgeom.h" 563 include "dimensions.h" 564 include "paramet.h" 565 include "comgeom.h" 569 566 c 570 567 c -
LMDZ5/branches/testing/libf/dyn3d_common/adaptdt.F
r1999 r2641 5 5 c masse) 6 6 7 USE co ntrol_mod7 USE comconst_mod, ONLY: dtvr 8 8 IMPLICIT NONE 9 9 10 #include "dimensions.h" 11 c#include "paramr2.h" 12 #include "paramet.h" 13 #include "comconst.h" 14 #include "comdissip.h" 15 #include "comvert.h" 16 #include "comgeom2.h" 17 #include "logic.h" 18 #include "temps.h" 19 #include "ener.h" 20 #include "description.h" 10 include "dimensions.h" 11 include "paramet.h" 12 include "comdissip.h" 13 include "comgeom2.h" 14 include "description.h" 21 15 22 16 c---------------------------------------------------------- -
LMDZ5/branches/testing/libf/dyn3d_common/advn.F
r1999 r2641 17 17 IMPLICIT NONE 18 18 c 19 #include "dimensions.h" 20 #include "paramet.h" 21 #include "logic.h" 22 #include "comvert.h" 23 #include "comconst.h" 24 #include "comgeom.h" 25 #include "iniprint.h" 19 include "dimensions.h" 20 include "paramet.h" 21 include "comgeom.h" 22 include "iniprint.h" 26 23 27 24 c … … 484 481 IMPLICIT NONE 485 482 c 486 #include "dimensions.h" 487 #include "paramet.h" 488 #include "logic.h" 489 #include "comvert.h" 490 #include "comconst.h" 491 #include "iniprint.h" 483 include "dimensions.h" 484 include "paramet.h" 485 include "iniprint.h" 492 486 c 493 487 c -
LMDZ5/branches/testing/libf/dyn3d_common/advx.F
r1999 r2641 18 18 C sm,s0,sx,sy,sz C 19 19 C sont les arguments de sortie pour le s-pg C 20 C 20 C C 21 21 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 22 22 C 23 23 C parametres principaux du modele 24 24 C 25 #include "dimensions.h" 26 #include "paramet.h" 27 #include "comconst.h" 28 #include "comvert.h" 25 include "dimensions.h" 26 include "paramet.h" 29 27 30 28 C Arguments : -
LMDZ5/branches/testing/libf/dyn3d_common/advxp.F
r1999 r2641 13 13 C parametres principaux du modele 14 14 C 15 #include "dimensions.h" 16 #include "paramet.h" 17 #include "comconst.h" 18 #include "comvert.h" 15 include "dimensions.h" 16 include "paramet.h" 19 17 20 18 INTEGER ntra … … 103 101 c IF (S0(i,j,l,ntra) .lt. 0. ) THEN 104 102 c PRINT*,'S0(',i,j,l,')=',S0(i,j,l,ntra) 105 c 103 c print*, 'SSX(',i,j,l,')=',SSX(i,j,l,ntra) 106 104 c print*, 'SY(',i,j,l,')=',SY(i,j,l,ntra) 107 105 c print*, 'SZ(',i,j,l,')=',SZ(i,j,l,ntra) … … 120 118 DO j = 1, jjp1 121 119 DO i = 1, iim 122 120 sqi = sqi + S0(i,j,l,ntra) 123 121 END DO 124 122 END DO … … 612 610 c DO 9999 j = 1, jjp1 613 611 c DO 9999 i = 1, iip1 614 c 612 c IF (S0(i,j,l,ntra).lt.0..and.LIMIT) THEN 615 613 c PRINT*, '-------------------' 616 c 614 c PRINT*, 'En fin de ADVXP' 617 615 c PRINT*,'S0(',i,j,l,')=',S0(i,j,l,ntra) 618 c 616 c print*, 'SSX(',i,j,l,')=',SSX(i,j,l,ntra) 619 617 c print*, 'SY(',i,j,l,')=',SY(i,j,l,ntra) 620 c 618 c print*, 'SZ(',i,j,l,')=',SZ(i,j,l,ntra) 621 619 c WRITE (*,*) 'On arrete !! - pbl en fin de ADVXP' 622 620 c STOP … … 629 627 SM(iip1,j,l) = SM(1,j,l) 630 628 S0(iip1,j,l,ntra) = S0(1,j,l,ntra) 631 632 633 629 SSX(iip1,j,l,ntra) = SSX(1,j,l,ntra) 630 SY(iip1,j,l,ntra) = SY(1,j,l,ntra) 631 SZ(iip1,j,l,ntra) = SZ(1,j,l,ntra) 634 632 END DO 635 633 END DO -
LMDZ5/branches/testing/libf/dyn3d_common/advy.F
r1999 r2641 9 9 C first-order moments (SOM) advection of tracer in Y direction C 10 10 C C 11 C Source : Pascal Simon ( Meteo, CNRM ) 12 C Adaptation : A.A. (LGGE) 11 C Source : Pascal Simon ( Meteo, CNRM ) C 12 C Adaptation : A.A. (LGGE) C 13 13 C Derniere Modif : 15/12/94 LAST 14 C 15 C sont les arguments d'entree pour le s-pg 16 C 17 C argument de sortie du s-pg 18 C 14 C C 15 C sont les arguments d'entree pour le s-pg C 16 C C 17 C argument de sortie du s-pg C 18 C C 19 19 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 20 20 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC … … 26 26 C 27 27 C 28 #include "dimensions.h" 29 #include "paramet.h" 30 #include "comconst.h" 31 #include "comvert.h" 32 #include "comgeom2.h" 28 include "dimensions.h" 29 include "paramet.h" 30 include "comgeom2.h" 33 31 34 32 C Arguments : -
LMDZ5/branches/testing/libf/dyn3d_common/advyp.F
r1999 r2641 11 11 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 12 12 C C 13 C Source : Pascal Simon ( Meteo, CNRM ) 14 C Adaptation : A.A. (LGGE) 13 C Source : Pascal Simon ( Meteo, CNRM ) C 14 C Adaptation : A.A. (LGGE) C 15 15 C Derniere Modif : 19/10/95 LAST 16 C 17 C sont les arguments d'entree pour le s-pg 18 C 19 C argument de sortie du s-pg 20 C 16 C C 17 C sont les arguments d'entree pour le s-pg C 18 C C 19 C argument de sortie du s-pg C 20 C C 21 21 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 22 22 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC … … 28 28 C 29 29 C 30 #include "dimensions.h" 31 #include "paramet.h" 32 #include "comconst.h" 33 #include "comvert.h" 34 #include "comgeom.h" 30 include "dimensions.h" 31 include "paramet.h" 32 include "comgeom.h" 35 33 36 34 C Arguments : -
LMDZ5/branches/testing/libf/dyn3d_common/advz.F
r1999 r2641 16 16 C C 17 17 C dq est l'argument de sortie pour le s-pg C 18 C 18 C C 19 19 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 20 20 C 21 21 C parametres principaux du modele 22 22 C 23 #include "dimensions.h" 24 #include "paramet.h" 25 #include "comconst.h" 26 #include "comvert.h" 23 include "dimensions.h" 24 include "paramet.h" 27 25 28 26 C #include "traceur.h" -
LMDZ5/branches/testing/libf/dyn3d_common/advzp.F
r1999 r2641 31 31 C parametres principaux du modele 32 32 C 33 #include "dimensions.h" 34 #include "paramet.h" 35 #include "comconst.h" 36 #include "comvert.h" 37 #include "comgeom.h" 33 include "dimensions.h" 34 include "paramet.h" 35 include "comgeom.h" 38 36 C 39 37 C Arguments : … … 356 354 DO j = 1,jjp1 357 355 SM(iip1,j,l) = SM(1,j,l) 358 356 S0(iip1,j,l,ntra) = S0(1,j,l,ntra) 359 357 SSX(iip1,j,l,ntra) = SSX(1,j,l,ntra) 360 358 SY(iip1,j,l,ntra) = SY(1,j,l,ntra) 361 359 SZ(iip1,j,l,ntra) = SZ(1,j,l,ntra) 362 360 ENDDO 363 361 ENDDO 364 c 362 c C------------------------------------------------------------- 365 363 C *** Test : diag de la qqtite totale de tarceur 366 364 C dans l'atmosphere avant l'advection en z -
LMDZ5/branches/testing/libf/dyn3d_common/bernoui.F
r1999 r2641 25 25 c ------------- 26 26 c 27 #include "dimensions.h" 28 #include "paramet.h" 29 #include "logic.h" 27 include "dimensions.h" 28 include "paramet.h" 30 29 c 31 30 c Arguments: -
LMDZ5/branches/testing/libf/dyn3d_common/caldyn0.F90
r2408 r2641 7 7 !------------------------------------------------------------------------------- 8 8 USE control_mod, ONLY: resetvarc 9 USE comvert_mod, ONLY: ap, bp 9 10 IMPLICIT NONE 10 11 include "dimensions.h" 11 12 include "paramet.h" 12 include "comconst.h"13 include "comvert.h"14 13 include "comgeom.h" 15 14 !=============================================================================== -
LMDZ5/branches/testing/libf/dyn3d_common/conf_planete.F90
r1999 r2641 10 10 USE ioipsl_getincom 11 11 #endif 12 USE comconst_mod, ONLY: pi, g, molmass, kappa, cpp, omeg, rad, & 13 year_day, daylen, daysec, ihf 14 USE comvert_mod, ONLY: preff, pa 12 15 IMPLICIT NONE 13 16 ! … … 15 18 ! Declarations : 16 19 ! -------------- 17 #include "dimensions.h" 18 #include "comconst.h" 19 #include "comvert.h" 20 20 21 ! 21 22 ! local: -
LMDZ5/branches/testing/libf/dyn3d_common/convmas.F90
r2408 r2641 9 9 include "paramet.h" 10 10 include "comgeom.h" 11 include "logic.h"12 11 !=============================================================================== 13 12 ! Arguments: -
LMDZ5/branches/testing/libf/dyn3d_common/coordij.F
r1999 r2641 11 11 c======================================================================= 12 12 13 USE comconst_mod, ONLY: pi 14 13 15 IMPLICIT NONE 14 16 REAL lon,lat … … 16 18 INTEGER i,j 17 19 18 #include "dimensions.h" 19 #include "paramet.h" 20 #include "comconst.h" 21 #include "comgeom.h" 22 #include "serre.h" 20 include "dimensions.h" 21 include "paramet.h" 22 include "comgeom.h" 23 23 24 24 real zlon,zlat -
LMDZ5/branches/testing/libf/dyn3d_common/disvert.F90
r2160 r2641 10 10 use new_unit_m, only: new_unit 11 11 use assert_m, only: assert 12 USE comvert_mod, ONLY: ap, bp, nivsigs, nivsig, dpres, presnivs, & 13 pa, preff, scaleheight 14 USE logic_mod, ONLY: ok_strato 12 15 13 16 IMPLICIT NONE … … 15 18 include "dimensions.h" 16 19 include "paramet.h" 17 include "comvert.h"18 include "comconst.h"19 20 include "iniprint.h" 20 include "logic.h"21 21 22 22 !------------------------------------------------------------------------------- … … 24 24 ! Triggered by the levels number llm. 25 25 !------------------------------------------------------------------------------- 26 ! Read in "comvert .h":26 ! Read in "comvert_mod": 27 27 28 28 ! pa !--- vertical coordinate is close to a PRESSURE COORDINATE FOR P … … 30 30 31 31 ! preff !--- REFERENCE PRESSURE (101325 Pa) 32 ! Written in "comvert .h":32 ! Written in "comvert_mod": 33 33 ! ap(llm+1), bp(llm+1) !--- Ap, Bp HYBRID COEFFICIENTS AT INTERFACES 34 34 ! aps(llm), bps(llm) !--- Ap, Bp HYBRID COEFFICIENTS AT MID-LAYERS -
LMDZ5/branches/testing/libf/dyn3d_common/disvert_noterre.F
r1999 r2641 12 12 use ioipsl_getincom 13 13 #endif 14 USE comvert_mod, ONLY: ap,bp,aps,bps,presnivs,pseudoalt, 15 & nivsig,nivsigs,pa,preff,scaleheight 16 USE comconst_mod, ONLY: kappa 17 USE logic_mod, ONLY: hybrid 14 18 15 19 IMPLICIT NONE 16 20 17 #include "dimensions.h" 18 #include "paramet.h" 19 #include "comvert.h" 20 #include "comconst.h" 21 #include "logic.h" 22 #include "iniprint.h" 21 include "dimensions.h" 22 include "paramet.h" 23 include "iniprint.h" 23 24 c 24 25 c======================================================================= -
LMDZ5/branches/testing/libf/dyn3d_common/divgrad.F
r1999 r2641 20 20 c ------------- 21 21 c 22 #include "dimensions.h" 23 #include "paramet.h" 24 #include "comgeom.h" 25 #include "comdissipn.h" 26 #include "logic.h" 22 include "dimensions.h" 23 include "paramet.h" 24 include "comgeom.h" 25 include "comdissipn.h" 27 26 c 28 27 INTEGER klevel -
LMDZ5/branches/testing/libf/dyn3d_common/exner_hyb_m.F90
r2056 r2641 33 33 ! 34 34 ! 35 USE comconst_mod, ONLY: jmp1, cpp, kappa, r 36 USE comvert_mod, ONLY: preff 37 38 IMPLICIT NONE 39 35 40 include "dimensions.h" 36 41 include "paramet.h" 37 include "comconst.h"38 42 include "comgeom.h" 39 include "comvert.h"40 include "serre.h"41 43 42 44 INTEGER ngrid -
LMDZ5/branches/testing/libf/dyn3d_common/exner_milieu_m.F90
r2056 r2641 30 30 ! 31 31 ! 32 USE comconst_mod, ONLY: jmp1, cpp, kappa, r 33 USE comvert_mod, ONLY: preff 34 35 IMPLICIT NONE 36 32 37 include "dimensions.h" 33 38 include "paramet.h" 34 include "comconst.h"35 39 include "comgeom.h" 36 include "comvert.h"37 include "serre.h"38 40 39 41 INTEGER ngrid -
LMDZ5/branches/testing/libf/dyn3d_common/fxhyp_m.F90
r2258 r2641 22 22 use nrtype, only: pi, pi_d, twopi, twopi_d, k8 23 23 use principal_cshift_m, only: principal_cshift 24 use serre_mod, only: clon, grossismx, dzoomx, taux 24 25 25 26 include "dimensions.h" 26 27 ! for iim 27 28 include "serre.h"29 ! for clon, grossismx, dzoomx, taux30 28 31 29 REAL, intent(out):: xprimm025(:), rlonv(:), xprimv(:) ! (iim + 1) -
LMDZ5/branches/testing/libf/dyn3d_common/fxy.F
r1999 r2641 5 5 , rlatu2,yprimu2, 6 6 , rlonu,xprimu,rlonv,xprimv,rlonm025,xprimm025,rlonp025,xprimp025) 7 8 USE comconst_mod, ONLY: pi 9 USE serre_mod, ONLY: pxo,pyo,alphax,alphay,transx,transy 7 10 8 11 IMPLICIT NONE … … 14 17 c 15 18 c 16 #include "dimensions.h" 17 #include "paramet.h" 18 #include "serre.h" 19 #include "comconst.h" 19 include "dimensions.h" 20 include "paramet.h" 20 21 21 22 INTEGER i,j -
LMDZ5/branches/testing/libf/dyn3d_common/fxysinus.F
r1999 r2641 7 7 8 8 9 USE comconst_mod, ONLY: pi 9 10 IMPLICIT NONE 10 11 c … … 17 18 #include "dimensions.h" 18 19 #include "paramet.h" 19 #include "comconst.h"20 20 21 21 INTEGER i,j -
LMDZ5/branches/testing/libf/dyn3d_common/fyhyp_m.F90
r2258 r2641 18 18 use coefpoly_m, only: coefpoly 19 19 use nrtype, only: k8 20 use serre_mod, only: clat, grossismy, dzoomy, tauy 20 21 21 22 include "dimensions.h" 22 23 ! for jjm 23 24 include "serre.h"25 ! for clat, grossismy, dzoomy, tauy26 24 27 25 REAL, intent(out):: rlatu(jjm + 1), yyprimu(jjm + 1) -
LMDZ5/branches/testing/libf/dyn3d_common/geopot.F
r1999 r2641 27 27 c ------------- 28 28 29 #include "dimensions.h" 30 #include "paramet.h" 31 #include "comvert.h" 29 include "dimensions.h" 30 include "paramet.h" 32 31 33 32 c Arguments: -
LMDZ5/branches/testing/libf/dyn3d_common/gradiv.F
r1999 r2641 19 19 IMPLICIT NONE 20 20 c 21 #include "dimensions.h" 22 #include "paramet.h" 23 #include "comdissipn.h" 24 #include "logic.h" 21 include "dimensions.h" 22 include "paramet.h" 23 include "comdissipn.h" 25 24 26 25 INTEGER klevel -
LMDZ5/branches/testing/libf/dyn3d_common/grilles_gcm_netcdf_sub.F90
r2258 r2641 9 9 SUBROUTINE grilles_gcm_netcdf_sub(masque,phis) 10 10 11 USE comconst_mod, ONLY: cpp, kappa, g, omeg, daysec, rad, pi 12 USE comvert_mod, ONLY: presnivs, preff, pa 13 11 14 IMPLICIT NONE 12 15 13 16 INCLUDE "dimensions.h" 14 17 INCLUDE "paramet.h" 15 INCLUDE "comconst.h"16 18 INCLUDE "comgeom.h" 17 INCLUDE "comvert.h"18 19 INCLUDE "netcdf.inc" 19 INCLUDE "serre.h"20 20 21 21 -
LMDZ5/branches/testing/libf/dyn3d_common/iniconst.F90
r2056 r2641 11 11 use ioipsl_getincom 12 12 #endif 13 13 USE comconst_mod, ONLY: im, imp1, jm, jmp1, lllm, lllmm1, lllmp1, & 14 unsim, pi, r, kappa, cpp, dtvr, dtphys 15 USE comvert_mod, ONLY: disvert_type, pressure_exner 16 14 17 IMPLICIT NONE 15 18 ! … … 21 24 include "dimensions.h" 22 25 include "paramet.h" 23 include "comconst.h"24 include "temps.h"25 include "comvert.h"26 26 include "iniprint.h" 27 27 -
LMDZ5/branches/testing/libf/dyn3d_common/inidissip.F90
r1999 r2641 12 12 13 13 USE control_mod, only : dissip_period,iperiod 14 USE comconst_mod, ONLY: dissip_deltaz, dissip_factz, dissip_zref, & 15 dtdiss, dtvr, rad 16 USE comvert_mod, ONLY: preff, presnivs 14 17 15 18 IMPLICIT NONE … … 17 20 include "paramet.h" 18 21 include "comdissipn.h" 19 include "comconst.h"20 include "comvert.h"21 include "logic.h"22 22 include "iniprint.h" 23 23 -
LMDZ5/branches/testing/libf/dyn3d_common/inigeom.F
r2258 r2641 18 18 use fxhyp_m, only: fxhyp 19 19 use fyhyp_m, only: fyhyp 20 USE comconst_mod, ONLY: pi, g, omeg, rad 21 USE logic_mod, ONLY: fxyhypb, ysinus 22 USE serre_mod, ONLY: clon,clat,grossismx,grossismy,dzoomx,dzoomy, 23 & alphax,alphay,taux,tauy,transx,transy,pxo,pyo 20 24 IMPLICIT NONE 21 25 c 22 #include "dimensions.h" 23 #include "paramet.h" 24 #include "comconst.h" 25 #include "comgeom2.h" 26 #include "serre.h" 27 #include "logic.h" 28 #include "comdissnew.h" 26 include "dimensions.h" 27 include "paramet.h" 28 include "comgeom2.h" 29 include "comdissnew.h" 29 30 30 31 c----------------------------------------------------------------------- -
LMDZ5/branches/testing/libf/dyn3d_common/initdynav.F90
r2298 r2641 9 9 use com_io_dyn_mod, only : histaveid,histvaveid,histuaveid, & 10 10 dynhistave_file,dynhistvave_file,dynhistuave_file 11 USE comconst_mod, ONLY: pi 12 USE comvert_mod, ONLY: presnivs 13 USE temps_mod, ONLY: itau_dyn 14 11 15 implicit none 12 16 … … 34 38 include "dimensions.h" 35 39 include "paramet.h" 36 include "comconst.h"37 include "comvert.h"38 40 include "comgeom.h" 39 include "temps.h"40 include "ener.h"41 include "logic.h"42 41 include "description.h" 43 include "serre.h"44 42 include "iniprint.h" 45 43 -
LMDZ5/branches/testing/libf/dyn3d_common/initfluxsto.F
r2298 r2641 9 9 USE IOIPSL 10 10 #endif 11 USE comconst_mod, ONLY: pi 12 USE comvert_mod, ONLY: nivsigs 13 USE temps_mod, ONLY: annee_ref, day_ref, itau_dyn 14 11 15 implicit none 12 16 … … 38 42 C 39 43 C Declarations 40 #include "dimensions.h" 41 #include "paramet.h" 42 #include "comconst.h" 43 #include "comvert.h" 44 #include "comgeom.h" 45 #include "temps.h" 46 #include "ener.h" 47 #include "logic.h" 48 #include "description.h" 49 #include "serre.h" 50 #include "iniprint.h" 44 include "dimensions.h" 45 include "paramet.h" 46 include "comgeom.h" 47 include "description.h" 48 include "iniprint.h" 51 49 52 50 C Arguments … … 86 84 CALL ymds2ju(zan, 1, idayref, 0.0, zjulian) 87 85 tau0 = itau_dyn 88 89 86 87 do jj = 1, jjp1 90 88 do ii = 1, iip1 91 89 rlong(ii,jj) = rlonu(ii) * 180. / pi … … 113 111 . 1, iip1, 1, jjm, 114 112 . tau0, zjulian, tstep, vhoriid, filevid) 115 116 rl(1,1) = 1. 113 114 rl(1,1) = 1. 117 115 call histbeg('defstoke.nc', 1, rl, 1, rl, 118 116 . 1, 1, 1, 1, … … 131 129 call histhori(fileid, iip1, rlong, jjp1, rlat, 'scalar', 132 130 . 'Grille points scalaires', thoriid) 133 131 134 132 C 135 133 C Appel a histvert pour la grille verticale … … 150 148 C 151 149 C Appels a histdef pour la definition des variables a sauvegarder 152 153 150 151 CALL histdef(fileid, "phis", "Surface geop. height", "-", 154 152 . iip1,jjp1,thoriid, 1,1,1, -99, 32, 155 153 . "once", t_ops, t_wrt) … … 158 156 . iip1,jjp1,thoriid, 1,1,1, -99, 32, 159 157 . "once", t_ops, t_wrt) 160 161 158 159 CALL histdef(filedid, "dtvr", "tps dyn", "s", 162 160 . 1,1,dhoriid, 1,1,1, -99, 32, 163 161 . "once", t_ops, t_wrt) … … 223 221 call histsync(filedid) 224 222 endif 225 223 226 224 #else 227 225 ! tell the user this routine should be run with ioipsl -
LMDZ5/branches/testing/libf/dyn3d_common/inithist.F
r2298 r2641 10 10 use com_io_dyn_mod, only : histid,histvid,histuid, & 11 11 & dynhist_file,dynhistv_file,dynhistu_file 12 12 USE comconst_mod, ONLY: pi 13 USE comvert_mod, ONLY: presnivs 14 USE temps_mod, ONLY: itau_dyn 15 13 16 implicit none 14 17 … … 38 41 C 39 42 C Declarations 40 #include "dimensions.h" 41 #include "paramet.h" 42 #include "comconst.h" 43 #include "comvert.h" 44 #include "comgeom.h" 45 #include "temps.h" 46 #include "ener.h" 47 #include "logic.h" 48 #include "description.h" 49 #include "serre.h" 50 #include "iniprint.h" 43 include "dimensions.h" 44 include "paramet.h" 45 include "comgeom.h" 46 include "description.h" 47 include "iniprint.h" 51 48 52 49 C Arguments -
LMDZ5/branches/testing/libf/dyn3d_common/inter_barxy_m.F90
r1999 r2641 374 374 375 375 use assert_eq_m, only: assert_eq 376 use comconst_mod, only: pi 376 377 377 378 IMPLICIT NONE 378 379 include "comconst.h"380 ! (for "pi")381 379 382 380 REAL, intent(in):: xi(:) … … 431 429 ! order. 432 430 431 use comconst_mod, only: pi 432 433 433 IMPLICIT NONE 434 435 include "comconst.h"436 ! (for "pi")437 434 438 435 REAL, intent(in):: xi(:) ! angle, in rad or degrees -
LMDZ5/branches/testing/libf/dyn3d_common/interpost.F
r1999 r2641 7 7 8 8 9 #include "dimensions.h" 10 #include "paramet.h" 11 #include "comconst.h" 12 #include "comvert.h" 13 #include "comgeom2.h" 9 include "dimensions.h" 10 include "paramet.h" 11 include "comgeom2.h" 14 12 15 13 c Arguments -
LMDZ5/branches/testing/libf/dyn3d_common/interpre.F
r2160 r2641 6 6 s unatppm,vnatppm,psppm) 7 7 8 USE control_mod 8 USE comconst_mod, ONLY: g 9 USE comvert_mod, ONLY: ap, bp 9 10 10 11 implicit none 11 12 12 #include "dimensions.h" 13 c#include "paramr2.h" 14 #include "paramet.h" 15 #include "comconst.h" 16 #include "comdissip.h" 17 #include "comvert.h" 18 #include "comgeom2.h" 19 #include "logic.h" 20 #include "temps.h" 21 #include "ener.h" 22 #include "description.h" 13 include "dimensions.h" 14 include "paramet.h" 15 include "comdissip.h" 16 include "comgeom2.h" 17 include "description.h" 23 18 24 19 c--------------------------------------------------- … … 77 72 do j=1,jjm 78 73 do i=1,iip1 79 vnat(i,j,l)=-pbarv(i,j,l)/masseby(i,j,l)*cv(i,j) 74 vnat(i,j,l)=-pbarv(i,j,l)/masseby(i,j,l)*cv(i,j) 80 75 enddo 81 76 enddo … … 119 114 vnatppm(i,j,l)=vnat(i,j,llm-l+1) 120 115 fluxwppm(i,j,l)=fluxw(i,j,llm-l+1) 121 qppm(i,j,l)=q(i,j,llm-l+1) 116 qppm(i,j,l)=q(i,j,llm-l+1) 122 117 enddo 123 118 enddo -
LMDZ5/branches/testing/libf/dyn3d_common/invert_zoom_x_m.F90
r2258 r2641 11 11 use coefpoly_m, only: coefpoly 12 12 use nrtype, only: pi, pi_d, twopi_d, k8 13 use serre_mod, only: clon 13 14 14 15 include "dimensions.h" 15 16 ! for iim 16 17 include "serre.h"18 ! for clon19 17 20 18 REAL(K8), intent(in):: Xf(0:), xtild(0:), Xprimt(0:) ! (0:2 * nmax) -
LMDZ5/branches/testing/libf/dyn3d_common/limx.F
r1999 r2641 15 15 IMPLICIT NONE 16 16 c 17 #include "dimensions.h" 18 #include "paramet.h" 19 #include "logic.h" 20 #include "comvert.h" 21 #include "comconst.h" 22 #include "comgeom.h" 17 include "dimensions.h" 18 include "paramet.h" 19 include "comgeom.h" 23 20 c 24 21 c -
LMDZ5/branches/testing/libf/dyn3d_common/limy.F
r1999 r2641 14 14 c 15 15 c -------------------------------------------------------------------- 16 USE comconst_mod, ONLY: pi 16 17 IMPLICIT NONE 17 18 c 18 #include "dimensions.h" 19 #include "paramet.h" 20 #include "logic.h" 21 #include "comvert.h" 22 #include "comconst.h" 23 #include "comgeom.h" 19 include "dimensions.h" 20 include "paramet.h" 21 include "comgeom.h" 24 22 c 25 23 c -
LMDZ5/branches/testing/libf/dyn3d_common/limz.F
r1999 r2641 15 15 IMPLICIT NONE 16 16 c 17 #include "dimensions.h" 18 #include "paramet.h" 19 #include "logic.h" 20 #include "comvert.h" 21 #include "comconst.h" 22 #include "comgeom.h" 17 include "dimensions.h" 18 include "paramet.h" 19 include "comgeom.h" 23 20 c 24 21 c -
LMDZ5/branches/testing/libf/dyn3d_common/massbarxy.F90
r2408 r2641 9 9 include "dimensions.h" 10 10 include "paramet.h" 11 include "comconst.h"12 11 include "comgeom.h" 13 12 !=============================================================================== -
LMDZ5/branches/testing/libf/dyn3d_common/massdair.F
r1999 r2641 18 18 IMPLICIT NONE 19 19 c 20 #include "dimensions.h" 21 #include "paramet.h" 22 #include "comconst.h" 23 #include "comgeom.h" 20 include "dimensions.h" 21 include "paramet.h" 22 include "comgeom.h" 24 23 c 25 24 c ..... arguments .... -
LMDZ5/branches/testing/libf/dyn3d_common/nxgrarot.F
r1999 r2641 19 19 c 20 20 c 21 #include "dimensions.h" 22 #include "paramet.h" 23 #include "comdissipn.h" 24 #include "logic.h" 21 include "dimensions.h" 22 include "paramet.h" 23 include "comdissipn.h" 25 24 c 26 25 INTEGER klevel -
LMDZ5/branches/testing/libf/dyn3d_common/pentes_ini.F
r1999 r2641 3 3 ! 4 4 SUBROUTINE pentes_ini (q,w,masse,pbaru,pbarv,mode) 5 6 USE comconst_mod, ONLY: pi, dtvr 7 5 8 IMPLICIT NONE 6 9 … … 22 25 23 26 24 #include "dimensions.h" 25 #include "paramet.h" 26 #include "comconst.h" 27 #include "comvert.h" 28 #include "comgeom2.h" 27 include "dimensions.h" 28 include "paramet.h" 29 include "comgeom2.h" 29 30 30 31 c Arguments: … … 437 438 438 439 DO l = 1,llm 439 440 440 DO j = 1,jjp1 441 DO i = 1,iip1 441 442 IF (q(i,j,l,0).lt.0.) THEN 442 443 c PRINT*,'------------ BIP-----------' … … 445 446 c PRINT*,'QY(',i,j,l,')=',q(i,j,l,2) 446 447 c PRINT*,'QZ(',i,j,l,')=',q(i,j,l,3) 447 c 448 c PRINT*,' PBL EN SORTIE DE PENTES' 448 449 q(i,j,l,0)=0. 449 450 c STOP -
LMDZ5/branches/testing/libf/dyn3d_common/prather.F
r1999 r2641 3 3 ! 4 4 SUBROUTINE prather (q,w,masse,pbaru,pbarv,nt,dt) 5 6 USE comconst_mod, ONLY: pi 7 5 8 IMPLICIT NONE 6 9 … … 19 22 20 23 21 #include "dimensions.h" 22 #include "paramet.h" 23 #include "comconst.h" 24 #include "comvert.h" 25 #include "comgeom2.h" 24 include "dimensions.h" 25 include "paramet.h" 26 include "comgeom2.h" 26 27 27 28 c Arguments: -
LMDZ5/branches/testing/libf/dyn3d_common/principal_cshift_m.F90
r2258 r2641 12 12 13 13 use nrtype, only: twopi 14 use serre_mod, only: clon 14 15 15 16 include "dimensions.h" 16 17 ! for iim 17 18 include "serre.h"19 ! for clon20 18 21 19 integer, intent(in):: is2 -
LMDZ5/branches/testing/libf/dyn3d_common/sortvarc.F
r2160 r2641 7 7 8 8 USE control_mod, ONLY: resetvarc 9 USE comconst_mod, ONLY: dtvr, daysec, g, rad, omeg 10 USE logic_mod, ONLY: read_start 11 USE ener_mod, ONLY: etot,ptot,ztot,stot,ang, 12 & etot0,ptot0,ztot0,stot0,ang0, 13 & rmsdpdt,rmsv 9 14 IMPLICIT NONE 10 15 … … 27 32 INCLUDE "dimensions.h" 28 33 INCLUDE "paramet.h" 29 INCLUDE "comconst.h"30 INCLUDE "comvert.h"31 34 INCLUDE "comgeom.h" 32 INCLUDE "ener.h"33 INCLUDE "logic.h"34 INCLUDE "temps.h"35 35 INCLUDE "iniprint.h" 36 36 -
LMDZ5/branches/testing/libf/dyn3d_common/tourpot.F90
r2408 r2641 9 9 include "paramet.h" 10 10 include "comgeom.h" 11 include "logic.h"12 11 !=============================================================================== 13 12 ! Arguments: -
LMDZ5/branches/testing/libf/dyn3d_common/traceurpole.F
r1999 r2641 4 4 subroutine traceurpole(q,masse) 5 5 6 USE control_mod7 8 6 implicit none 9 7 10 #include "dimensions.h" 11 c#include "paramr2.h" 12 #include "paramet.h" 13 #include "comconst.h" 14 #include "comdissip.h" 15 #include "comvert.h" 16 #include "comgeom2.h" 17 #include "logic.h" 18 #include "temps.h" 19 #include "ener.h" 20 #include "description.h" 8 include "dimensions.h" 9 include "paramet.h" 10 include "comdissip.h" 11 include "comgeom2.h" 12 include "description.h" 21 13 22 14 -
LMDZ5/branches/testing/libf/dyn3d_common/ugeostr.F90
r1999 r2641 11 11 ! levels are pressure levels. 12 12 13 use comconst_mod, only: omeg, rad 14 13 15 implicit none 14 16 15 17 include "dimensions.h" 16 18 include "paramet.h" 17 include "comconst.h"18 19 include "comgeom2.h" 19 20 -
LMDZ5/branches/testing/libf/dyn3d_common/vitvert.F90
r2408 r2641 5 5 !------------------------------------------------------------------------------- 6 6 ! Purpose: Compute vertical speed at sigma levels. 7 USE comvert_mod, ONLY: bp 7 8 IMPLICIT NONE 8 9 include "dimensions.h" 9 10 include "paramet.h" 10 include "comvert.h"11 11 !=============================================================================== 12 12 ! Arguments: -
LMDZ5/branches/testing/libf/dyn3d_common/writedynav.F90
r2298 r2641 8 8 USE infotrac, ONLY : nqtot, ttext 9 9 use com_io_dyn_mod, only : histaveid, histvaveid, histuaveid 10 USE comconst_mod, ONLY: cpp 11 USE temps_mod, ONLY: itau_dyn 10 12 11 13 implicit none … … 31 33 include "dimensions.h" 32 34 include "paramet.h" 33 include "comconst.h"34 include "comvert.h"35 35 include "comgeom.h" 36 include "temps.h"37 include "ener.h"38 include "logic.h"39 36 include "description.h" 40 include "serre.h"41 37 include "iniprint.h" 42 38 -
LMDZ5/branches/testing/libf/dyn3d_common/writehist.F
r2298 r2641 9 9 USE infotrac, ONLY : nqtot, ttext 10 10 use com_io_dyn_mod, only : histid,histvid,histuid 11 USE temps_mod, ONLY: itau_dyn 12 11 13 implicit none 12 14 … … 33 35 C 34 36 C Declarations 35 #include "dimensions.h" 36 #include "paramet.h" 37 #include "comconst.h" 38 #include "comvert.h" 39 #include "comgeom.h" 40 #include "temps.h" 41 #include "ener.h" 42 #include "logic.h" 43 #include "description.h" 44 #include "serre.h" 45 #include "iniprint.h" 37 include "dimensions.h" 38 include "paramet.h" 39 include "comgeom.h" 40 include "description.h" 41 include "iniprint.h" 46 42 47 43 C -
LMDZ5/branches/testing/libf/dyn3dmem/addfi_loc.F
r1999 r2641 46 46 c ------------------ 47 47 c 48 #include "dimensions.h" 49 #include "paramet.h" 50 #include "comconst.h" 51 #include "comgeom.h" 52 #include "serre.h" 48 include "dimensions.h" 49 include "paramet.h" 50 include "comgeom.h" 53 51 c 54 52 c Arguments : -
LMDZ5/branches/testing/libf/dyn3dmem/advect_new_loc.F
r1910 r2641 7 7 USE write_field_loc 8 8 USE advect_new_mod 9 USE comconst_mod, ONLY: daysec 10 USE logic_mod, ONLY: conser 11 9 12 IMPLICIT NONE 10 13 c======================================================================= … … 27 30 c ------------- 28 31 29 #include "dimensions.h" 30 #include "paramet.h" 31 #include "comconst.h" 32 #include "comvert.h" 33 #include "comgeom.h" 34 #include "logic.h" 35 #include "ener.h" 32 include "dimensions.h" 33 include "paramet.h" 34 include "comgeom.h" 36 35 37 36 c Arguments: … … 61 60 c ------------------------- 62 61 63 IF (conser ) THEN62 IF (conser.AND.1==0) THEN 64 63 deuxjour = 2. * daysec 65 64 … … 122 121 123 122 uav(ij,l)=0.25*(ucov(ij,l)+ucov(ij-iip1,l)) 124 . 123 . +0.25*(ucov(ij+iip1,l)+ucov(ij,l)) 125 124 ENDDO 126 125 -
LMDZ5/branches/testing/libf/dyn3dmem/advtrac_loc.F
r2298 r2641 27 27 USE control_mod, ONLY: iapp_tracvl, day_step, planet_type 28 28 USE advtrac_mod, ONLY: finmasse 29 USE comconst_mod, ONLY: dtvr 29 30 IMPLICIT NONE 30 31 c 31 #include "dimensions.h" 32 #include "paramet.h" 33 #include "comconst.h" 34 #include "comvert.h" 35 #include "comdissip.h" 36 #include "comgeom2.h" 37 #include "logic.h" 38 #include "temps.h" 39 #include "ener.h" 40 #include "description.h" 32 include "dimensions.h" 33 include "paramet.h" 34 include "comdissip.h" 35 include "comgeom2.h" 36 include "description.h" 41 37 42 38 c------------------------------------------------------------------- … … 172 168 #endif 173 169 174 170 GOTO 1234 175 171 c----------------------------------------------------------- 176 172 c Appel des sous programmes d'advection … … 184 180 if(iadv(iq).eq.10) THEN 185 181 186 !LF 182 !LF call vlsplt_p(q(1,1,iq),2.,massem,wg,pbarug,pbarvg,dtvr) 187 183 188 184 c ---------------------------------------------------------------- -
LMDZ5/branches/testing/libf/dyn3dmem/bernoui_loc.F
r1910 r2641 24 24 c ------------- 25 25 c 26 #include "dimensions.h" 27 #include "paramet.h" 28 #include "logic.h" 26 include "dimensions.h" 27 include "paramet.h" 29 28 c 30 29 c Arguments: -
LMDZ5/branches/testing/libf/dyn3dmem/bilan_dyn_loc.F
r2488 r2641 17 17 use misc_mod 18 18 USE write_field_loc 19 USE comconst_mod, ONLY: cpp, pi 20 USE comvert_mod, ONLY: presnivs 21 USE temps_mod, ONLY: annee_ref, day_ref, itau_dyn 22 19 23 IMPLICIT NONE 20 24 21 #include "dimensions.h" 22 #include "paramet.h" 23 #include "comconst.h" 24 #include "comvert.h" 25 #include "comgeom2.h" 26 #include "temps.h" 27 #include "iniprint.h" 25 include "dimensions.h" 26 include "paramet.h" 27 include "comgeom2.h" 28 include "iniprint.h" 28 29 29 30 c==================================================================== … … 598 599 do l=1,llm 599 600 Q_cum(:,jjb:jje,l,iQ)=Q_cum(:,jjb:jje,l,iQ) 600 . 601 . /masse_cum(:,jjb:jje,l) 601 602 enddo 602 603 !$OMP ENDDO NOWAIT -
LMDZ5/branches/testing/libf/dyn3dmem/caladvtrac_loc.F
r2298 r2641 29 29 30 30 31 #include "dimensions.h" 32 #include "paramet.h" 33 #include "comconst.h" 31 include "dimensions.h" 32 include "paramet.h" 34 33 35 34 c Arguments: … … 210 209 call resume_timer(timer_caldyn) 211 210 c$OMP END MASTER 212 c$OMP BARRIER 211 c$OMP BARRIER 213 212 iadvtr=0 214 213 ENDIF ! if iadvtr.EQ.iapp_tracvl -
LMDZ5/branches/testing/libf/dyn3dmem/caldyn_loc.F
r1999 r2641 12 12 USE caldyn_mod, ONLY: vcont, ucont, ang, p, massebx, masseby, 13 13 & vorpot, ecin, bern, massebxy, convm 14 USE comvert_mod, ONLY: ap, bp 14 15 15 16 IMPLICIT NONE … … 31 32 ! ---------------- 32 33 33 #include "dimensions.h" 34 #include "paramet.h" 35 #include "comconst.h" 36 #include "comvert.h" 37 #include "comgeom.h" 34 include "dimensions.h" 35 include "paramet.h" 36 include "comgeom.h" 38 37 39 38 ! Arguments: -
LMDZ5/branches/testing/libf/dyn3dmem/call_calfis_mod.F90
r2408 r2641 82 82 USE write_field_loc 83 83 USE write_field 84 USE comconst_mod, ONLY: dtphys 85 USE logic_mod, ONLY: leapf, forward, ok_strato 86 USE comvert_mod, ONLY: ap, bp, pressure_exner 87 USE temps_mod, ONLY: day_ini, day_ref, jd_ref, jh_ref, start_time 88 84 89 IMPLICIT NONE 85 INCLUDE "comconst.h"86 INCLUDE "comvert.h"87 INCLUDE "logic.h"88 INCLUDE "temps.h"89 90 INCLUDE "iniprint.h" 90 91 -
LMDZ5/branches/testing/libf/dyn3dmem/conf_gcm.F90
r2471 r2641 17 17 USE infotrac, ONLY : type_trac 18 18 use assert_m, only: assert 19 USE comconst_mod, ONLY: dissip_deltaz, dissip_factz, dissip_zref, & 20 iflag_top_bound, mode_top_bound, tau_top_bound, & 21 ngroup 22 USE logic_mod, ONLY: fxyhypb, iflag_phys, ok_etat0, ok_gradsfile, & 23 ok_guide, ok_limit, ok_strato, purmats, read_start, & 24 ysinus 25 USE serre_mod, ONLY: clon,clat,grossismx,grossismy,dzoomx,dzoomy, & 26 alphax,alphay,taux,tauy 27 USE temps_mod, ONLY: calend 19 28 20 29 IMPLICIT NONE … … 35 44 include "dimensions.h" 36 45 include "paramet.h" 37 include "logic.h"38 include "serre.h"39 46 include "comdissnew.h" 40 include "temps.h"41 include "comconst.h"42 47 include "iniprint.h" 43 48 -
LMDZ5/branches/testing/libf/dyn3dmem/convmas1_loc.F90
r2408 r2641 12 12 include "paramet.h" 13 13 include "comgeom.h" 14 include "logic.h"15 14 !=============================================================================== 16 15 ! Arguments: -
LMDZ5/branches/testing/libf/dyn3dmem/convmas2_loc.F90
r2408 r2641 11 11 include "paramet.h" 12 12 include "comgeom.h" 13 include "logic.h"14 13 !=============================================================================== 15 14 ! Arguments: -
LMDZ5/branches/testing/libf/dyn3dmem/convmas_loc.F90
r2408 r2641 11 11 include "paramet.h" 12 12 include "comgeom.h" 13 include "logic.h"14 13 !=============================================================================== 15 14 ! Arguments: -
LMDZ5/branches/testing/libf/dyn3dmem/dissip_loc.F
r1999 r2641 7 7 USE write_field_loc 8 8 USE dissip_mod, ONLY: dissip_allocate 9 USE comconst_mod, ONLY: dtdiss 9 10 IMPLICIT NONE 10 11 … … 28 29 c ------------- 29 30 30 #include "dimensions.h" 31 #include "paramet.h" 32 #include "comconst.h" 33 #include "comgeom.h" 34 #include "comdissnew.h" 35 #include "comdissipn.h" 31 include "dimensions.h" 32 include "paramet.h" 33 include "comgeom.h" 34 include "comdissnew.h" 35 include "comdissipn.h" 36 36 37 37 c Arguments: -
LMDZ5/branches/testing/libf/dyn3dmem/dteta1_loc.F
r1910 r2641 21 21 22 22 23 #include "dimensions.h" 24 #include "paramet.h" 25 #include "logic.h" 23 include "dimensions.h" 24 include "paramet.h" 26 25 27 26 REAL teta( ijb_u:ije_u,llm ) -
LMDZ5/branches/testing/libf/dyn3dmem/dudv2_loc.F
r1910 r2641 23 23 c======================================================================= 24 24 c 25 #include "dimensions.h" 26 #include "paramet.h" 27 #include "comvert.h" 25 include "dimensions.h" 26 include "paramet.h" 28 27 29 28 REAL teta( ijb_u:ije_u,llm ),pkf( ijb_u:ije_u,llm ) -
LMDZ5/branches/testing/libf/dyn3dmem/dynetat0_loc.f90
r2408 r2641 12 12 USE control_mod, ONLY: planet_type 13 13 USE assert_eq_m, ONLY: assert_eq 14 USE comvert_mod, ONLY: pa,preff 15 USE comconst_mod, ONLY: cpp, daysec, dtvr, g, im, jm, kappa, lllm, & 16 omeg, rad 17 USE logic_mod, ONLY: fxyhypb, ysinus 18 USE serre_mod, ONLY: clon, clat, grossismx, grossismy 19 USE temps_mod, ONLY: annee_ref,day_ref,itau_dyn, & 20 start_time,day_ini,hour_ini 21 USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang0 22 14 23 IMPLICIT NONE 15 24 include "dimensions.h" 16 25 include "paramet.h" 17 include "temps.h"18 include "comconst.h"19 include "comvert.h"20 26 include "comgeom.h" 21 include "ener.h"22 27 include "description.h" 23 include "serre.h"24 include "logic.h"25 28 include "iniprint.h" 26 29 !=============================================================================== … … 99 102 day_ini = tab_cntrl(30) 100 103 itau_dyn = tab_cntrl(31) 101 ! start_time = tab_cntrl(32) ???? 104 start_time = tab_cntrl(32) 102 105 103 106 !------------------------------------------------------------------------------- -
LMDZ5/branches/testing/libf/dyn3dmem/dynredem_loc.F90
r2594 r2641 13 13 NF90_CLOSE, NF90_PUT_ATT, NF90_UNLIMITED, NF90_CLOBBER 14 14 USE dynredem_mod, ONLY: cre_var, put_var, err, modname, fil 15 USE comvert_mod, ONLY: ap,bp,aps,bps,presnivs,pseudoalt,pa,preff, & 16 nivsig,nivsigs 17 USE comconst_mod, ONLY: cpp, daysec, dtvr, g, kappa, omeg, rad 18 USE logic_mod, ONLY: fxyhypb, ysinus 19 USE serre_mod, ONLY: clon,clat,grossismx,grossismy,dzoomx,dzoomy, & 20 taux,tauy 21 USE temps_mod, ONLY: annee_ref, day_ref, itau_dyn, itaufin, start_time 22 USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang0 23 15 24 IMPLICIT NONE 16 25 include "dimensions.h" 17 26 include "paramet.h" 18 include "comconst.h"19 include "comvert.h"20 27 include "comgeom.h" 21 include "temps.h"22 include "ener.h"23 include "logic.h"24 28 include "description.h" 25 include "serre.h"26 29 include "iniprint.h" 27 30 !=============================================================================== … … 176 179 USE dynredem_mod, ONLY: dynredem_write_u, dynredem_write_v, dynredem_read_u, & 177 180 err, modname, fil, msg 181 USE temps_mod, ONLY: itau_dyn, itaufin 182 178 183 IMPLICIT NONE 179 184 include "dimensions.h" 180 185 include "paramet.h" 181 186 include "description.h" 182 include "comvert.h"183 187 include "comgeom.h" 184 include "temps.h"185 188 include "iniprint.h" 186 189 !=============================================================================== -
LMDZ5/branches/testing/libf/dyn3dmem/exner_hyb_loc_m.F90
r2056 r2641 35 35 USE mod_filtreg_p 36 36 USE write_field_loc 37 USE comconst_mod, ONLY: cpp, kappa, r, jmp1 38 USE comvert_mod, ONLY: preff 39 40 IMPLICIT NONE 37 41 ! 38 42 include "dimensions.h" 39 43 include "paramet.h" 40 include "comconst.h"41 44 include "comgeom.h" 42 include "comvert.h"43 include "serre.h"44 45 45 46 INTEGER ngrid -
LMDZ5/branches/testing/libf/dyn3dmem/exner_milieu_loc_m.F90
r2056 r2641 31 31 USE parallel_lmdz 32 32 USE mod_filtreg_p 33 USE comconst_mod, ONLY: cpp, kappa, r, jmp1 34 USE comvert_mod, ONLY: preff 35 36 IMPLICIT NONE 33 37 ! 34 38 include "dimensions.h" 35 39 include "paramet.h" 36 include "comconst.h"37 40 include "comgeom.h" 38 include "comvert.h"39 include "serre.h"40 41 41 42 INTEGER ngrid -
LMDZ5/branches/testing/libf/dyn3dmem/friction_loc.F
r1910 r2641 12 12 USE ioipsl_getincom 13 13 #endif 14 USE comconst_mod, ONLY: pi 14 15 IMPLICIT NONE 15 16 … … 26 27 !======================================================================= 27 28 28 #include "dimensions.h" 29 #include "paramet.h" 30 #include "comgeom2.h" 31 #include "comconst.h" 32 #include "iniprint.h" 33 #include "academic.h" 29 include "dimensions.h" 30 include "paramet.h" 31 include "comgeom2.h" 32 include "iniprint.h" 33 include "academic.h" 34 34 35 35 ! arguments: -
LMDZ5/branches/testing/libf/dyn3dmem/gcm.F90
r2488 r2641 21 21 USE iniphysiq_mod, ONLY: iniphysiq 22 22 #endif 23 USE comconst_mod, ONLY: cpp, daysec, dtphys, dtvr, g, r, rad 24 USE logic_mod ! all of it, because of copyin clause when calling leapfrog 25 USE temps_mod, ONLY: calend,start_time,annee_ref,day_ref, & 26 itau_dyn,itau_phy,day_ini,jD_ref,jH_ref,day_end, & 27 dt,hour_ini,itaufin 28 23 29 IMPLICIT NONE 24 30 … … 54 60 include "dimensions.h" 55 61 include "paramet.h" 56 include "comconst.h"57 62 include "comdissnew.h" 58 include "comvert.h"59 63 include "comgeom.h" 60 include "logic.h"61 include "temps.h"62 include "ener.h"63 64 include "description.h" 64 include "serre.h"65 !include "com_io_dyn.h"66 65 include "iniprint.h" 67 66 include "tracstoke.h" … … 452 451 ! write(78,*) 'q',q 453 452 454 !$OMP PARALLEL DEFAULT(SHARED) COPYIN(/temps/,/logici/,/logicl/) 453 !!$OMP PARALLEL DEFAULT(SHARED) COPYIN(/temps/,/logici/,/logicl/) 454 !$OMP PARALLEL DEFAULT(SHARED) & 455 ! Copy all threadprivate variables in temps_mod 456 !$OMP COPYIN(dt,jD_ref,jH_ref,start_time,hour_ini,day_ini,day_end) & 457 !$OMP COPYIN(annee_ref,day_ref,itau_dyn,itau_phy,itaufin,calend) & 458 ! Copy all threadprivate variables from logic_mod 459 !$OMP COPYIN(purmats,forward,leapf,apphys,statcl,conser,apdiss,apdelq) & 460 !$OMP COPYIN(saison,ecripar,fxyhypb,ysinus,read_start,ok_guide) & 461 !$OMP COPYIN(ok_strato,ok_gradsfile,ok_limit,ok_etat0) & 462 !$OMP COPYIN(iflag_phys,iflag_trac) 455 463 CALL leapfrog_loc(ucov,vcov,teta,ps,masse,phis,q,time_0) 456 464 !$OMP END PARALLEL -
LMDZ5/branches/testing/libf/dyn3dmem/geopot_loc.F
r1910 r2641 26 26 c ------------- 27 27 28 #include "dimensions.h" 29 #include "paramet.h" 30 #include "comvert.h" 28 include "dimensions.h" 29 include "paramet.h" 31 30 32 31 c Arguments: -
LMDZ5/branches/testing/libf/dyn3dmem/groupe_loc.F
r2471 r2641 3 3 USE Write_field_loc 4 4 USE groupe_mod 5 USE comconst_mod, ONLY: ngroup 5 6 implicit none 6 7 … … 16 17 c pas besoin de w en entree. 17 18 18 #include "dimensions.h" 19 #include "paramet.h" 20 #include "comconst.h" 21 #include "comgeom2.h" 22 #include "comvert.h" 19 include "dimensions.h" 20 include "paramet.h" 21 include "comgeom2.h" 23 22 24 23 ! integer ngroup -
LMDZ5/branches/testing/libf/dyn3dmem/groupeun_loc.F
r2471 r2641 2 2 USE parallel_lmdz 3 3 USE Write_Field_p 4 USE comconst_mod, ONLY: ngroup 4 5 IMPLICIT NONE 5 6 6 #include "dimensions.h" 7 #include "paramet.h" 8 #include "comconst.h" 9 #include "comgeom2.h" 7 include "dimensions.h" 8 include "paramet.h" 9 include "comgeom2.h" 10 10 11 11 INTEGER jjmax,llmax,sb,se,jjb,jje … … 136 136 137 137 USE parallel_lmdz 138 USE comconst_mod, ONLY: ngroup 138 139 IMPLICIT NONE 139 140 140 #include "dimensions.h" 141 #include "paramet.h" 142 #include "comconst.h" 143 #include "comgeom2.h" 141 include "dimensions.h" 142 include "paramet.h" 143 include "comgeom2.h" 144 144 145 145 ! INTEGER ngroup -
LMDZ5/branches/testing/libf/dyn3dmem/guide_loc_mod.F90
r2298 r2641 69 69 SUBROUTINE guide_init 70 70 71 USE control_mod 71 USE control_mod, ONLY: day_step 72 USE serre_mod, ONLY: grossismx 72 73 73 74 IMPLICIT NONE … … 76 77 INCLUDE "paramet.h" 77 78 INCLUDE "netcdf.inc" 78 79 ! For grossismx:80 include "serre.h"81 79 82 80 INTEGER :: error,ncidpl,rid,rcod … … 346 344 USE control_mod 347 345 USE write_field_loc 346 USE comconst_mod, ONLY: cpp, daysec, dtvr, kappa 347 USE comvert_mod, ONLY: ap, bp, preff, presnivs, pressure_exner 348 348 349 349 IMPLICIT NONE … … 351 351 INCLUDE "dimensions.h" 352 352 INCLUDE "paramet.h" 353 INCLUDE "comconst.h"354 INCLUDE "comvert.h"355 353 356 354 ! Variables entree … … 748 746 SUBROUTINE guide_zonave_u(typ,vsize,field) 749 747 748 USE comconst_mod, ONLY: pi 749 750 750 IMPLICIT NONE 751 751 … … 753 753 INCLUDE "paramet.h" 754 754 INCLUDE "comgeom.h" 755 INCLUDE "comconst.h"756 755 757 756 ! input/output variables … … 819 818 SUBROUTINE guide_zonave_v(typ,hsize,vsize,field) 820 819 820 USE comconst_mod, ONLY: pi 821 821 822 IMPLICIT NONE 822 823 … … 824 825 INCLUDE "paramet.h" 825 826 INCLUDE "comgeom.h" 826 INCLUDE "comconst.h"827 827 828 828 ! input/output variables … … 890 890 USE mod_hallo 891 891 USE Bands 892 USE comconst_mod, ONLY: cpp, kappa 893 USE comvert_mod, ONLY: preff, pressure_exner, bp, ap, disvert_type 892 894 IMPLICIT NONE 893 895 894 896 include "dimensions.h" 895 897 include "paramet.h" 896 include "comvert.h"897 898 include "comgeom2.h" 898 include "comconst.h"899 899 900 900 REAL, DIMENSION (iip1,jjb_u:jje_u), INTENT(IN) :: psi ! Psol gcm … … 1012 1012 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 1013 1013 DO l=1,llm 1014 1015 1014 DO j=jjbu,jjeu 1015 DO i =1, iip1 1016 1016 pls(i,j,l)=(ap(l)+ap(l+1))/2.+psi(i,j)*(bp(l)+bp(l+1))/2. 1017 1017 ENDDO … … 1030 1030 DO l = 1, llm 1031 1031 DO j=jjbu,jjeu 1032 1033 1034 1032 DO i =1, iip1 1033 pls(i,j,l) = preff * ( pk(i,j,l)/cpp) ** unskap 1034 ENDDO 1035 1035 ENDDO 1036 1036 ENDDO … … 1302 1302 ! Calcul des nouvelles valeurs des niveaux de pression du guidage 1303 1303 IF (guide_plevs.EQ.1) THEN 1304 1305 1306 1307 !$OMP BARRIER 1308 1304 CALL Register_Hallo_u(psnat1,1,1,2,2,1,Req) 1305 CALL Register_Hallo_u(psnat2,1,1,2,2,1,Req) 1306 CALL SendRequest(Req) 1307 !$OMP BARRIER 1308 CALL WaitRequest(Req) 1309 1309 !$OMP BARRIER 1310 1310 !$OMP DO … … 1320 1320 ENDDO 1321 1321 ELSE IF (guide_plevs.EQ.2) THEN 1322 1323 1324 1325 !$OMP BARRIER 1326 1322 CALL Register_Hallo_u(pnat1,llm,1,2,2,1,Req) 1323 CALL Register_Hallo_u(pnat2,llm,1,2,2,1,Req) 1324 CALL SendRequest(Req) 1325 !$OMP BARRIER 1326 CALL WaitRequest(Req) 1327 1327 !$OMP BARRIER 1328 1328 !$OMP DO … … 1370 1370 ! Calcul des constantes de rappel alpha (=1/tau) 1371 1371 1372 use comconst_mod, only: pi 1373 use serre_mod, only: clat, clon, grossismx, grossismy 1374 1372 1375 implicit none 1373 1376 1374 1377 include "dimensions.h" 1375 1378 include "paramet.h" 1376 include "comconst.h"1377 1379 include "comgeom2.h" 1378 include "serre.h"1379 1380 1380 1381 ! input arguments : … … 2127 2128 USE parallel_lmdz 2128 2129 USE mod_hallo, ONLY : gather_field_u, gather_field_v 2130 USE comconst_mod, ONLY: pi 2131 USE comvert_mod, ONLY: presnivs 2129 2132 IMPLICIT NONE 2130 2133 … … 2133 2136 INCLUDE "netcdf.inc" 2134 2137 INCLUDE "comgeom2.h" 2135 INCLUDE "comconst.h"2136 INCLUDE "comvert.h"2137 2138 2138 2139 ! Variables entree -
LMDZ5/branches/testing/libf/dyn3dmem/iniacademic_loc.F90
r2298 r2641 18 18 #endif 19 19 USE Write_Field 20 USE comconst_mod, ONLY: cpp, kappa, g, daysec, dtvr, pi, im, jm 21 USE logic_mod, ONLY: iflag_phys, read_start 22 USE comvert_mod, ONLY: ap, bp, preff, presnivs, pressure_exner 23 USE temps_mod, ONLY: annee_ref, day_ini, day_ref 24 USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang0 25 20 26 21 27 ! Author: Frederic Hourdin original: 15/01/93 … … 30 36 include "dimensions.h" 31 37 include "paramet.h" 32 include "comvert.h"33 include "comconst.h"34 38 include "comgeom.h" 35 39 include "academic.h" 36 include "ener.h"37 include "temps.h"38 40 include "iniprint.h" 39 include "logic.h"40 41 41 42 ! Arguments: -
LMDZ5/branches/testing/libf/dyn3dmem/initdynav_loc.F
r2488 r2641 14 14 use com_io_dyn_mod, only : histaveid,histvaveid,histuaveid, & 15 15 & dynhistave_file,dynhistvave_file,dynhistuave_file 16 USE comconst_mod, ONLY: pi 17 USE comvert_mod, ONLY: presnivs 18 USE temps_mod, ONLY: itau_dyn 19 16 20 implicit none 17 21 … … 41 45 C 42 46 C Declarations 43 #include "dimensions.h" 44 #include "paramet.h" 45 #include "comconst.h" 46 #include "comvert.h" 47 #include "comgeom.h" 48 #include "temps.h" 49 #include "ener.h" 50 #include "logic.h" 51 #include "description.h" 52 #include "serre.h" 53 #include "iniprint.h" 47 include "dimensions.h" 48 include "paramet.h" 49 include "comgeom.h" 50 include "description.h" 51 include "iniprint.h" 54 52 55 53 C Arguments -
LMDZ5/branches/testing/libf/dyn3dmem/initfluxsto_p.F
r1910 r2641 13 13 use Write_field 14 14 use misc_mod 15 USE comconst_mod, ONLY: pi 16 USE comvert_mod, ONLY: nivsigs 17 USE temps_mod, ONLY: annee_ref, day_ref, itau_dyn 15 18 16 19 implicit none … … 43 46 C 44 47 C Declarations 45 #include "dimensions.h" 46 #include "paramet.h" 47 #include "comconst.h" 48 #include "comvert.h" 49 #include "comgeom.h" 50 #include "temps.h" 51 #include "ener.h" 52 #include "logic.h" 53 #include "description.h" 54 #include "serre.h" 55 #include "iniprint.h" 48 include "dimensions.h" 49 include "paramet.h" 50 include "comgeom.h" 51 include "description.h" 52 include "iniprint.h" 56 53 57 54 C Arguments … … 106 103 CALL ymds2ju(zan, 1, idayref, 0.0, zjulian) 107 104 tau0 = itau_dyn 108 109 105 106 do jj = 1, jjp1 110 107 do ii = 1, iip1 111 108 rlong(ii,jj) = rlonu(ii) * 180. / pi … … 165 162 . 1, iip1, 1, jjn,tau0, zjulian, tstep, vhoriid, 166 163 . filevid,dynv_domain_id) 167 168 rl(1,1) = 1. 164 165 rl(1,1) = 1. 169 166 170 167 if (mpi_rank==0) then … … 191 188 call histhori(fileid, iip1, rlong(:,jjb:jje),jjn,rlat(:,jjb:jje), 192 189 . 'scalar','Grille points scalaires', thoriid) 193 190 194 191 C 195 192 C Appel a histvert pour la grille verticale … … 211 208 C 212 209 C Appels a histdef pour la definition des variables a sauvegarder 213 214 210 211 CALL histdef(fileid, "phis", "Surface geop. height", "-", 215 212 . iip1,jjn,thoriid, 1,1,1, -99, 32, 216 213 . "once", t_ops, t_wrt) … … 219 216 . iip1,jjn,thoriid, 1,1,1, -99, 32, 220 217 . "once", t_ops, t_wrt) 221 218 222 219 if (mpi_rank==0) then 223 224 220 221 CALL histdef(filedid, "dtvr", "tps dyn", "s", 225 222 . 1,1,dhoriid, 1,1,1, -99, 32, 226 223 . "once", t_ops, t_wrt) … … 289 286 if (mpi_rank==0) call histsync(filedid) 290 287 endif 291 288 292 289 #else 293 290 write(lunout,*)'initfluxsto_p: Needs IOIPSL to function' -
LMDZ5/branches/testing/libf/dyn3dmem/inithist_loc.F
r2488 r2641 14 14 use com_io_dyn_mod, only : histid,histvid,histuid, & 15 15 & dynhist_file,dynhistv_file,dynhistu_file 16 USE comconst_mod, ONLY: pi 17 USE comvert_mod, ONLY: presnivs 18 USE temps_mod, ONLY: itau_dyn 19 16 20 implicit none 17 21 … … 40 44 C 41 45 C Declarations 42 #include "dimensions.h" 43 #include "paramet.h" 44 #include "comconst.h" 45 #include "comvert.h" 46 #include "comgeom.h" 47 #include "temps.h" 48 #include "ener.h" 49 #include "logic.h" 50 #include "description.h" 51 #include "serre.h" 52 #include "iniprint.h" 46 include "dimensions.h" 47 include "paramet.h" 48 include "comgeom.h" 49 include "description.h" 50 include "iniprint.h" 53 51 54 52 C Arguments -
LMDZ5/branches/testing/libf/dyn3dmem/integrd_loc.F
r2488 r2641 12 12 USE integrd_mod 13 13 USE infotrac, ONLY: ok_iso_verif ! ajout CRisi 14 USE comconst_mod, ONLY: pi 15 USE logic_mod, ONLY: leapf 16 USE comvert_mod, ONLY: ap, bp 17 USE temps_mod, ONLY: dt 18 14 19 IMPLICIT NONE 15 20 … … 30 35 c ------------- 31 36 32 #include "dimensions.h" 33 #include "paramet.h" 34 #include "comconst.h" 35 #include "comgeom.h" 36 #include "comvert.h" 37 #include "logic.h" 38 #include "temps.h" 39 #include "serre.h" 40 #include "iniprint.h" 41 ! include 'mpif.h' 37 include "dimensions.h" 38 include "paramet.h" 39 include "comgeom.h" 40 include "iniprint.h" 42 41 43 42 c Arguments: … … 335 334 ije=ij_end 336 335 337 336 if (planet_type.eq."earth") then 338 337 ! Earth-specific treatment of first 2 tracers (water) 339 338 c$OMP BARRIER … … 452 451 DO l = 1, llm 453 452 massem1(ijb:ije,l)=massescr(ijb:ije,l) 454 455 c$OMP END DO NOWAIT 453 ENDDO 454 c$OMP END DO NOWAIT 456 455 END IF 457 456 c$OMP BARRIER -
LMDZ5/branches/testing/libf/dyn3dmem/leapfrog_loc.F
r2488 r2641 32 32 use exner_hyb_loc_m, only: exner_hyb_loc 33 33 use exner_milieu_loc_m, only: exner_milieu_loc 34 USE comconst_mod, ONLY: cpp, dtvr, ihf 35 USE comvert_mod, ONLY: ap, bp, pressure_exner 36 USE logic_mod, ONLY: iflag_phys,ok_guide,forward,leapf,apphys, 37 & statcl,conser,apdiss,purmats,ok_strato 38 USE temps_mod, ONLY: itaufin,jD_ref,jH_ref,day_ini, 39 & day_ref,start_time,dt 40 34 41 IMPLICIT NONE 35 42 … … 65 72 c ------------- 66 73 67 #include "dimensions.h" 68 #include "paramet.h" 69 #include "comconst.h" 70 #include "comdissnew.h" 71 #include "comvert.h" 72 #include "comgeom.h" 73 #include "logic.h" 74 #include "temps.h" 75 #include "ener.h" 76 #include "description.h" 77 #include "serre.h" 78 !#include "com_io_dyn.h" 79 #include "iniprint.h" 80 #include "academic.h" 81 ! include "mpif.h" 74 include "dimensions.h" 75 include "paramet.h" 76 include "comdissnew.h" 77 include "comgeom.h" 78 include "description.h" 79 include "iniprint.h" 80 include "academic.h" 82 81 83 82 REAL,INTENT(IN) :: time_0 ! not used … … 472 471 cym apphys = .FALSE. 473 472 statcl = .FALSE. 474 473 ! conser = .FALSE. ! ie: no output of control variables to stdout in // 475 474 476 475 if (firstCaldyn) then … … 700 699 701 700 c$OMP MASTER 701 if (mpi_rank==0.AND.conser) THEN 702 WRITE(lunout,*) 'leapfrog_loc, Time step: ',itau,' Day:',time 703 ENDIF 702 704 call VTe(VTcaldyn) 703 705 c$OMP END MASTER … … 1635 1637 IF( MOD(itau,iecri).EQ.0) THEN 1636 1638 ! Ehouarn: output only during LF or Backward Matsuno 1637 1639 if (leapf.or.(.not.leapf.and.(.not.forward))) then 1638 1640 1639 1641 c$OMP BARRIER … … 1645 1647 #ifdef CPP_IOIPSL 1646 1648 if (ok_dyn_ins) then 1647 1649 CALL writehist_loc(itau,vcov,ucov,teta,pk,phi,q, 1648 1650 & masse,ps,phis) 1649 1651 endif -
LMDZ5/branches/testing/libf/dyn3dmem/massbarxy_loc.F90
r2408 r2641 10 10 include "dimensions.h" 11 11 include "paramet.h" 12 include "comconst.h"13 12 include "comgeom.h" 14 13 !=============================================================================== -
LMDZ5/branches/testing/libf/dyn3dmem/massdair_loc.F
r1910 r2641 16 16 IMPLICIT NONE 17 17 c 18 #include "dimensions.h" 19 #include "paramet.h" 20 #include "comconst.h" 21 #include "comgeom.h" 18 include "dimensions.h" 19 include "paramet.h" 20 include "comgeom.h" 22 21 c 23 22 c ..... arguments .... -
LMDZ5/branches/testing/libf/dyn3dmem/mod_hallo.F90
r2471 r2641 1411 1411 1412 1412 #ifdef CPP_MPI 1413 call MPI_IS SEND(Buffer(req%Pos),SizeBuffer,MPI_REAL_LMDZ,rank,a_request%tag+1000*omp_rank, &1413 call MPI_ISEND(Buffer(req%Pos),SizeBuffer,MPI_REAL_LMDZ,rank,a_request%tag+1000*omp_rank, & 1414 1414 COMM_LMDZ,Req%MSG_Request,ierr) 1415 1415 #endif -
LMDZ5/branches/testing/libf/dyn3dmem/parallel_lmdz.F90
r2056 r2641 575 575 !$OMP CRITICAL (MPI) 576 576 #ifdef CPP_MPI 577 call MPI_IS SEND(Buffer_send_up,Buffer_Size,MPI_REAL8,MPI_Rank-1,1, &577 call MPI_ISEND(Buffer_send_up,Buffer_Size,MPI_REAL8,MPI_Rank-1,1, & 578 578 COMM_LMDZ,Request(NbRequest),ierr) 579 579 #endif … … 590 590 !$OMP CRITICAL (MPI) 591 591 #ifdef CPP_MPI 592 call MPI_IS SEND(Buffer_send_down,Buffer_Size,MPI_REAL8,MPI_Rank+1,1, &592 call MPI_ISEND(Buffer_send_down,Buffer_Size,MPI_REAL8,MPI_Rank+1,1, & 593 593 COMM_LMDZ,Request(NbRequest),ierr) 594 594 #endif -
LMDZ5/branches/testing/libf/dyn3dmem/qminimum_loc.F
r2298 r2641 7 7 c pour l'eau vapeur et l'eau liquide 8 8 c 9 #include "dimensions.h" 10 #include "paramet.h" 11 #include "comvert.h" 9 include "dimensions.h" 10 include "paramet.h" 12 11 c 13 12 INTEGER nqtot ! CRisi: on remplace nq par nqtot -
LMDZ5/branches/testing/libf/dyn3dmem/sw_case_williamson91_6_loc.F
r1910 r2641 27 27 c======================================================================= 28 28 USE parallel_lmdz 29 USE comconst_mod, ONLY: cpp, omeg, rad 30 USE comvert_mod, ONLY: ap, bp, preff 29 31 30 32 IMPLICIT NONE … … 33 35 c --------------- 34 36 35 #include "dimensions.h" 36 #include "paramet.h" 37 #include "comvert.h" 38 #include "comconst.h" 39 #include "comgeom.h" 40 #include "iniprint.h" 37 include "dimensions.h" 38 include "paramet.h" 39 include "comgeom.h" 40 include "iniprint.h" 41 41 42 42 c Arguments: -
LMDZ5/branches/testing/libf/dyn3dmem/top_bound_loc.F
r1910 r2641 4 4 SUBROUTINE top_bound_loc(vcov,ucov,teta,masse,dt) 5 5 USE parallel_lmdz 6 USE comconst_mod, ONLY: iflag_top_bound, mode_top_bound, 7 & tau_top_bound 8 USE comvert_mod, ONLY: presnivs, preff, scaleheight 9 6 10 IMPLICIT NONE 7 11 c 8 #include "dimensions.h" 9 #include "paramet.h" 10 #include "comconst.h" 11 #include "comvert.h" 12 #include "comgeom2.h" 12 include "dimensions.h" 13 include "paramet.h" 14 include "comgeom2.h" 13 15 14 16 … … 40 42 ! NB: top_bound sponge is only called from leapfrog if ok_strato=.true. 41 43 42 ! sponge parameters: (loaded/set in conf_gcm.F ; stored in comconst .h)44 ! sponge parameters: (loaded/set in conf_gcm.F ; stored in comconst_mod) 43 45 ! iflag_top_bound=0 for no sponge 44 46 ! iflag_top_bound=1 for sponge over 4 topmost layers … … 74 76 REAL tzon(jjb_u:jje_u,llm) 75 77 76 integer i 78 integer i 77 79 REAL,SAVE :: rdamp(llm) 78 80 real,save :: lambda(llm) ! inverse or quenching time scale (Hz) -
LMDZ5/branches/testing/libf/dyn3dmem/tourpot_loc.F90
r2408 r2641 11 11 include "paramet.h" 12 12 include "comgeom.h" 13 include "logic.h"14 13 !=============================================================================== 15 14 ! Arguments: -
LMDZ5/branches/testing/libf/dyn3dmem/vitvert_loc.F90
r2408 r2641 6 6 ! Purpose: Compute vertical speed at sigma levels. 7 7 USE parallel_lmdz 8 USE comvert_mod, ONLY: bp 9 8 10 IMPLICIT NONE 9 11 include "dimensions.h" 10 12 include "paramet.h" 11 include "comvert.h"12 13 !=============================================================================== 13 14 ! Arguments: -
LMDZ5/branches/testing/libf/dyn3dmem/vlsplt_loc.F
r2298 r2641 17 17 IMPLICIT NONE 18 18 c 19 #include "dimensions.h" 20 #include "paramet.h" 21 #include "logic.h" 22 #include "comvert.h" 23 #include "comconst.h" 19 include "dimensions.h" 20 include "paramet.h" 24 21 c 25 22 c … … 417 414 USE parallel_lmdz 418 415 USE infotrac, ONLY : nqtot,nqfils,nqdesc,iqfils ! CRisi 416 USE comconst_mod, ONLY: pi 419 417 IMPLICIT NONE 420 418 c 421 #include "dimensions.h" 422 #include "paramet.h" 423 #include "logic.h" 424 #include "comvert.h" 425 #include "comconst.h" 426 #include "comgeom.h" 419 include "dimensions.h" 420 include "paramet.h" 421 include "comgeom.h" 427 422 c 428 423 c … … 875 870 IMPLICIT NONE 876 871 c 877 #include "dimensions.h" 878 #include "paramet.h" 879 #include "logic.h" 880 #include "comvert.h" 881 #include "comconst.h" 872 include "dimensions.h" 873 include "paramet.h" 882 874 c 883 875 c -
LMDZ5/branches/testing/libf/dyn3dmem/vlspltgen_loc.F
r2298 r2641 31 31 & ok_iso_verif 32 32 USE vlspltgen_mod 33 USE comconst_mod, ONLY: cpp 33 34 IMPLICIT NONE 34 35 35 36 c 36 #include "dimensions.h" 37 #include "paramet.h" 38 #include "logic.h" 39 #include "comvert.h" 40 #include "comconst.h" 37 include "dimensions.h" 38 include "paramet.h" 41 39 42 40 c … … 100 98 101 99 102 103 104 105 106 100 ijb=ij_begin-iip1 101 ije=ij_end+iip1 102 if (pole_nord) ijb=ij_begin 103 if (pole_sud) ije=ij_end 104 107 105 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 108 106 DO l = 1, llm 109 107 DO ij = ijb, ije 110 108 tempe(ij) = teta(ij,l) * pk(ij,l) /cpp … … 208 206 #endif 209 207 if(iadv(iq) == 0) then 210 211 212 213 208 209 cycle 210 211 else if (iadv(iq)==10) then 214 212 215 213 #ifdef _ADV_HALO 216 214 ! CRisi: on ajoute les nombres de fils et tableaux des fils 217 215 ! On suppose qu'on ne peut advecter les fils que par le schéma 10. 218 219 & 216 call vlx_loc(zq,pente_max,zm,mu, 217 & ij_begin,ij_begin+2*iip1-1,iq) 220 218 call vlx_loc(zq,pente_max,zm,mu, 221 219 & ij_end-2*iip1+1,ij_end,iq) 222 220 #else 223 224 & 221 call vlx_loc(zq,pente_max,zm,mu, 222 & ij_begin,ij_end,iq) 225 223 #endif 226 224 … … 240 238 call VTe(VTHallo) 241 239 c$OMP END MASTER 242 240 else if (iadv(iq)==14) then 243 241 244 242 #ifdef _ADV_HALO … … 268 266 c$OMP END MASTER 269 267 else 270 271 268 269 stop 'vlspltgen_p : schema non parallelise' 272 270 273 271 endif … … 301 299 302 300 if(iadv(iq) == 0) then 303 304 305 306 301 302 cycle 303 304 else if (iadv(iq)==10) then 307 305 308 306 #ifdef _ADV_HALLO … … 310 308 & ij_begin+2*iip1,ij_end-2*iip1,iq) 311 309 #endif 312 310 else if (iadv(iq)==14) then 313 311 #ifdef _ADV_HALLO 314 312 call vlxqs_loc(zq,pente_max,zm,mu, … … 316 314 #endif 317 315 else 318 319 316 317 stop 'vlspltgen_p : schema non parallelise' 320 318 321 319 endif … … 358 356 359 357 if(iadv(iq) == 0) then 360 361 362 363 358 359 cycle 360 361 else if (iadv(iq)==10) then 364 362 365 363 call vly_loc(zq,pente_max,zm,mv,iq) 366 364 367 365 else if (iadv(iq)==14) then 368 366 369 367 call vlyqs_loc(zq,pente_max,zm,mv, … … 371 369 372 370 else 373 374 371 372 stop 'vlspltgen_p : schema non parallelise' 375 373 376 374 endif … … 389 387 #endif 390 388 if(iadv(iq) == 0) then 391 392 393 394 389 390 cycle 391 392 else if (iadv(iq)==10 .or. iadv(iq)==14 ) then 395 393 396 394 c$OMP BARRIER … … 420 418 c$OMP MASTER 421 419 call VTe(VTHallo) 422 c$OMP END MASTER 420 c$OMP END MASTER 423 421 c$OMP BARRIER 424 422 else 425 426 423 424 stop 'vlspltgen_p : schema non parallelise' 427 425 428 426 endif … … 439 437 c$OMP MASTER 440 438 call VTe(VTHallo) 441 c$OMP END MASTER 439 c$OMP END MASTER 442 440 443 441 … … 451 449 452 450 if(iadv(iq) == 0) then 453 454 455 456 451 452 cycle 453 454 else if (iadv(iq)==10 .or. iadv(iq)==14 ) then 457 455 c$OMP BARRIER 458 456 … … 464 462 c$OMP BARRIER 465 463 else 466 467 464 465 stop 'vlspltgen_p : schema non parallelise' 468 466 469 467 endif … … 501 499 #endif 502 500 if(iadv(iq) == 0) then 503 504 505 506 501 502 cycle 503 504 else if (iadv(iq)==10) then 507 505 508 506 call vly_loc(zq,pente_max,zm,mv,iq) 509 507 510 508 else if (iadv(iq)==14) then 511 509 512 510 call vlyqs_loc(zq,pente_max,zm,mv, … … 514 512 515 513 else 516 517 514 515 stop 'vlspltgen_p : schema non parallelise' 518 516 519 517 endif … … 532 530 #endif 533 531 if(iadv(iq) == 0) then 534 535 536 537 532 533 cycle 534 535 else if (iadv(iq)==10) then 538 536 539 537 call vlx_loc(zq,pente_max,zm,mu, 540 538 & ij_begin,ij_end,iq) 541 539 542 540 else if (iadv(iq)==14) then 543 541 544 542 call vlxqs_loc(zq,pente_max,zm,mu, … … 546 544 547 545 else 548 546 549 547 stop 'vlspltgen_p : schema non parallelise' 550 548 … … 574 572 DO ij=ijb,ije 575 573 c print *,'zq-->',ij,l,iq,zq(ij,l,iq) 576 c 577 574 c print *,'q-->',ij,l,iq,q(ij,l,iq) 575 q(ij,l,iq)=zq(ij,l,iq) 578 576 ENDDO 579 577 ENDDO -
LMDZ5/branches/testing/libf/dyn3dmem/vlspltqs_loc.F
r2298 r2641 12 12 IMPLICIT NONE 13 13 c 14 #include "dimensions.h" 15 #include "paramet.h" 16 #include "logic.h" 17 #include "comvert.h" 18 #include "comconst.h" 14 include "dimensions.h" 15 include "paramet.h" 19 16 c 20 17 c … … 174 171 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 175 172 DO l=1,llm 176 173 iadvplus(ip1jm+1:ip1jmp1,l)=0 177 174 ENDDO 178 175 c$OMP END DO NOWAIT 179 176 endif 180 177 181 178 c calcul des flux a gauche et a droite 182 179 … … 414 411 c ******************************************************************** 415 412 c q,masse_adv_v,w sont des arguments d'entree pour le s-pg .... 416 c qsat 413 c qsat est un argument de sortie pour le s-pg .... 417 414 c 418 415 c … … 420 417 USE parallel_lmdz 421 418 USE infotrac, ONLY : nqtot,nqfils,nqdesc,iqfils ! CRisi 419 USE comconst_mod, ONLY: pi 422 420 IMPLICIT NONE 423 421 c 424 #include "dimensions.h" 425 #include "paramet.h" 426 #include "logic.h" 427 #include "comvert.h" 428 #include "comconst.h" 429 #include "comgeom.h" 422 include "dimensions.h" 423 include "paramet.h" 424 include "comgeom.h" 430 425 c 431 426 c … … 582 577 dyq(ij,l)=fn*dyq(ij,l) 583 578 ENDDO 584 579 585 580 ENDIF 586 581 … … 603 598 ENDDO 604 599 605 c calcul des pentes limites aux poles 600 c calcul des pentes limites aux poles 606 601 fs=1. 607 602 DO ij=1,iim … … 614 609 dyq(ip1jm+ij,l)=fs*dyq(ip1jm+ij,l) 615 610 ENDDO 616 611 617 612 ENDIF 618 613 … … 779 774 masse(ij,l,iq)=newmasse 780 775 ENDDO 781 782 ENDIF783 776 784 IF (pole_sud) THEN 785 786 convps = -SSUM(iim,qbyv(ip1jm-iim,l,iq),iq,1)/apols 777 ENDIF 778 779 IF (pole_sud) THEN 780 781 convps = -SSUM(iim,qbyv(ip1jm-iim,l,iq),iq,1)/apols 787 782 convmps = -SSUM(iim,masse_adv_v(ip1jm-iim,l),1)/apols 788 783 DO ij = ip1jm+1,ip1jmp1 … … 792 787 masse(ij,l,iq)=newmasse 793 788 ENDDO 794 795 789 790 ENDIF 796 791 c.-. fin ancienne version 797 792 -
LMDZ5/branches/testing/libf/dyn3dmem/writedynav_loc.F
r2488 r2641 13 13 USE infotrac, ONLY : nqtot, ttext 14 14 use com_io_dyn_mod, only : histaveid,histvaveid,histuaveid 15 USE comconst_mod, ONLY: cpp 16 USE temps_mod, ONLY: itau_dyn 17 15 18 implicit none 16 19 … … 41 44 C 42 45 C Declarations 43 #include "dimensions.h" 44 #include "paramet.h" 45 #include "comconst.h" 46 #include "comvert.h" 47 #include "comgeom.h" 48 #include "temps.h" 49 #include "ener.h" 50 #include "logic.h" 51 #include "description.h" 52 #include "serre.h" 53 #include "iniprint.h" 46 include "dimensions.h" 47 include "paramet.h" 48 include "comgeom.h" 49 include "description.h" 50 include "iniprint.h" 54 51 55 52 C -
LMDZ5/branches/testing/libf/dyn3dmem/writehist_loc.F
r2488 r2641 13 13 USE infotrac, ONLY : nqtot, ttext 14 14 use com_io_dyn_mod, only : histid,histvid,histuid 15 USE comconst_mod, ONLY: cpp 16 USE temps_mod, ONLY: itau_dyn 17 15 18 implicit none 16 19 … … 41 44 C 42 45 C Declarations 43 #include "dimensions.h" 44 #include "paramet.h" 45 #include "comconst.h" 46 #include "comvert.h" 47 #include "comgeom.h" 48 #include "temps.h" 49 #include "ener.h" 50 #include "logic.h" 51 #include "description.h" 52 #include "serre.h" 53 #include "iniprint.h" 46 include "dimensions.h" 47 include "paramet.h" 48 include "comgeom.h" 49 include "description.h" 50 include "iniprint.h" 54 51 55 52 C -
LMDZ5/branches/testing/libf/dyn3dpar/addfi_p.F
r1999 r2641 48 48 #include "dimensions.h" 49 49 #include "paramet.h" 50 #include "comconst.h"51 50 #include "comgeom.h" 52 #include "serre.h"53 51 c 54 52 c Arguments : -
LMDZ5/branches/testing/libf/dyn3dpar/advect_new_p.F
r1910 r2641 6 6 USE parallel_lmdz 7 7 USE write_field_p 8 USE comconst_mod, ONLY: daysec 9 USE logic_mod, ONLY: conser 10 8 11 IMPLICIT NONE 9 12 c======================================================================= … … 28 31 #include "dimensions.h" 29 32 #include "paramet.h" 30 #include "comconst.h"31 #include "comvert.h"32 33 #include "comgeom.h" 33 #include "logic.h"34 #include "ener.h"35 34 36 35 c Arguments: … … 117 116 118 117 uav(ij,l)=0.25*(ucov(ij,l)+ucov(ij-iip1,l)) 119 . 118 . +0.25*(ucov(ij+iip1,l)+ucov(ij,l)) 120 119 ENDDO 121 120 … … 250 249 DO l=1,llm 251 250 DO ij=ijb,ije-1 252 253 251 du(ij,l)=du(ij,l)+du2(ij,l)-du1(ij,l) 252 ENDDO 254 253 255 254 DO ij = ijb+iip1-1, ije, iip1 … … 266 265 DO l=1,llm 267 266 DO ij=ijb,ije 268 269 267 dv(ij,l)=dv(ij,l)+dv2(ij,l)-dv1(ij,l) 268 ENDDO 270 269 ENDDO 271 270 c$OMP END DO NOWAIT … … 276 275 DO l=1,llm 277 276 DO ij=ijb,ije 278 279 277 dteta(ij,l)=dteta(ij,l)+dteta2(ij,l)-dteta1(ij,l) 278 ENDDO 280 279 ENDDO 281 280 c$OMP END DO NOWAIT -
LMDZ5/branches/testing/libf/dyn3dpar/advect_p.F
r1910 r2641 5 5 USE parallel_lmdz 6 6 USE write_field_p 7 USE comconst_mod, ONLY: daysec 8 USE logic_mod, ONLY: conser 9 7 10 IMPLICIT NONE 8 11 c======================================================================= … … 27 30 #include "dimensions.h" 28 31 #include "paramet.h" 29 #include "comconst.h"30 #include "comvert.h"31 32 #include "comgeom.h" 32 #include "logic.h"33 #include "ener.h"34 33 35 34 c Arguments: … … 86 85 87 86 uav(ij,l)=0.25*(ucov(ij,l)+ucov(ij-iip1,l)) 88 . 87 . +0.25*(ucov(ij+iip1,l)+ucov(ij,l)) 89 88 ENDDO 90 89 -
LMDZ5/branches/testing/libf/dyn3dpar/advtrac_p.F90
r2298 r2641 19 19 USE infotrac, ONLY: nqtot, iadv 20 20 USE control_mod, ONLY: iapp_tracvl, day_step, planet_type 21 USE comconst_mod, ONLY: dtvr 21 22 IMPLICIT NONE 22 23 ! 23 24 include "dimensions.h" 24 25 include "paramet.h" 25 include "comconst.h"26 include "comvert.h"27 26 include "comdissip.h" 28 27 include "comgeom2.h" 29 include "logic.h"30 include "temps.h"31 include "ener.h"32 28 include "description.h" 33 29 -
LMDZ5/branches/testing/libf/dyn3dpar/bernoui_p.F
r1910 r2641 25 25 #include "dimensions.h" 26 26 #include "paramet.h" 27 #include "logic.h"28 27 c 29 28 c Arguments: -
LMDZ5/branches/testing/libf/dyn3dpar/bilan_dyn_p.F
r1910 r2641 17 17 use misc_mod 18 18 use write_field_p 19 USE comconst_mod, ONLY: cpp, pi 20 USE comvert_mod, ONLY: presnivs 21 USE temps_mod, ONLY: annee_ref, day_ref, itau_dyn 22 19 23 IMPLICIT NONE 20 24 21 25 #include "dimensions.h" 22 26 #include "paramet.h" 23 #include "comconst.h"24 #include "comvert.h"25 27 #include "comgeom2.h" 26 #include "temps.h"27 28 #include "iniprint.h" 28 29 … … 202 203 203 204 ! if (i_sortie.eq.1) then 204 ! 205 ! file='dynzon' 205 206 ! if (mpi_rank==0) then 206 ! 207 ! call inigrads(ifile,1 207 208 ! s ,0.,180./pi,0.,0.,jjm,rlatv,-90.,90.,180./pi 208 209 ! s ,llm,presnivs,1. … … 568 569 do l=1,llm 569 570 Q_cum(:,jjb:jje,l,iQ)=Q_cum(:,jjb:jje,l,iQ) 570 . 571 . /masse_cum(:,jjb:jje,l) 571 572 enddo 572 573 !$OMP ENDDO NOWAIT -
LMDZ5/branches/testing/libf/dyn3dpar/caladvtrac_p.F
r1910 r2641 10 10 USE infotrac, ONLY : nqtot 11 11 USE control_mod, ONLY : iapp_tracvl,planet_type 12 USE comconst_mod, ONLY: dtvr 12 13 c 13 14 IMPLICIT NONE … … 25 26 #include "dimensions.h" 26 27 #include "paramet.h" 27 #include "comconst.h"28 28 29 29 c Arguments: -
LMDZ5/branches/testing/libf/dyn3dpar/caldyn_p.F
r1999 r2641 10 10 USE parallel_lmdz 11 11 USE Write_Field_p 12 USE comvert_mod, ONLY: ap, bp 12 13 13 14 IMPLICIT NONE … … 31 32 #include "dimensions.h" 32 33 #include "paramet.h" 33 #include "comconst.h"34 #include "comvert.h"35 34 #include "comgeom.h" 36 35 -
LMDZ5/branches/testing/libf/dyn3dpar/conf_gcm.F90
r2471 r2641 16 16 USE infotrac, ONLY : type_trac 17 17 use assert_m, only: assert 18 USE comconst_mod, ONLY: dissip_deltaz, dissip_factz, dissip_zref, & 19 iflag_top_bound, mode_top_bound, tau_top_bound, & 20 ngroup 21 USE logic_mod, ONLY: fxyhypb, iflag_phys, ok_etat0, ok_gradsfile, & 22 ok_guide, ok_limit, ok_strato, purmats, read_start, & 23 ysinus 24 USE serre_mod, ONLY: clon,clat,grossismx,grossismy,dzoomx,dzoomy, & 25 alphax,alphay,taux,tauy 26 USE temps_mod, ONLY: calend 18 27 19 28 IMPLICIT NONE … … 34 43 include "dimensions.h" 35 44 include "paramet.h" 36 include "logic.h"37 include "serre.h"38 45 include "comdissnew.h" 39 include "temps.h"40 include "comconst.h"41 46 include "iniprint.h" 42 47 -
LMDZ5/branches/testing/libf/dyn3dpar/convmas1_p.F
r1910 r2641 32 32 #include "dimensions.h" 33 33 #include "paramet.h" 34 #include "comvert.h"35 #include "logic.h"36 34 37 35 REAL pbaru( ip1jmp1,llm ),pbarv( ip1jm,llm ) -
LMDZ5/branches/testing/libf/dyn3dpar/convmas2_p.F
r1910 r2641 32 32 #include "dimensions.h" 33 33 #include "paramet.h" 34 #include "comvert.h"35 #include "logic.h"36 34 37 35 REAL pbaru( ip1jmp1,llm ),pbarv( ip1jm,llm ) -
LMDZ5/branches/testing/libf/dyn3dpar/convmas_p.F
r1910 r2641 32 32 #include "dimensions.h" 33 33 #include "paramet.h" 34 #include "comvert.h"35 #include "logic.h"36 34 37 35 REAL pbaru( ip1jmp1,llm ),pbarv( ip1jm,llm ) -
LMDZ5/branches/testing/libf/dyn3dpar/dissip_p.F
r1999 r2641 6 6 USE parallel_lmdz 7 7 USE write_field_p 8 USE comconst_mod, ONLY: dtdiss 8 9 IMPLICIT NONE 9 10 … … 29 30 #include "dimensions.h" 30 31 #include "paramet.h" 31 #include "comconst.h"32 32 #include "comgeom.h" 33 33 #include "comdissnew.h" -
LMDZ5/branches/testing/libf/dyn3dpar/divgrad_p.F
r1910 r2641 23 23 #include "comgeom.h" 24 24 #include "comdissipn.h" 25 #include "logic.h"26 25 c 27 26 INTEGER klevel -
LMDZ5/branches/testing/libf/dyn3dpar/dteta1_p.F
r1910 r2641 22 22 #include "dimensions.h" 23 23 #include "paramet.h" 24 #include "logic.h"25 24 26 25 REAL teta( ip1jmp1,llm ),pbaru( ip1jmp1,llm ),pbarv( ip1jm,llm) -
LMDZ5/branches/testing/libf/dyn3dpar/dudv2_p.F
r1910 r2641 25 25 #include "dimensions.h" 26 26 #include "paramet.h" 27 #include "comvert.h"28 27 29 28 REAL teta( ip1jmp1,llm ),pkf( ip1jmp1,llm ) ,bern( ip1jmp1,llm ), -
LMDZ5/branches/testing/libf/dyn3dpar/dynetat0.F
r1999 r2641 9 9 10 10 use control_mod, only : planet_type 11 USE comvert_mod, ONLY: pa,preff 12 USE comconst_mod, ONLY: cpp, daysec, dtvr, g, im, jm, kappa, 13 & lllm, omeg, rad 14 USE logic_mod, ONLY: fxyhypb, ysinus 15 USE serre_mod, ONLY: clon,clat,grossismx,grossismy 16 USE temps_mod, ONLY: annee_ref,day_ref,itau_dyn, 17 & start_time,day_ini,hour_ini 18 USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang0 11 19 12 20 IMPLICIT NONE … … 29 37 #include "dimensions.h" 30 38 #include "paramet.h" 31 #include "temps.h"32 #include "comconst.h"33 #include "comvert.h"34 39 #include "comgeom2.h" 35 #include "ener.h"36 40 #include "netcdf.inc" 37 41 #include "description.h" 38 #include "serre.h"39 #include "logic.h"40 42 #include "iniprint.h" 41 43 -
LMDZ5/branches/testing/libf/dyn3dpar/dynredem.F
r1999 r2641 9 9 USE infotrac 10 10 use netcdf95, only: NF95_PUT_VAR 11 USE comvert_mod, ONLY: ap,bp,aps,bps,presnivs,pseudoalt,pa,preff, 12 & nivsig,nivsigs 13 USE comconst_mod, ONLY: cpp, daysec, dtvr, g, kappa, omeg, rad 14 USE logic_mod, ONLY: fxyhypb, ysinus 15 USE serre_mod, ONLY: clon,clat,grossismx,grossismy,dzoomx,dzoomy, 16 & taux,tauy 17 USE temps_mod, ONLY: annee_ref,day_ref,itau_dyn,itaufin, 18 & start_time,hour_ini 19 USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang0 11 20 12 21 IMPLICIT NONE … … 18 27 #include "dimensions.h" 19 28 #include "paramet.h" 20 #include "comconst.h"21 #include "comvert.h"22 29 #include "comgeom2.h" 23 #include "temps.h"24 #include "ener.h"25 #include "logic.h"26 30 #include "netcdf.inc" 27 31 #include "description.h" 28 #include "serre.h"29 32 #include "iniprint.h" 30 33 … … 471 474 use netcdf, only: NF90_get_VAR 472 475 use netcdf95, only: NF95_PUT_VAR 476 USE temps_mod, ONLY: itau_dyn, itaufin 473 477 474 478 IMPLICIT NONE … … 480 484 #include "description.h" 481 485 #include "netcdf.inc" 482 #include "comvert.h"483 486 #include "comgeom.h" 484 #include "temps.h"485 487 #include "iniprint.h" 486 488 -
LMDZ5/branches/testing/libf/dyn3dpar/dynredem_p.F
r1910 r2641 10 10 USE infotrac 11 11 use netcdf95, only: NF95_PUT_VAR 12 USE comvert_mod, ONLY: ap,bp,aps,bps,presnivs,pseudoalt,pa,preff, 13 & nivsig,nivsigs 14 USE comconst_mod, ONLY: cpp, daysec, dtvr, g, kappa, omeg, rad 15 USE logic_mod, ONLY: fxyhypb, ysinus 16 USE serre_mod, ONLY: clon,clat,grossismx,grossismy,dzoomx,dzoomy, 17 & taux,tauy 18 USE temps_mod, ONLY: annee_ref,day_ref,itau_dyn,itaufin, 19 & start_time,hour_ini 20 USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang0 12 21 13 22 IMPLICIT NONE … … 19 28 #include "dimensions.h" 20 29 #include "paramet.h" 21 #include "comconst.h"22 #include "comvert.h"23 30 #include "comgeom2.h" 24 #include "temps.h"25 #include "ener.h"26 #include "logic.h"27 31 #include "netcdf.inc" 28 32 #include "description.h" 29 #include "serre.h"30 33 31 34 c Arguments: … … 472 475 use netcdf, only: NF90_get_VAR 473 476 use netcdf95, only: NF95_PUT_VAR 477 USE temps_mod, ONLY: itau_dyn, itaufin 474 478 475 479 IMPLICIT NONE … … 481 485 #include "description.h" 482 486 #include "netcdf.inc" 483 #include "comvert.h"484 487 #include "comgeom.h" 485 #include "temps.h"486 488 487 489 -
LMDZ5/branches/testing/libf/dyn3dpar/exner_hyb_p_m.F90
r2056 r2641 33 33 ! 34 34 USE parallel_lmdz 35 USE comconst_mod, ONLY: cpp, kappa, r, jmp1 36 USE comvert_mod, ONLY: preff 35 37 ! 36 38 include "dimensions.h" 37 39 include "paramet.h" 38 include "comconst.h"39 40 include "comgeom.h" 40 include "comvert.h"41 include "serre.h"42 41 43 42 INTEGER ngrid -
LMDZ5/branches/testing/libf/dyn3dpar/exner_milieu_p_m.F90
r2056 r2641 30 30 ! 31 31 USE parallel_lmdz 32 USE comconst_mod, ONLY: cpp, kappa, r, jmp1 33 USE comvert_mod, ONLY: preff 32 34 ! 33 35 include "dimensions.h" 34 36 include "paramet.h" 35 include "comconst.h"36 37 include "comgeom.h" 37 include "comvert.h"38 include "serre.h"39 38 40 39 INTEGER ngrid -
LMDZ5/branches/testing/libf/dyn3dpar/fluxstokenc_p.F
r1910 r2641 21 21 #include "dimensions.h" 22 22 #include "paramet.h" 23 #include "comconst.h"24 #include "comvert.h"25 23 #include "comgeom.h" 26 24 #include "tracstoke.h" 27 #include "temps.h"28 25 #include "iniprint.h" 29 26 -
LMDZ5/branches/testing/libf/dyn3dpar/friction_p.F
r1910 r2641 12 12 USE ioipsl_getincom 13 13 #endif 14 USE comconst_mod, ONLY: pi 14 15 IMPLICIT NONE 15 16 … … 29 30 #include "paramet.h" 30 31 #include "comgeom2.h" 31 #include "comconst.h"32 32 #include "iniprint.h" 33 33 #include "academic.h" -
LMDZ5/branches/testing/libf/dyn3dpar/gcm.F
r2435 r2641 32 32 USE iniphysiq_mod, ONLY: iniphysiq 33 33 #endif 34 USE comconst_mod, ONLY: cpp, daysec, dtphys, dtvr, g, r, rad 35 USE logic_mod ! all of it, because of copyin clause when calling leapfrog 36 USE temps_mod, ONLY: calend,start_time,annee_ref,day_ref, 37 & itau_dyn,itau_phy,day_ini,jD_ref,jH_ref,day_end, 38 & dt,hour_ini,itaufin 39 34 40 IMPLICIT NONE 35 41 … … 65 71 #include "dimensions.h" 66 72 #include "paramet.h" 67 #include "comconst.h"68 73 #include "comdissnew.h" 69 #include "comvert.h"70 74 #include "comgeom.h" 71 #include "logic.h"72 #include "temps.h"73 #include "ener.h"74 75 #include "description.h" 75 #include "serre.h"76 76 !#include "com_io_dyn.h" 77 77 #include "iniprint.h" … … 499 499 c write(78,*) 'q',q 500 500 501 c$OMP PARALLEL DEFAULT(SHARED) COPYIN(/temps/,/logici/,/logicl/) 501 !c$OMP PARALLEL DEFAULT(SHARED) COPYIN(/temps/,/logici/,/logicl/) 502 c$OMP PARALLEL DEFAULT(SHARED) 503 c Copy all threadprivate variables from temps_mod 504 c$OMP1 COPYIN(dt,jD_ref,jH_ref,start_time,hour_ini,day_ini,day_end) 505 c$OMP1 COPYIN(annee_ref,day_ref,itau_dyn,itau_phy,itaufin,calend) 506 c Copy all threadprivate variables from logic_mod 507 c$OMP1 COPYIN(purmats,forward,leapf,apphys,statcl,conser,apdiss,apdelq) 508 c$OMP1 COPYIN(saison,ecripar,fxyhypb,ysinus,read_start,ok_guide) 509 c$OMP1 COPYIN(ok_strato,ok_gradsfile,ok_limit,ok_etat0) 510 c$OMP1 COPYIN(iflag_phys,iflag_trac) 502 511 CALL leapfrog_p(ucov,vcov,teta,ps,masse,phis,q,time_0) 503 512 c$OMP END PARALLEL -
LMDZ5/branches/testing/libf/dyn3dpar/geopot_p.F
r1910 r2641 28 28 #include "dimensions.h" 29 29 #include "paramet.h" 30 #include "comvert.h"31 30 32 31 c Arguments: -
LMDZ5/branches/testing/libf/dyn3dpar/gradiv_p.F
r1910 r2641 21 21 #include "paramet.h" 22 22 #include "comdissipn.h" 23 #include "logic.h"24 23 25 24 INTEGER klevel -
LMDZ5/branches/testing/libf/dyn3dpar/groupe_p.F
r2471 r2641 1 1 subroutine groupe_p(pext,pbaru,pbarv,pbarum,pbarvm,wm) 2 2 USE parallel_lmdz 3 USE comconst_mod, ONLY: ngroup 3 4 implicit none 4 5 … … 16 17 #include "dimensions.h" 17 18 #include "paramet.h" 18 #include "comconst.h"19 19 #include "comgeom2.h" 20 #include "comvert.h"21 20 22 21 ! integer ngroup -
LMDZ5/branches/testing/libf/dyn3dpar/groupeun_p.F
r2471 r2641 2 2 USE parallel_lmdz 3 3 USE Write_Field_p 4 USE comconst_mod, ONLY: ngroup 4 5 IMPLICIT NONE 5 6 6 7 #include "dimensions.h" 7 8 #include "paramet.h" 8 #include "comconst.h"9 9 #include "comgeom2.h" 10 10 … … 136 136 137 137 USE parallel_lmdz 138 USE comconst_mod, ONLY: ngroup 138 139 IMPLICIT NONE 139 140 140 141 #include "dimensions.h" 141 142 #include "paramet.h" 142 #include "comconst.h"143 143 #include "comgeom2.h" 144 144 -
LMDZ5/branches/testing/libf/dyn3dpar/guide_p_mod.F90
r2160 r2641 68 68 SUBROUTINE guide_init 69 69 70 USE control_mod 70 USE control_mod, ONLY: day_step 71 USE serre_mod, ONLY: grossismx 71 72 72 73 IMPLICIT NONE … … 75 76 INCLUDE "paramet.h" 76 77 INCLUDE "netcdf.inc" 77 78 ! For grossismx:79 include "serre.h"80 78 81 79 INTEGER :: error,ncidpl,rid,rcod … … 341 339 USE parallel_lmdz 342 340 USE control_mod 341 USE comconst_mod, ONLY: daysec, dtvr, cpp, kappa 342 USE comvert_mod, ONLY: ap, bp, preff, presnivs, pressure_exner 343 343 344 344 IMPLICIT NONE … … 346 346 INCLUDE "dimensions.h" 347 347 INCLUDE "paramet.h" 348 INCLUDE "comconst.h"349 INCLUDE "comvert.h"350 348 351 349 ! Variables entree … … 619 617 SUBROUTINE guide_zonave(typ,hsize,vsize,field) 620 618 619 USE comconst_mod, ONLY: pi 620 621 621 IMPLICIT NONE 622 622 … … 624 624 INCLUDE "paramet.h" 625 625 INCLUDE "comgeom.h" 626 INCLUDE "comconst.h"627 626 628 627 ! input/output variables … … 707 706 USE mod_hallo 708 707 USE Bands 708 USE comconst_mod, ONLY: cpp, kappa 709 USE comvert_mod, ONLY: preff, pressure_exner, bp, ap 709 710 IMPLICIT NONE 710 711 711 712 include "dimensions.h" 712 713 include "paramet.h" 713 include "comvert.h"714 714 include "comgeom2.h" 715 include "comconst.h"716 715 717 716 REAL, DIMENSION (iip1,jjp1), INTENT(IN) :: psi ! Psol gcm … … 1099 1098 ! Calcul des constantes de rappel alpha (=1/tau) 1100 1099 1100 use comconst_mod, only: pi 1101 use serre_mod, only: clat, clon, grossismx, grossismy 1102 1101 1103 implicit none 1102 1104 1103 1105 include "dimensions.h" 1104 1106 include "paramet.h" 1105 include "comconst.h"1106 1107 include "comgeom2.h" 1107 include "serre.h"1108 1108 1109 1109 ! input arguments : … … 1813 1813 SUBROUTINE guide_out(varname,hsize,vsize,field,factt) 1814 1814 USE parallel_lmdz 1815 USE comconst_mod, ONLY: pi 1816 USE comvert_mod, ONLY: presnivs 1815 1817 IMPLICIT NONE 1816 1818 … … 1819 1821 INCLUDE "netcdf.inc" 1820 1822 INCLUDE "comgeom2.h" 1821 INCLUDE "comconst.h"1822 INCLUDE "comvert.h"1823 1823 1824 1824 ! Variables entree -
LMDZ5/branches/testing/libf/dyn3dpar/iniacademic.F90
r2160 r2641 16 16 use exner_hyb_m, only: exner_hyb 17 17 use exner_milieu_m, only: exner_milieu 18 USE comconst_mod, ONLY: cpp, kappa, g, daysec, dtvr, pi, im, jm 19 USE logic_mod, ONLY: iflag_phys, read_start 20 USE comvert_mod, ONLY: ap, bp, preff, presnivs, pressure_exner 21 USE temps_mod, ONLY: annee_ref, day_ini, day_ref 22 USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang0 18 23 19 24 ! Author: Frederic Hourdin original: 15/01/93 … … 28 33 include "dimensions.h" 29 34 include "paramet.h" 30 include "comvert.h"31 include "comconst.h"32 35 include "comgeom.h" 33 36 include "academic.h" 34 include "ener.h"35 include "temps.h"36 37 include "iniprint.h" 37 include "logic.h"38 38 39 39 ! Arguments: -
LMDZ5/branches/testing/libf/dyn3dpar/initdynav_p.F
r1910 r2641 12 12 use misc_mod 13 13 USE infotrac 14 USE comconst_mod, ONLY: pi 15 USE comvert_mod, ONLY: nivsigs 16 USE temps_mod, ONLY: itau_dyn 14 17 15 18 implicit none … … 43 46 #include "dimensions.h" 44 47 #include "paramet.h" 45 #include "comconst.h"46 #include "comvert.h"47 48 #include "comgeom.h" 48 #include "temps.h"49 #include "ener.h"50 #include "logic.h"51 49 #include "description.h" 52 #include "serre.h"53 50 #include "iniprint.h" 54 51 -
LMDZ5/branches/testing/libf/dyn3dpar/initfluxsto_p.F
r1910 r2641 13 13 use Write_field 14 14 use misc_mod 15 USE comconst_mod, ONLY: pi 16 USE comvert_mod, ONLY: nivsigs 17 USE temps_mod, ONLY: annee_ref, day_ref, itau_dyn 15 18 16 19 implicit none … … 45 48 #include "dimensions.h" 46 49 #include "paramet.h" 47 #include "comconst.h"48 #include "comvert.h"49 50 #include "comgeom.h" 50 #include "temps.h"51 #include "ener.h"52 #include "logic.h"53 51 #include "description.h" 54 #include "serre.h"55 52 #include "iniprint.h" 56 53 … … 106 103 CALL ymds2ju(zan, 1, idayref, 0.0, zjulian) 107 104 tau0 = itau_dyn 108 109 105 106 do jj = 1, jjp1 110 107 do ii = 1, iip1 111 108 rlong(ii,jj) = rlonu(ii) * 180. / pi … … 165 162 . 1, iip1, 1, jjn,tau0, zjulian, tstep, vhoriid, 166 163 . filevid,dynv_domain_id) 167 168 rl(1,1) = 1. 164 165 rl(1,1) = 1. 169 166 170 167 if (mpi_rank==0) then … … 191 188 call histhori(fileid, iip1, rlong(:,jjb:jje),jjn,rlat(:,jjb:jje), 192 189 . 'scalar','Grille points scalaires', thoriid) 193 190 194 191 C 195 192 C Appel a histvert pour la grille verticale … … 211 208 C 212 209 C Appels a histdef pour la definition des variables a sauvegarder 213 214 210 211 CALL histdef(fileid, "phis", "Surface geop. height", "-", 215 212 . iip1,jjn,thoriid, 1,1,1, -99, 32, 216 213 . "once", t_ops, t_wrt) … … 219 216 . iip1,jjn,thoriid, 1,1,1, -99, 32, 220 217 . "once", t_ops, t_wrt) 221 218 222 219 if (mpi_rank==0) then 223 224 220 221 CALL histdef(filedid, "dtvr", "tps dyn", "s", 225 222 . 1,1,dhoriid, 1,1,1, -99, 32, 226 223 . "once", t_ops, t_wrt) … … 289 286 if (mpi_rank==0) call histsync(filedid) 290 287 endif 291 288 292 289 #else 293 290 write(lunout,*)'initfluxsto_p: Needs IOIPSL to function' -
LMDZ5/branches/testing/libf/dyn3dpar/inithist_p.F
r1910 r2641 13 13 use misc_mod 14 14 USE infotrac 15 USE comconst_mod, ONLY: pi 16 USE comvert_mod, ONLY: nivsigs 17 USE temps_mod, ONLY: itau_dyn 15 18 16 19 implicit none … … 45 48 #include "dimensions.h" 46 49 #include "paramet.h" 47 #include "comconst.h"48 #include "comvert.h"49 50 #include "comgeom.h" 50 #include "temps.h"51 #include "ener.h"52 #include "logic.h"53 51 #include "description.h" 54 #include "serre.h"55 52 #include "iniprint.h" 56 53 -
LMDZ5/branches/testing/libf/dyn3dpar/integrd_p.F
r2160 r2641 7 7 USE parallel_lmdz 8 8 USE control_mod, only : planet_type 9 USE comconst_mod, ONLY: pi 10 USE logic_mod, ONLY: leapf 11 USE comvert_mod, ONLY: ap, bp 12 USE temps_mod, ONLY: dt 13 9 14 IMPLICIT NONE 10 15 … … 27 32 #include "dimensions.h" 28 33 #include "paramet.h" 29 #include "comconst.h"30 34 #include "comgeom.h" 31 #include "comvert.h"32 #include "logic.h"33 #include "temps.h"34 #include "serre.h"35 35 #include "iniprint.h" 36 36 … … 284 284 ije=ij_end 285 285 286 286 if (planet_type.eq."earth") then 287 287 ! Earth-specific treatment of first 2 tracers (water) 288 288 c$OMP BARRIER … … 385 385 DO l = 1, llm 386 386 massem1(ijb:ije,l)=massescr(ijb:ije,l) 387 388 c$OMP END DO NOWAIT 387 ENDDO 388 c$OMP END DO NOWAIT 389 389 END IF 390 390 c$OMP BARRIER -
LMDZ5/branches/testing/libf/dyn3dpar/leapfrog_p.F
r2408 r2641 28 28 & periodav, ok_dyn_ave, output_grads_dyn, 29 29 & iapp_tracvl 30 USE comvert_mod, ONLY: ap,bp,pressure_exner,presnivs 31 USE comconst_mod, ONLY: cpp, dtvr, ihf, dtphys, pi, jmp1 32 USE logic_mod, ONLY: iflag_phys,ok_guide,forward,leapf,apphys, 33 & statcl,conser,apdiss,purmats,ok_strato 34 USE temps_mod, ONLY: itaufin,jD_ref,jH_ref,day_ini, 35 & day_ref,start_time,dt 36 30 37 IMPLICIT NONE 31 38 … … 63 70 #include "dimensions.h" 64 71 #include "paramet.h" 65 #include "comconst.h"66 72 #include "comdissnew.h" 67 #include "comvert.h"68 73 #include "comgeom.h" 69 #include "logic.h"70 #include "temps.h"71 #include "ener.h"72 74 #include "description.h" 73 #include "serre.h"74 75 !#include "com_io_dyn.h" 75 76 #include "iniprint.h" … … 1455 1456 call Gather_Field(teta,ip1jmp1,llm,0) 1456 1457 call Gather_Field(pk,ip1jmp1,llm,0) 1457 1458 call Gather_Field(phi,ip1jmp1,llm,0) 1458 1459 do iq=1,nqtot 1459 1460 call Gather_Field(q(1,1,iq),ip1jmp1,llm,0) 1460 1461 enddo 1461 1462 call Gather_Field(masse,ip1jmp1,llm,0) 1462 1463 call Gather_Field(ps,ip1jmp1,1,0) 1463 1464 call Gather_Field(phis,ip1jmp1,1,0) 1464 1465 if (mpi_rank==0) then 1465 1466 CALL writedynav(itau,vcov, 1466 1467 & ucov,teta,pk,phi,q,masse,ps,phis) 1467 1468 endif 1468 1469 #endif 1469 1470 !$OMP END MASTER … … 1477 1478 IF( MOD(itau,iecri).EQ.0) THEN 1478 1479 ! Ehouarn: output only during LF or Backward Matsuno 1479 1480 if (leapf.or.(.not.leapf.and.(.not.forward))) then 1480 1481 c$OMP BARRIER 1481 1482 c$OMP MASTER … … 1515 1516 call Gather_Field(ucov,ip1jmp1,llm,0) 1516 1517 call Gather_Field(teta,ip1jmp1,llm,0) 1517 1518 call Gather_Field(phi,ip1jmp1,llm,0) 1518 1519 do iq=1,nqtot 1519 1520 call Gather_Field(q(1,1,iq),ip1jmp1,llm,0) 1520 1521 enddo 1521 1522 call Gather_Field(masse,ip1jmp1,llm,0) 1522 1523 call Gather_Field(ps,ip1jmp1,1,0) 1523 1524 call Gather_Field(phis,ip1jmp1,1,0) 1524 1525 if (mpi_rank==0) then 1525 1526 1526 CALL writehist(itau,vcov,ucov,teta,phi,q,masse,ps,phis) 1527 endif 1527 1528 ! CALL writehist_p(histid,histvid, itau,vcov, 1528 1529 ! & ucov,teta,phi,q,masse,ps,phis) … … 1650 1651 call Gather_Field(teta,ip1jmp1,llm,0) 1651 1652 call Gather_Field(pk,ip1jmp1,llm,0) 1652 1653 call Gather_Field(phi,ip1jmp1,llm,0) 1653 1654 do iq=1,nqtot 1654 1655 call Gather_Field(q(1,1,iq),ip1jmp1,llm,0) 1655 1656 enddo 1656 1657 call Gather_Field(masse,ip1jmp1,llm,0) 1657 1658 call Gather_Field(ps,ip1jmp1,1,0) 1658 1659 call Gather_Field(phis,ip1jmp1,1,0) 1659 1660 if (mpi_rank==0) then 1660 1661 CALL writedynav(itau,vcov, 1661 1662 & ucov,teta,pk,phi,q,masse,ps,phis) 1662 1663 endif 1663 1664 #endif 1664 1665 !$OMP END MASTER … … 1706 1707 call Gather_Field(ucov,ip1jmp1,llm,0) 1707 1708 call Gather_Field(teta,ip1jmp1,llm,0) 1708 1709 call Gather_Field(phi,ip1jmp1,llm,0) 1709 1710 do iq=1,nqtot 1710 1711 call Gather_Field(q(1,1,iq),ip1jmp1,llm,0) 1711 1712 enddo 1712 1713 call Gather_Field(masse,ip1jmp1,llm,0) 1713 1714 call Gather_Field(ps,ip1jmp1,1,0) 1714 1715 call Gather_Field(phis,ip1jmp1,1,0) 1715 1716 if (mpi_rank==0) then 1716 1717 CALL writehist(itau,vcov,ucov,teta,phi,q,masse,ps,phis) 1717 1718 endif 1718 1719 ! CALL writehist_p(histid, histvid, itau,vcov , 1719 1720 ! & ucov,teta,phi,q,masse,ps,phis) -
LMDZ5/branches/testing/libf/dyn3dpar/massbar_p.F
r1910 r2641 18 18 #include "dimensions.h" 19 19 #include "paramet.h" 20 #include "comconst.h"21 20 #include "comgeom.h" 22 21 c -
LMDZ5/branches/testing/libf/dyn3dpar/massbarxy_p.F
r1910 r2641 17 17 #include "dimensions.h" 18 18 #include "paramet.h" 19 #include "comconst.h"20 19 #include "comgeom.h" 21 20 c -
LMDZ5/branches/testing/libf/dyn3dpar/massdair_p.F
r1910 r2641 18 18 #include "dimensions.h" 19 19 #include "paramet.h" 20 #include "comconst.h"21 20 #include "comgeom.h" 22 21 c -
LMDZ5/branches/testing/libf/dyn3dpar/nxgrarot_p.F
r1910 r2641 22 22 #include "paramet.h" 23 23 #include "comdissipn.h" 24 #include "logic.h"25 24 c 26 25 INTEGER klevel -
LMDZ5/branches/testing/libf/dyn3dpar/qminimum_p.F
r1910 r2641 8 8 #include "dimensions.h" 9 9 #include "paramet.h" 10 #include "comvert.h"11 10 c 12 11 INTEGER nq -
LMDZ5/branches/testing/libf/dyn3dpar/sw_case_williamson91_6.F
r1910 r2641 26 26 c 27 27 c======================================================================= 28 USE comconst_mod, ONLY: cpp, omeg, rad 29 USE comvert_mod, ONLY: ap, bp, preff 30 28 31 IMPLICIT NONE 29 32 c----------------------------------------------------------------------- … … 33 36 #include "dimensions.h" 34 37 #include "paramet.h" 35 #include "comvert.h"36 #include "comconst.h"37 38 #include "comgeom.h" 38 39 #include "iniprint.h" -
LMDZ5/branches/testing/libf/dyn3dpar/top_bound_p.F
r1910 r2641 4 4 SUBROUTINE top_bound_p(vcov,ucov,teta,masse,dt) 5 5 USE parallel_lmdz 6 USE comconst_mod, ONLY: iflag_top_bound, mode_top_bound, 7 & tau_top_bound 8 USE comvert_mod, ONLY: presnivs, preff, scaleheight 9 6 10 IMPLICIT NONE 7 11 c 8 12 #include "dimensions.h" 9 13 #include "paramet.h" 10 #include "comconst.h"11 #include "comvert.h"12 14 #include "comgeom2.h" 13 15 … … 40 42 ! NB: top_bound sponge is only called from leapfrog if ok_strato=.true. 41 43 42 ! sponge parameters: (loaded/set in conf_gcm.F ; stored in comconst .h)44 ! sponge parameters: (loaded/set in conf_gcm.F ; stored in comconst_mod) 43 45 ! iflag_top_bound=0 for no sponge 44 46 ! iflag_top_bound=1 for sponge over 4 topmost layers … … 69 71 REAL uzon(jjp1,llm),vzon(jjm,llm),tzon(jjp1,llm) 70 72 71 integer i 73 integer i 72 74 REAL,SAVE :: rdamp(llm) ! quenching coefficient 73 75 real,save :: lambda(llm) ! inverse or quenching time scale (Hz) -
LMDZ5/branches/testing/libf/dyn3dpar/tourpot_p.F
r1910 r2641 23 23 #include "paramet.h" 24 24 #include "comgeom.h" 25 #include "logic.h"26 25 27 26 REAL rot( ip1jm,llm ) -
LMDZ5/branches/testing/libf/dyn3dpar/vitvert_p.F
r1910 r2641 2 2 c 3 3 USE parallel_lmdz 4 USE comvert_mod, ONLY: bp 5 4 6 IMPLICIT NONE 5 7 … … 28 30 #include "dimensions.h" 29 31 #include "paramet.h" 30 #include "comvert.h"31 32 32 33 REAL w(ip1jmp1,llm),convm(ip1jmp1,llm) -
LMDZ5/branches/testing/libf/dyn3dpar/vlsplt_p.F
r1910 r2641 25 25 #include "dimensions.h" 26 26 #include "paramet.h" 27 #include "logic.h"28 #include "comvert.h"29 #include "comconst.h"30 27 31 28 c … … 208 205 #include "dimensions.h" 209 206 #include "paramet.h" 210 #include "logic.h"211 #include "comvert.h"212 #include "comconst.h"213 207 c 214 208 c … … 539 533 c -------------------------------------------------------------------- 540 534 USE parallel_lmdz 535 USE comconst_mod, ONLY: pi 541 536 IMPLICIT NONE 542 537 c 543 538 #include "dimensions.h" 544 539 #include "paramet.h" 545 #include "logic.h"546 #include "comvert.h"547 #include "comconst.h"548 540 #include "comgeom.h" 549 541 c … … 932 924 #include "dimensions.h" 933 925 #include "paramet.h" 934 #include "logic.h"935 #include "comvert.h"936 #include "comconst.h"937 926 c 938 927 c -
LMDZ5/branches/testing/libf/dyn3dpar/vlspltgen_p.F
r1910 r2641 27 27 USE VAMPIR 28 28 USE infotrac, ONLY : nqtot 29 USE comconst_mod, ONLY: cpp 29 30 IMPLICIT NONE 30 31 … … 32 33 #include "dimensions.h" 33 34 #include "paramet.h" 34 #include "logic.h"35 #include "comvert.h"36 #include "comconst.h"37 35 38 36 c … … 105 103 106 104 107 108 109 110 111 105 ijb=ij_begin-iip1 106 ije=ij_end+iip1 107 if (pole_nord) ijb=ij_begin 108 if (pole_sud) ije=ij_end 109 112 110 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 113 111 DO l = 1, llm 114 112 DO ij = ijb, ije 115 113 tempe(ij) = teta(ij,l) * pk(ij,l) /cpp … … 191 189 192 190 if(iadv(iq) == 0) then 193 194 195 196 191 192 cycle 193 194 else if (iadv(iq)==10) then 197 195 198 196 #ifdef _ADV_HALO 199 200 & 197 call vlx_p(zq(1,1,iq),pente_max,zm(1,1,iq),mu, 198 & ij_begin,ij_begin+2*iip1-1) 201 199 call vlx_p(zq(1,1,iq),pente_max,zm(1,1,iq),mu, 202 200 & ij_end-2*iip1+1,ij_end) 203 201 #else 204 205 & 202 call vlx_p(zq(1,1,iq),pente_max,zm(1,1,iq),mu, 203 & ij_begin,ij_end) 206 204 #endif 207 205 … … 215 213 call VTe(VTHallo) 216 214 c$OMP END MASTER 217 215 else if (iadv(iq)==14) then 218 216 219 217 #ifdef _ADV_HALO … … 239 237 c$OMP END MASTER 240 238 else 241 242 239 240 stop 'vlspltgen_p : schema non parallelise' 243 241 244 242 endif … … 261 259 262 260 if(iadv(iq) == 0) then 263 264 265 266 261 262 cycle 263 264 else if (iadv(iq)==10) then 267 265 268 266 #ifdef _ADV_HALLO … … 270 268 & ij_begin+2*iip1,ij_end-2*iip1) 271 269 #endif 272 270 else if (iadv(iq)==14) then 273 271 #ifdef _ADV_HALLO 274 272 call vlxqs_p(zq(1,1,iq),pente_max,zm(1,1,iq),mu,qsat, … … 276 274 #endif 277 275 else 278 279 276 277 stop 'vlspltgen_p : schema non parallelise' 280 278 281 279 endif … … 301 299 302 300 if(iadv(iq) == 0) then 303 304 305 306 301 302 cycle 303 304 else if (iadv(iq)==10) then 307 305 308 306 call vly_p(zq(1,1,iq),pente_max,zm(1,1,iq),mv) 309 307 310 308 else if (iadv(iq)==14) then 311 309 312 310 call vlyqs_p(zq(1,1,iq),pente_max,zm(1,1,iq),mv,qsat) 313 311 314 312 else 315 316 313 314 stop 'vlspltgen_p : schema non parallelise' 317 315 318 316 endif … … 324 322 325 323 if(iadv(iq) == 0) then 326 327 328 329 324 325 cycle 326 327 else if (iadv(iq)==10 .or. iadv(iq)==14 ) then 330 328 331 329 c$OMP BARRIER … … 350 348 c$OMP MASTER 351 349 call VTe(VTHallo) 352 c$OMP END MASTER 353 c$OMP BARRIER 354 else 355 356 350 c$OMP END MASTER 351 c$OMP BARRIER 352 else 353 354 stop 'vlspltgen_p : schema non parallelise' 357 355 358 356 endif … … 369 367 c$OMP MASTER 370 368 call VTe(VTHallo) 371 c$OMP END MASTER 369 c$OMP END MASTER 372 370 373 371 c$OMP BARRIER … … 375 373 376 374 if(iadv(iq) == 0) then 377 378 379 380 375 376 cycle 377 378 else if (iadv(iq)==10 .or. iadv(iq)==14 ) then 381 379 c$OMP BARRIER 382 380 … … 388 386 c$OMP BARRIER 389 387 else 390 391 388 389 stop 'vlspltgen_p : schema non parallelise' 392 390 393 391 endif … … 414 412 415 413 if(iadv(iq) == 0) then 416 417 418 419 414 415 cycle 416 417 else if (iadv(iq)==10) then 420 418 421 419 call vly_p(zq(1,1,iq),pente_max,zm(1,1,iq),mv) 422 420 423 421 else if (iadv(iq)==14) then 424 422 425 423 call vlyqs_p(zq(1,1,iq),pente_max,zm(1,1,iq),mv,qsat) 426 424 427 425 else 428 429 426 427 stop 'vlspltgen_p : schema non parallelise' 430 428 431 429 endif … … 436 434 437 435 if(iadv(iq) == 0) then 438 439 440 441 436 437 cycle 438 439 else if (iadv(iq)==10) then 442 440 443 441 call vlx_p(zq(1,1,iq),pente_max,zm(1,1,iq),mu, 444 442 & ij_begin,ij_end) 445 443 446 444 else if (iadv(iq)==14) then 447 445 448 446 call vlxqs_p(zq(1,1,iq),pente_max,zm(1,1,iq),mu,qsat, … … 450 448 451 449 else 452 450 453 451 stop 'vlspltgen_p : schema non parallelise' 454 452 … … 469 467 DO ij=ijb,ije 470 468 c print *,'zq-->',ij,l,iq,zq(ij,l,iq) 471 c 472 469 c print *,'q-->',ij,l,iq,q(ij,l,iq) 470 q(ij,l,iq)=zq(ij,l,iq) 473 471 ENDDO 474 472 ENDDO -
LMDZ5/branches/testing/libf/dyn3dpar/vlspltqs_p.F
r1910 r2641 25 25 USE mod_hallo 26 26 USE VAMPIR 27 USE comconst_mod, ONLY: cpp 27 28 IMPLICIT NONE 28 29 … … 30 31 #include "dimensions.h" 31 32 #include "paramet.h" 32 #include "logic.h"33 #include "comvert.h"34 #include "comconst.h"35 33 36 34 c … … 236 234 #include "dimensions.h" 237 235 #include "paramet.h" 238 #include "logic.h"239 #include "comvert.h"240 #include "comconst.h"241 236 c 242 237 c … … 584 579 c -------------------------------------------------------------------- 585 580 USE parallel_lmdz 581 USE comconst_mod, ONLY: pi 586 582 IMPLICIT NONE 587 583 c 588 584 #include "dimensions.h" 589 585 #include "paramet.h" 590 #include "logic.h"591 #include "comvert.h"592 #include "comconst.h"593 586 #include "comgeom.h" 594 587 c -
LMDZ5/branches/testing/libf/dyn3dpar/writedynav_p.F
r1910 r2641 12 12 USE misc_mod 13 13 USE infotrac 14 USE comconst_mod, ONLY: cpp 15 USE temps_mod, ONLY: itau_dyn 16 14 17 implicit none 15 18 … … 42 45 #include "dimensions.h" 43 46 #include "paramet.h" 44 #include "comconst.h"45 #include "comvert.h"46 47 #include "comgeom.h" 47 #include "temps.h"48 #include "ener.h"49 #include "logic.h"50 48 #include "description.h" 51 #include "serre.h"52 49 #include "iniprint.h" 53 50 -
LMDZ5/branches/testing/libf/dyn3dpar/writehist_p.F
r1910 r2641 12 12 USE misc_mod 13 13 USE infotrac 14 USE temps_mod, ONLY: itau_dyn 15 14 16 implicit none 15 17 … … 43 45 #include "dimensions.h" 44 46 #include "paramet.h" 45 #include "comconst.h"46 #include "comvert.h"47 47 #include "comgeom.h" 48 #include "temps.h"49 #include "ener.h"50 #include "logic.h"51 48 #include "description.h" 52 #include "serre.h"53 49 #include "iniprint.h" 54 50 -
LMDZ5/branches/testing/libf/dynphy_lonlat/calfis.F
r2435 r2641 34 34 USE callphysiq_mod, ONLY: call_physiq 35 35 #endif 36 36 USE comconst_mod, ONLY: cpp, daysec, dtphys, dtvr, kappa, pi 37 USE comvert_mod, ONLY: preff, presnivs 38 37 39 IMPLICIT NONE 38 40 c======================================================================= … … 89 91 c ------------------ 90 92 91 #include "dimensions.h" 92 #include "paramet.h" 93 #include "temps.h" 93 include "dimensions.h" 94 include "paramet.h" 94 95 95 96 INTEGER ngridmx 96 97 PARAMETER( ngridmx = 2+(jjm-1)*iim - 1/jjm ) 97 98 98 #include "comconst.h" 99 #include "comvert.h" 100 #include "comgeom2.h" 101 #include "iniprint.h" 99 include "comgeom2.h" 100 include "iniprint.h" 102 101 103 102 c Arguments : … … 142 141 c 143 142 REAL zrot(iip1,jjm,llm) ! AdlC May 2014 144 REAL zufi(ngridmx,llm), zvfi(ngridmx,llm), zrfi(ngridmx,llm) 143 REAL zufi(ngridmx,llm), zvfi(ngridmx,llm) 144 REAL zrfi(ngridmx,llm) ! relative wind vorticity 145 145 REAL ztfi(ngridmx,llm),zqfi(ngridmx,llm,nqtot) 146 REAL zpk(ngridmx,llm) 146 147 c 147 148 REAL pcvgu(ngridmx,llm), pcvgv(ngridmx,llm) … … 212 213 213 214 214 c 42. pression intercouches :215 c 42. pression intercouches et fonction d'Exner: 215 216 c 216 217 c ----------------------------------------------------------------- … … 223 224 unskap = 1./ kappa 224 225 c 225 DO l = 1, llmp1 226 DO l = 1, llm 227 zpk( 1,l ) = ppk(1,1,l) 226 228 zplev( 1,l ) = pp(1,1,l) 227 229 ig0 = 2 228 230 DO j = 2, jjm 229 231 DO i =1, iim 232 zpk( ig0,l ) = ppk(i,j,l) 230 233 zplev( ig0,l ) = pp(i,j,l) 231 234 ig0 = ig0 +1 232 235 ENDDO 233 236 ENDDO 237 zpk( ngridmx,l ) = ppk(1,jjp1,l) 234 238 zplev( ngridmx,l ) = pp(1,jjp1,l) 235 239 ENDDO 240 zplev( 1,llmp1 ) = pp(1,1,llmp1) 241 ig0 = 2 242 DO j = 2, jjm 243 DO i =1, iim 244 zplev( ig0,llmp1 ) = pp(i,j,llmp1) 245 ig0 = ig0 +1 246 ENDDO 247 ENDDO 248 zplev( ngridmx,llmp1 ) = pp(1,jjp1,llmp1) 236 249 c 237 250 c … … 472 485 & jD_cur,jH_cur_split,zdt_split, 473 486 & zplev,zplay, 474 & zp hi,zphis,487 & zpk,zphi,zphis, 475 488 & presnivs, 476 489 & zufi,zvfi,zrfi,ztfi,zqfi, -
LMDZ5/branches/testing/libf/dynphy_lonlat/calfis_loc.F
r2435 r2641 50 50 USE callphysiq_mod, ONLY: call_physiq 51 51 #endif 52 USE comvert_mod, ONLY: preff, presnivs 53 USE comconst_mod, ONLY: cpp, daysec, dtphys, dtvr, kappa, pi 52 54 53 55 #ifdef CPP_PARA … … 107 109 c ------------------ 108 110 109 #include "dimensions.h" 110 #include "paramet.h" 111 #include "temps.h" 111 include "dimensions.h" 112 include "paramet.h" 112 113 113 114 INTEGER ngridmx 114 115 PARAMETER( ngridmx = 2+(jjm-1)*iim - 1/jjm ) 115 116 116 #include "comconst.h" 117 #include "comvert.h" 118 #include "comgeom2.h" 119 #include "iniprint.h" 117 include "comgeom2.h" 118 include "iniprint.h" 120 119 #ifdef CPP_MPI 121 120 include 'mpif.h' … … 163 162 REAL,ALLOCATABLE,SAVE :: zufi(:,:), zvfi(:,:), zrfi(:,:) 164 163 REAL,ALLOCATABLE,SAVE :: ztfi(:,:),zqfi(:,:,:) 164 REAL,ALLOCATABLE,SAVE :: zpk(:,:) 165 165 c 166 166 REAL,ALLOCATABLE,SAVE :: pcvgu(:,:), pcvgv(:,:) … … 175 175 REAL,ALLOCATABLE,SAVE :: zplev_omp(:,:) 176 176 REAL,ALLOCATABLE,SAVE :: zplay_omp(:,:) 177 REAL,ALLOCATABLE,SAVE :: zpk_omp(:,:) 177 178 REAL,ALLOCATABLE,SAVE :: zphi_omp(:,:) 178 179 REAL,ALLOCATABLE,SAVE :: zphis_omp(:) … … 212 213 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 213 214 214 c$OMP THREADPRIVATE(zplev_omp,zplay_omp,zp hi_omp,zphis_omp,215 c$OMP THREADPRIVATE(zplev_omp,zplay_omp,zpk_omp,zphi_omp,zphis_omp, 215 216 c$OMP+ presnivs_omp,zufi_omp,zvfi_omp,ztfi_omp, 216 217 c$OMP+ zrfi_omp,zqfi_omp,zdufi_omp,zdvfi_omp, … … 276 277 ALLOCATE(zdufi2(klon+iim,llm),zdvfi2(klon+iim,llm)) 277 278 ALLOCATE(flxwfi(klon,llm)) 279 ALLOCATE(zpk(klon,llm)) 278 280 c$OMP END MASTER 279 c$OMP BARRIER 281 c$OMP BARRIER 280 282 ELSE 281 283 debut = .FALSE. … … 329 331 ENDDO 330 332 c$OMP END DO NOWAIT 333 334 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 335 DO l=1,llm 336 do ig0=1,klon 337 i=index_i(ig0) 338 j=index_j(ig0) 339 zpk(ig0,l)=ppk(i,j,l) 340 enddo 341 ENDDO 342 c$OMP END DO NOWAIT 343 331 344 c 332 345 c … … 365 378 enddo 366 379 ENDDO 367 c$OMP END DO NOWAIT 380 c$OMP END DO NOWAIT 368 381 ENDDO 369 382 … … 382 395 enddo 383 396 ENDDO 384 c$OMP END DO NOWAIT 397 c$OMP END DO NOWAIT 385 398 386 399 c CALL gr_dyn_fi_p(llm,iip1,jjp1,klon,pphi,zphi) … … 403 416 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 404 417 DO l=1,llm 405 406 407 418 DO ig=1,klon 419 zphi(ig,l)=zphi(ig,l)-zphis(ig) 420 ENDDO 408 421 ENDDO 409 422 c$OMP END DO NOWAIT … … 532 545 DO i=2,iim 533 546 z1(i) =(rlonu(i)-rlonu(i-1))*pvcov(i,jjm,l)/cv(i,jjm) 534 547 ENDDO 535 548 536 549 DO i=1,iim 537 550 zcos(i) = COS(rlonv(i))*z1(i) 538 551 zsin(i) = SIN(rlonv(i))*z1(i) 539 552 ENDDO 540 553 541 554 zufi(klon,l) = SSUM(iim,zcos,1)/pi … … 572 585 allocate(zplev_omp(klon,llm+1)) 573 586 allocate(zplay_omp(klon,llm)) 587 allocate(zpk_omp(klon,llm)) 574 588 allocate(zphi_omp(klon,llm)) 575 589 allocate(zphis_omp(klon)) … … 590 604 allocate(zdpsrf_omp(klon)) 591 605 allocate(flxwfi_omp(klon,llm)) 592 606 first_omp=.false. 593 607 endif 594 608 595 609 596 610 klon=klon_omp 597 611 offset=klon_omp_begin-1 … … 600 614 do i=1,klon 601 615 zplev_omp(i,l)=zplev(offset+i,l) 602 603 enddo 604 616 enddo 617 enddo 618 605 619 do l=1,llm 606 620 do i=1,klon 607 zplay_omp(i,l)=zplay(offset+i,l) 621 zplay_omp(i,l)=zplay(offset+i,l) 622 enddo 623 enddo 624 625 do l=1,llm 626 do i=1,klon 627 zpk_omp(i,l)=zpk(offset+i,l) 608 628 enddo 609 629 enddo … … 611 631 do l=1,llm 612 632 do i=1,klon 613 614 615 enddo 616 633 zphi_omp(i,l)=zphi(offset+i,l) 634 enddo 635 enddo 636 617 637 do i=1,klon 618 638 zphis_omp(i)=zphis(offset+i) 619 639 enddo 620 640 621 641 622 642 do l=1,llm 623 643 presnivs_omp(l)=presnivs(l) 624 644 enddo 625 626 do l=1,llm 627 do i=1,klon 628 629 630 enddo 631 632 do l=1,llm 633 do i=1,klon 634 635 636 enddo 637 638 do l=1,llm 639 do i=1,klon 640 641 642 enddo 643 644 do l=1,llm 645 do i=1,klon 646 647 648 enddo 649 645 646 do l=1,llm 647 do i=1,klon 648 zufi_omp(i,l)=zufi(offset+i,l) 649 enddo 650 enddo 651 652 do l=1,llm 653 do i=1,klon 654 zvfi_omp(i,l)=zvfi(offset+i,l) 655 enddo 656 enddo 657 658 do l=1,llm 659 do i=1,klon 660 zrfi_omp(i,l)=zrfi(offset+i,l) 661 enddo 662 enddo 663 664 do l=1,llm 665 do i=1,klon 666 ztfi_omp(i,l)=ztfi(offset+i,l) 667 enddo 668 enddo 669 650 670 do iq=1,nqtot 651 671 do l=1,llm 652 672 do i=1,klon 653 673 zqfi_omp(i,l,iq)=zqfi(offset+i,l,iq) 654 655 656 enddo 657 658 do l=1,llm 659 do i=1,klon 660 661 662 enddo 663 664 do l=1,llm 665 do i=1,klon 666 667 668 enddo 669 674 enddo 675 enddo 676 enddo 677 678 do l=1,llm 679 do i=1,klon 680 zdufi_omp(i,l)=zdufi(offset+i,l) 681 enddo 682 enddo 683 684 do l=1,llm 685 do i=1,klon 686 zdvfi_omp(i,l)=zdvfi(offset+i,l) 687 enddo 688 enddo 689 670 690 do l=1,llm 671 691 do i=1,klon 672 692 zdtfi_omp(i,l)=zdtfi(offset+i,l) 673 674 enddo 675 693 enddo 694 enddo 695 676 696 do iq=1,nqtot 677 697 do l=1,llm 678 698 do i=1,klon 679 680 699 zdqfi_omp(i,l,iq)=zdqfi(offset+i,l,iq) 700 enddo 681 701 enddo 682 702 enddo 683 703 684 704 do i=1,klon 685 705 zdpsrf_omp(i)=zdpsrf(offset+i) 686 706 enddo 687 707 … … 689 709 do i=1,klon 690 710 flxwfi_omp(i,l)=flxwfi(offset+i,l) 691 711 enddo 692 712 enddo 693 713 … … 715 735 & jD_cur,jH_cur_split,zdt_split, 716 736 & zplev_omp,zplay_omp, 717 & zp hi_omp,zphis_omp,737 & zpk_omp,zphi_omp,zphis_omp, 718 738 & presnivs_omp, 719 739 & zufi_omp,zvfi_omp,zrfi_omp,ztfi_omp,zqfi_omp, … … 749 769 do i=1,klon 750 770 zplev(offset+i,l)=zplev_omp(i,l) 751 752 enddo 753 771 enddo 772 enddo 773 754 774 do l=1,llm 755 775 do i=1,klon 756 757 758 enddo 759 760 do l=1,llm 761 do i=1,klon 762 763 764 enddo 765 776 zplay(offset+i,l)=zplay_omp(i,l) 777 enddo 778 enddo 779 780 do l=1,llm 781 do i=1,klon 782 zphi(offset+i,l)=zphi_omp(i,l) 783 enddo 784 enddo 785 766 786 767 787 do i=1,klon 768 788 zphis(offset+i)=zphis_omp(i) 769 789 enddo 770 790 771 791 772 792 do l=1,llm 773 793 presnivs(l)=presnivs_omp(l) 774 794 enddo 775 776 do l=1,llm 777 do i=1,klon 778 779 780 enddo 781 782 do l=1,llm 783 do i=1,klon 784 785 786 enddo 787 788 do l=1,llm 789 do i=1,klon 790 791 792 enddo 793 795 796 do l=1,llm 797 do i=1,klon 798 zufi(offset+i,l)=zufi_omp(i,l) 799 enddo 800 enddo 801 802 do l=1,llm 803 do i=1,klon 804 zvfi(offset+i,l)=zvfi_omp(i,l) 805 enddo 806 enddo 807 808 do l=1,llm 809 do i=1,klon 810 ztfi(offset+i,l)=ztfi_omp(i,l) 811 enddo 812 enddo 813 794 814 do iq=1,nqtot 795 815 do l=1,llm 796 816 do i=1,klon 797 817 zqfi(offset+i,l,iq)=zqfi_omp(i,l,iq) 798 799 800 enddo 801 802 do l=1,llm 803 do i=1,klon 804 805 806 enddo 807 808 do l=1,llm 809 do i=1,klon 810 811 812 enddo 813 818 enddo 819 enddo 820 enddo 821 822 do l=1,llm 823 do i=1,klon 824 zdufi(offset+i,l)=zdufi_omp(i,l) 825 enddo 826 enddo 827 828 do l=1,llm 829 do i=1,klon 830 zdvfi(offset+i,l)=zdvfi_omp(i,l) 831 enddo 832 enddo 833 814 834 do l=1,llm 815 835 do i=1,klon 816 836 zdtfi(offset+i,l)=zdtfi_omp(i,l) 817 818 enddo 819 837 enddo 838 enddo 839 820 840 do iq=1,nqtot 821 841 do l=1,llm 822 842 do i=1,klon 823 824 843 zdqfi(offset+i,l,iq)=zdqfi_omp(i,l,iq) 844 enddo 825 845 enddo 826 846 enddo 827 847 828 848 do i=1,klon 829 849 zdpsrf(offset+i)=zdpsrf_omp(i) 830 850 enddo 831 851 … … 929 949 930 950 if (.not. is_south_pole_dyn) then 931 951 pdpsfi(:,jj_end:jj_end+1)=0 932 952 endif 933 953 c$OMP END MASTER … … 1045 1065 pdqfi(:,jj_begin:jj_end,l,:)=0. 1046 1066 ENDDO 1047 c$OMP END DO NOWAIT 1067 c$OMP END DO NOWAIT 1048 1068 1049 1069 C … … 1056 1076 !CDIR ON_ADB(index_j) 1057 1077 !cdir NODEP 1058 1078 DO ig0=kstart,kend 1059 1079 i=index_i(ig0) 1060 1080 j=index_j(ig0) … … 1062 1082 if (i==1) pdqfi(iip1,j,l,iiq) = zdqfi(ig0,l,iq) 1063 1083 ENDDO 1064 1065 1066 1084 1085 IF (is_north_pole_dyn) then 1086 DO i=1,iip1 1067 1087 pdqfi(i,1,l,iiq) = zdqfi(1,l,iq) 1068 1069 1070 1071 1072 1088 ENDDO 1089 ENDIF 1090 1091 IF (is_south_pole_dyn) then 1092 DO i=1,iip1 1073 1093 pdqfi(i,jjp1,l,iiq) = zdqfi(klon,l,iq) 1074 1075 1076 1094 ENDDO 1095 ENDIF 1096 1077 1097 ENDDO 1078 c$OMP END DO NOWAIT 1098 c$OMP END DO NOWAIT 1079 1099 ENDDO 1080 1100 … … 1136 1156 pdvfi(i,j,l)=0.5*(zdvfi2(ig0,l)+zdvfi2(ig0+iim,l))*cv(i,j) 1137 1157 if (i==1) pdvfi(iip1,j,l) = 0.5*(zdvfi2(ig0,l)+ 1138 $ 1139 $ 1158 $ zdvfi2(ig0+iim,l)) 1159 $ *cv(i,j) 1140 1160 enddo 1141 1161 -
LMDZ5/branches/testing/libf/dynphy_lonlat/calfis_p.F
r2435 r2641 47 47 USE callphysiq_mod, ONLY: call_physiq 48 48 #endif 49 USE comvert_mod, ONLY: preff, presnivs 50 USE comconst_mod, ONLY: cpp, daysec, dtphys, dtvr, kappa, pi 49 51 50 52 IMPLICIT NONE … … 105 107 #include "dimensions.h" 106 108 #include "paramet.h" 107 #include "temps.h"108 109 109 110 INTEGER ngridmx 110 111 PARAMETER( ngridmx = 2+(jjm-1)*iim - 1/jjm ) 111 112 112 #include "comconst.h"113 #include "comvert.h"114 113 #include "comgeom2.h" 115 114 #include "iniprint.h" … … 159 158 REAL,ALLOCATABLE,SAVE :: zphi(:,:),zphis(:) 160 159 c 161 REAL zrot(iip1,jjb_v:jje_v,llm) ! AdlC May 2014 160 ! REAL zrot(iip1,jjb_v:jje_v,llm) ! AdlC May 2014 161 REAL :: zrot(iip1,jjm,llm) 162 162 REAL,ALLOCATABLE,SAVE :: zufi(:,:), zvfi(:,:), zrfi(:,:) 163 163 REAL,ALLOCATABLE,SAVE :: ztfi(:,:),zqfi(:,:,:) 164 REAL,ALLOCATABLE,SAVE :: zpk(:,:) 164 165 c 165 166 REAL,ALLOCATABLE,SAVE :: pcvgu(:,:), pcvgv(:,:) … … 174 175 REAL,ALLOCATABLE,SAVE :: zplev_omp(:,:) 175 176 REAL,ALLOCATABLE,SAVE :: zplay_omp(:,:) 177 REAL,ALLOCATABLE,SAVE :: zpk_omp(:,:) 176 178 REAL,ALLOCATABLE,SAVE :: zphi_omp(:,:) 177 179 REAL,ALLOCATABLE,SAVE :: zphis_omp(:) … … 211 213 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 212 214 213 c$OMP THREADPRIVATE(zplev_omp,zplay_omp,zp hi_omp,zphis_omp,215 c$OMP THREADPRIVATE(zplev_omp,zplay_omp,zpk_omp,zphi_omp,zphis_omp, 214 216 c$OMP+ presnivs_omp,zufi_omp,zvfi_omp,ztfi_omp, 215 217 c$OMP+ zrfi_omp,zqfi_omp,zdufi_omp,zdvfi_omp, … … 275 277 ALLOCATE(zdufi2(klon+iim,llm),zdvfi2(klon+iim,llm)) 276 278 ALLOCATE(flxwfi(klon,llm)) 279 ALLOCATE(zpk(klon,llm)) 277 280 c$OMP END MASTER 278 c$OMP BARRIER 281 c$OMP BARRIER 279 282 ELSE 280 283 debut = .FALSE. … … 328 331 ENDDO 329 332 c$OMP END DO NOWAIT 333 334 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 335 DO l=1,llm 336 do ig0=1,klon 337 i=index_i(ig0) 338 j=index_j(ig0) 339 zpk(ig0,l)=ppk(i,j,l) 340 enddo 341 ENDDO 342 c$OMP END DO NOWAIT 343 330 344 c 331 345 c … … 364 378 enddo 365 379 ENDDO 366 c$OMP END DO NOWAIT 380 c$OMP END DO NOWAIT 367 381 ENDDO 368 382 … … 379 393 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 380 394 DO l=1,llm 381 382 383 395 DO ig=1,klon 396 zphi(ig,l)=zphi(ig,l)-zphis(ig) 397 ENDDO 384 398 ENDDO 385 399 c$OMP END DO NOWAIT … … 509 523 DO i=2,iim 510 524 z1(i) =(rlonu(i)-rlonu(i-1))*pvcov(i,jjm,l)/cv(i,jjm) 511 525 ENDDO 512 526 513 527 DO i=1,iim 514 528 zcos(i) = COS(rlonv(i))*z1(i) 515 529 zsin(i) = SIN(rlonv(i))*z1(i) 516 530 ENDDO 517 531 518 532 zufi(klon,l) = SSUM(iim,zcos,1)/pi … … 537 551 allocate(zplev_omp(klon,llm+1)) 538 552 allocate(zplay_omp(klon,llm)) 553 allocate(zpk_omp(klon,llm)) 539 554 allocate(zphi_omp(klon,llm)) 540 555 allocate(zphis_omp(klon)) … … 555 570 allocate(zdpsrf_omp(klon)) 556 571 allocate(flxwfi_omp(klon,llm)) 557 572 first_omp=.false. 558 573 endif 559 574 560 575 561 576 klon=klon_omp 562 577 offset=klon_omp_begin-1 … … 565 580 do i=1,klon 566 581 zplev_omp(i,l)=zplev(offset+i,l) 567 568 enddo 569 582 enddo 583 enddo 584 570 585 do l=1,llm 571 586 do i=1,klon 572 zplay_omp(i,l)=zplay(offset+i,l) 587 zplay_omp(i,l)=zplay(offset+i,l) 588 enddo 589 enddo 590 591 do l=1,llm 592 do i=1,klon 593 zpk_omp(i,l)=zpk(offset+i,l) 573 594 enddo 574 595 enddo … … 576 597 do l=1,llm 577 598 do i=1,klon 578 579 580 enddo 581 599 zphi_omp(i,l)=zphi(offset+i,l) 600 enddo 601 enddo 602 582 603 do i=1,klon 583 604 zphis_omp(i)=zphis(offset+i) 584 605 enddo 585 606 586 607 587 608 do l=1,llm 588 609 presnivs_omp(l)=presnivs(l) 589 610 enddo 590 591 do l=1,llm 592 do i=1,klon 593 594 595 enddo 596 597 do l=1,llm 598 do i=1,klon 599 600 601 enddo 602 603 do l=1,llm 604 do i=1,klon 605 606 607 enddo 608 609 610 do l=1,llm 611 do i=1,klon 612 613 614 enddo 615 611 612 do l=1,llm 613 do i=1,klon 614 zufi_omp(i,l)=zufi(offset+i,l) 615 enddo 616 enddo 617 618 do l=1,llm 619 do i=1,klon 620 zvfi_omp(i,l)=zvfi(offset+i,l) 621 enddo 622 enddo 623 624 do l=1,llm 625 do i=1,klon 626 zrfi_omp(i,l)=zrfi(offset+i,l) 627 enddo 628 enddo 629 630 631 do l=1,llm 632 do i=1,klon 633 ztfi_omp(i,l)=ztfi(offset+i,l) 634 enddo 635 enddo 636 616 637 do iq=1,nqtot 617 638 do l=1,llm 618 639 do i=1,klon 619 640 zqfi_omp(i,l,iq)=zqfi(offset+i,l,iq) 620 621 622 enddo 623 624 do l=1,llm 625 do i=1,klon 626 627 628 enddo 629 630 do l=1,llm 631 do i=1,klon 632 633 634 enddo 635 641 enddo 642 enddo 643 enddo 644 645 do l=1,llm 646 do i=1,klon 647 zdufi_omp(i,l)=zdufi(offset+i,l) 648 enddo 649 enddo 650 651 do l=1,llm 652 do i=1,klon 653 zdvfi_omp(i,l)=zdvfi(offset+i,l) 654 enddo 655 enddo 656 636 657 do l=1,llm 637 658 do i=1,klon 638 659 zdtfi_omp(i,l)=zdtfi(offset+i,l) 639 640 enddo 641 660 enddo 661 enddo 662 642 663 do iq=1,nqtot 643 664 do l=1,llm 644 665 do i=1,klon 645 646 666 zdqfi_omp(i,l,iq)=zdqfi(offset+i,l,iq) 667 enddo 647 668 enddo 648 669 enddo 649 670 650 671 do i=1,klon 651 672 zdpsrf_omp(i)=zdpsrf(offset+i) 652 673 enddo 653 674 … … 655 676 do i=1,klon 656 677 flxwfi_omp(i,l)=flxwfi(offset+i,l) 657 678 enddo 658 679 enddo 659 680 … … 680 701 & jD_cur,jH_cur_split,zdt_split, 681 702 & zplev_omp,zplay_omp, 682 & zp hi_omp,zphis_omp,703 & zpk_omp,zphi_omp,zphis_omp, 683 704 & presnivs_omp, 684 705 & zufi_omp,zvfi_omp,zrfi_omp,ztfi_omp,zqfi_omp, … … 712 733 do i=1,klon 713 734 zplev(offset+i,l)=zplev_omp(i,l) 714 715 enddo 716 735 enddo 736 enddo 737 717 738 do l=1,llm 718 739 do i=1,klon 719 720 721 enddo 722 723 do l=1,llm 724 do i=1,klon 725 726 727 enddo 728 740 zplay(offset+i,l)=zplay_omp(i,l) 741 enddo 742 enddo 743 744 do l=1,llm 745 do i=1,klon 746 zphi(offset+i,l)=zphi_omp(i,l) 747 enddo 748 enddo 749 729 750 730 751 do i=1,klon 731 752 zphis(offset+i)=zphis_omp(i) 732 753 enddo 733 754 734 755 735 756 do l=1,llm 736 757 presnivs(l)=presnivs_omp(l) 737 758 enddo 738 739 do l=1,llm 740 do i=1,klon 741 742 743 enddo 744 745 do l=1,llm 746 do i=1,klon 747 748 749 enddo 750 751 do l=1,llm 752 do i=1,klon 753 754 755 enddo 756 759 760 do l=1,llm 761 do i=1,klon 762 zufi(offset+i,l)=zufi_omp(i,l) 763 enddo 764 enddo 765 766 do l=1,llm 767 do i=1,klon 768 zvfi(offset+i,l)=zvfi_omp(i,l) 769 enddo 770 enddo 771 772 do l=1,llm 773 do i=1,klon 774 ztfi(offset+i,l)=ztfi_omp(i,l) 775 enddo 776 enddo 777 757 778 do iq=1,nqtot 758 779 do l=1,llm 759 780 do i=1,klon 760 781 zqfi(offset+i,l,iq)=zqfi_omp(i,l,iq) 761 762 763 enddo 764 765 do l=1,llm 766 do i=1,klon 767 768 769 enddo 770 771 do l=1,llm 772 do i=1,klon 773 774 775 enddo 776 782 enddo 783 enddo 784 enddo 785 786 do l=1,llm 787 do i=1,klon 788 zdufi(offset+i,l)=zdufi_omp(i,l) 789 enddo 790 enddo 791 792 do l=1,llm 793 do i=1,klon 794 zdvfi(offset+i,l)=zdvfi_omp(i,l) 795 enddo 796 enddo 797 777 798 do l=1,llm 778 799 do i=1,klon 779 800 zdtfi(offset+i,l)=zdtfi_omp(i,l) 780 781 enddo 782 801 enddo 802 enddo 803 783 804 do iq=1,nqtot 784 805 do l=1,llm 785 806 do i=1,klon 786 787 807 zdqfi(offset+i,l,iq)=zdqfi_omp(i,l,iq) 808 enddo 788 809 enddo 789 810 enddo 790 811 791 812 do i=1,klon 792 813 zdpsrf(offset+i)=zdpsrf_omp(i) 793 814 enddo 794 815 … … 891 912 pdpsfi(:,jj_begin)=0 892 913 if (.not. is_south_pole_dyn) then 893 914 pdpsfi(:,jj_end)=0 894 915 endif 895 916 c$OMP END MASTER … … 975 996 pdqfi(:,:,l,:)=0. 976 997 ENDDO 977 c$OMP END DO NOWAIT 998 c$OMP END DO NOWAIT 978 999 979 1000 C … … 986 1007 !CDIR ON_ADB(index_j) 987 1008 !cdir NODEP 988 1009 DO ig0=kstart,kend 989 1010 i=index_i(ig0) 990 1011 j=index_j(ig0) … … 992 1013 if (i==1) pdqfi(iip1,j,l,iiq) = zdqfi(ig0,l,iq) 993 1014 ENDDO 994 995 996 1015 1016 IF (is_north_pole_dyn) then 1017 DO i=1,iip1 997 1018 pdqfi(i,1,l,iiq) = zdqfi(1,l,iq) 998 999 1000 1001 1002 1019 ENDDO 1020 ENDIF 1021 1022 IF (is_south_pole_dyn) then 1023 DO i=1,iip1 1003 1024 pdqfi(i,jjp1,l,iiq) = zdqfi(klon,l,iq) 1004 1005 1006 1025 ENDDO 1026 ENDIF 1027 1007 1028 ENDDO 1008 c$OMP END DO NOWAIT 1029 c$OMP END DO NOWAIT 1009 1030 ENDDO 1010 1031 … … 1066 1087 pdvfi(i,j,l)=0.5*(zdvfi2(ig0,l)+zdvfi2(ig0+iim,l))*cv(i,j) 1067 1088 if (i==1) pdvfi(iip1,j,l) = 0.5*(zdvfi2(ig0,l)+ 1068 $ 1069 $ 1089 $ zdvfi2(ig0+iim,l)) 1090 $ *cv(i,j) 1070 1091 enddo 1071 1092 -
LMDZ5/branches/testing/libf/dynphy_lonlat/phylmd/callphysiq_mod.F90
r2435 r2641 12 12 jD_cur,jH_cur_split,zdt_split, & 13 13 zplev_omp,zplay_omp, & 14 zp hi_omp,zphis_omp,&14 zpk_omp,zphi_omp,zphis_omp, & 15 15 presnivs_omp, & 16 16 zufi_omp,zvfi_omp,zrfi_omp,ztfi_omp,zqfi_omp, & … … 35 35 REAL,INTENT(IN) :: zplev_omp(klon,llm+1) ! interlayer pressure (Pa) 36 36 REAL,INTENT(IN) :: zplay_omp(klon,llm) ! mid-layer pressure (Pa) 37 REAL,INTENT(IN) :: zpk_omp(klon,llm) ! Exner function 37 38 REAL,INTENT(IN) :: zphi_omp(klon,llm) ! geopotential at midlayer 38 39 REAL,INTENT(IN) :: zphis_omp(klon) ! surface geopotential -
LMDZ5/branches/testing/libf/dynphy_lonlat/phylmd/ce0l.F90
r2471 r2641 34 34 USE mod_interface_dyn_phys, ONLY: init_interface_dyn_phys 35 35 #endif 36 USE comconst_mod, ONLY: cpp, daysec, dtphys, dtvr, g, kappa, omeg, r, rad, & 37 pi, jmp1 38 USE logic_mod, ONLY: iflag_phys, ok_etat0, ok_limit 39 USE comvert_mod, ONLY: pa, preff, pressure_exner 40 USE temps_mod, ONLY: calend, day_ini, dt 36 41 37 42 IMPLICIT NONE … … 42 47 include "paramet.h" 43 48 include "comgeom2.h" 44 include "comconst.h"45 include "comvert.h"46 49 include "iniprint.h" 47 include "temps.h"48 include "logic.h"49 50 REAL :: masque(iip1,jjp1) !--- CONTINENTAL MASK 50 51 REAL :: phis (iip1,jjp1) !--- GROUND GEOPOTENTIAL -
LMDZ5/branches/testing/libf/dynphy_lonlat/phylmd/etat0dyn_netcdf.F90
r2435 r2641 36 36 USE ioipsl, ONLY: flininfo, flinopen, flinget, flinclo, histclo 37 37 USE assert_eq_m, ONLY: assert_eq 38 USE comconst_mod, ONLY: pi, cpp, kappa 39 USE comvert_mod, ONLY: ap, bp, preff, pressure_exner 40 USE temps_mod, ONLY: annee_ref, day_ref, itau_dyn, itau_phy 41 38 42 IMPLICIT NONE 39 43 … … 45 49 include "paramet.h" 46 50 include "comgeom2.h" 47 include "comvert.h"48 include "comconst.h"49 include "temps.h"50 51 include "comdissnew.h" 51 include "serre.h"52 52 REAL, SAVE :: deg2rad 53 53 INTEGER, SAVE :: iml_dyn, jml_dyn, llm_dyn, ttm_dyn, fid_dyn -
LMDZ5/branches/testing/libf/dynphy_lonlat/phylmd/etat0phys_netcdf.F90
r2542 r2641 44 44 zmax0,fevap, rnebcon,falb_dir, wake_fip, agesno, detr_therm, pbl_tke, & 45 45 phys_state_var_init 46 USE comconst_mod, ONLY: pi, dtvr 46 47 47 48 PRIVATE … … 52 53 include "paramet.h" 53 54 include "comgeom2.h" 54 include "comconst.h"55 55 include "dimsoil.h" 56 include "temps.h"57 56 include "clesphys.h" 58 57 REAL, SAVE :: deg2rad -
LMDZ5/branches/testing/libf/dynphy_lonlat/phylmd/iniphysiq_mod.F90
r2594 r2641 12 12 prad,pg,pr,pcpp,iflag_phys) 13 13 USE dimphy, ONLY: init_dimphy 14 USE comvert_mod, ONLY: preff, ap, bp, presnivs, scaleheight, pseudoalt 14 15 USE inigeomphy_mod, ONLY: inigeomphy 15 USE mod_grid_phy_lmdz, ONLY: klon_glo ! number of atmospheric columns (on full grid)16 USE mod_grid_phy_lmdz, ONLY: nbp_lon,nbp_lat,nbp_lev,klon_glo ! number of atmospheric columns (on full grid) 16 17 USE mod_phys_lmdz_para, ONLY: klon_omp ! number of columns (on local omp grid) 17 18 USE vertical_layers_mod, ONLY : init_vertical_layers … … 28 29 USE CHEM_REP, ONLY : Init_chem_rep_phys 29 30 #endif 30 USE control_mod, ONLY: dayref,anneeref,day_step,nday,offline, iphysiq 31 USE control_mod, ONLY: dayref,anneeref,day_step,nday,offline, iphysiq, config_inca 31 32 USE inifis_mod, ONLY: inifis 32 33 USE time_phylmdz_mod, ONLY: init_time 34 USE temps_mod, ONLY: annee_ref, day_ini, day_ref, start_time, calend 33 35 USE infotrac_phy, ONLY: init_infotrac_phy 34 36 USE phystokenc_mod, ONLY: init_phystokenc … … 50 52 51 53 include "dimensions.h" 52 include "comvert.h"53 include "comconst.h"54 54 include "iniprint.h" 55 include "temps.h"56 55 include "tracstoke.h" 57 56 … … 99 98 ! --> now initialize things specific to the phylmd physics package 100 99 101 !$OMP PARALLEL DEFAULT(SHARED) COPYIN(/temps/) 100 !!$OMP PARALLEL DEFAULT(SHARED) COPYIN(/temps/) 101 !$OMP PARALLEL DEFAULT(SHARED) & 102 ! Copy all threadprivate variables in temps_mod 103 !$OMP COPYIN(annee_ref, day_ini, day_ref, start_time) 102 104 103 105 ! copy over preff , ap(), bp(), etc … … 139 141 call init_const_lmdz( & 140 142 anneeref,dayref, iphysiq,day_step,nday, & 141 nbsrf, is_oce,is_sic, is_ter,is_lic, calend) 143 nbsrf, is_oce,is_sic, is_ter,is_lic, calend, & 144 config_inca) 142 145 call init_inca_para( & 143 146 nbp_lon,nbp_lat,nbp_lev,klon_glo,mpi_size, & … … 145 148 #endif 146 149 END IF 147 !$OMP PARALLEL DEFAULT(SHARED) COPYIN(/temps/)148 150 151 !!$OMP PARALLEL DEFAULT(SHARED) COPYIN(/temps/) 152 !$OMP PARALLEL DEFAULT(SHARED) 149 153 ! Additional initializations for aquaplanets 150 154 IF (iflag_phys>=100) THEN -
LMDZ5/branches/testing/libf/dynphy_lonlat/phylmd/init_ssrf_m.F90
r2435 r2641 9 9 USE grid_atob_m, ONLY: grille_m 10 10 USE ioipsl, ONLY: flininfo, flinopen, flinget, flinclo 11 USE comconst_mod, ONLY: im, pi 11 12 12 13 CHARACTER(LEN=256), PARAMETER :: icefname="landiceref.nc", icevar="landice" … … 17 18 include "paramet.h" 18 19 include "comgeom2.h" 19 include "comconst.h"20 20 21 21 CONTAINS -
LMDZ5/branches/testing/libf/dynphy_lonlat/phylmd/limit_netcdf.F90
r2594 r2641 67 67 NF90_DEF_DIM, NF90_DEF_VAR, NF90_PUT_VAR, NF90_PUT_ATT, & 68 68 NF90_NOERR, NF90_NOWRITE, NF90_DOUBLE, NF90_GLOBAL, & 69 69 NF90_CLOBBER, NF90_ENDDEF, NF90_UNLIMITED, NF90_FLOAT 70 70 USE inter_barxy_m, ONLY: inter_barxy 71 71 USE netcdf95, ONLY: nf95_def_var, nf95_put_att, nf95_put_var 72 USE comconst_mod, ONLY: pi 72 73 IMPLICIT NONE 73 74 !------------------------------------------------------------------------------- … … 81 82 !------------------------------------------------------------------------------- 82 83 ! Local variables: 83 include "logic.h"84 84 include "comgeom2.h" 85 include "comconst.h"86 85 87 86 !--- INPUT NETCDF FILES NAMES -------------------------------------------------- -
LMDZ5/branches/testing/libf/dynphy_lonlat/phylmd/test_disvert_m.F90
r2435 r2641 15 15 use exner_hyb_m, only: exner_hyb 16 16 use vertical_layers_mod, only: ap,bp,preff 17 use comconst_mod, only: kappa, cpp 17 18 18 19 ! For llm: 19 20 include "dimensions.h" 20 21 ! For kappa, cpp:22 include "comconst.h"23 21 24 22 ! Local: -
LMDZ5/branches/testing/libf/dynphy_lonlat/phymar/iniphysiq_mod.F90
r2594 r2641 12 12 prad,pg,pr,pcpp,iflag_phys) 13 13 USE dimphy, ONLY: init_dimphy 14 USE comvert_mod, ONLY: preff, ap, bp, presnivs, scaleheight, pseudoalt 14 15 USE inigeomphy_mod, ONLY: inigeomphy 16 USE vertical_layers_mod, ONLY : init_vertical_layers 15 17 USE infotrac, ONLY: nqtot 16 18 USE comcstphy, ONLY: rradius, & ! planet radius (m) … … 69 71 !$OMP PARALLEL 70 72 73 ! copy over preff , ap(), bp(), etc 74 CALL init_vertical_layers(nlayer,preff,scaleheight, & 75 ap,bp,presnivs,pseudoalt) 76 71 77 ! Initialize tracer names, numbers, etc. for physics 72 78 CALL init_infotrac_phy(nqtot) -
LMDZ5/branches/testing/libf/filtrez/filtreg_mod.F90
r1910 r2641 14 14 USE mod_filtre_fft_loc, ONLY : Init_filtre_fft_loc=>Init_filtre_fft ! 15 15 #endif 16 USE serre_mod, ONLY: alphax 17 USE logic_mod, ONLY: fxyhypb, ysinus 16 18 ! ... H. Upadhyaya, O.Sharma ... 17 19 ! … … 22 24 ! Correction le 28/10/97 P. Le Van . 23 25 ! ------------------------------------------------------------------- 24 #include "dimensions.h"25 #include "paramet.h"26 include "dimensions.h" 27 include "paramet.h" 26 28 ! ------------------------------------------------------------------- 27 #include "comgeom.h" 28 #include "coefils.h" 29 #include "logic.h" 30 #include "serre.h" 29 include "comgeom.h" 30 include "coefils.h" 31 31 32 32 REAL dlonu(iim),dlatu(jjm) -
LMDZ5/branches/testing/libf/filtrez/inifgn.F
r1910 r2641 8 8 IMPLICIT NONE 9 9 c 10 #include "dimensions.h" 11 #include "paramet.h" 12 #include "comgeom.h" 13 #include "serre.h" 10 include "dimensions.h" 11 include "paramet.h" 12 include "comgeom.h" 14 13 15 14 c … … 20 19 INTEGER i,j,k,imm1,nrot 21 20 C 22 #include "coefils.h"21 include "coefils.h" 23 22 c 24 23 EXTERNAL SSUM, acc,eigen,jacobi -
LMDZ5/branches/testing/libf/phylmd/YOETHF.h
r2056 r2641 24 24 & RALFDCP,RTWAT,RTBER,RTBERCU, & 25 25 & RTICE,RTICECU,RTWAT_RTICE_R,RTWAT_RTICECU_R,RKOOP1,& 26 & 26 & RKOOP2 27 27 28 28 !$OMP THREADPRIVATE(/YOETHF/) -
LMDZ5/branches/testing/libf/phylmd/add_pbl_tend.F90
r2408 r2641 1 SUBROUTINE add_pbl_tend(zdu, zdv, zdt, zdq, zdql, zdqi, paprs, text,abortphy )1 SUBROUTINE add_pbl_tend(zdu, zdv, zdt, zdq, zdql, zdqi, paprs, text,abortphy,flag_inhib_tend) 2 2 ! ====================================================================== 3 3 ! Ajoute les tendances de couche limite, soit determinees par la … … 34 34 CHARACTER *(*) text 35 35 REAL paprs(klon,klev+1) 36 INTEGER flag_inhib_tend ! if flag_inhib_tend != 0, tendencies are not added 36 37 37 38 ! Local : … … 56 57 PRINT *, ' add_pbl_tend, zzdt ', zzdt 57 58 PRINT *, ' add_pbl_tend, zzdq ', zzdq 58 CALL add_phys_tend(zdu, zdv, zzdt, zzdq, zdql, zdqi, paprs, text,abortphy )59 CALL add_phys_tend(zdu, zdv, zzdt, zzdq, zdql, zdqi, paprs, text,abortphy,flag_inhib_tend) 59 60 ELSE 60 CALL add_phys_tend(zdu, zdv, zdt, zdq, zdql, zdqi, paprs, text,abortphy )61 CALL add_phys_tend(zdu, zdv, zdt, zdq, zdql, zdqi, paprs, text,abortphy,flag_inhib_tend) 61 62 END IF 62 63 -
LMDZ5/branches/testing/libf/phylmd/add_phys_tend.F90
r2435 r2641 2 2 ! $Id$ 3 3 ! 4 SUBROUTINE add_phys_tend (zdu,zdv,zdt,zdq,zdql,zdqi,paprs,text,abortphy )4 SUBROUTINE add_phys_tend (zdu,zdv,zdt,zdq,zdql,zdqi,paprs,text,abortphy,flag_inhib_tend) 5 5 !====================================================================== 6 6 ! Ajoute les tendances des variables physiques aux variables … … 20 20 USE geometry_mod, ONLY: longitude_deg, latitude_deg 21 21 USE print_control_mod, ONLY: prt_level 22 USE cmp_seri_mod 22 23 IMPLICIT none 23 24 include "YOMCST.h" … … 31 32 CHARACTER*(*) text 32 33 INTEGER abortphy 34 INTEGER flag_inhib_tend ! if flag_inhib_tend != 0, tendencies are not added 33 35 34 36 ! Local : … … 55 57 ! Initialisations 56 58 57 IF (abortphy==1) RETURN ! on n ajoute pas les tendance si le modele 59 IF (prt_level >= 5) then 60 write (*,*) "In add_phys_tend, after ",text 61 call flush 62 end if 63 64 ! if flag_inhib_tend != 0, tendencies are not added 65 IF (flag_inhib_tend /= 0) then 66 ! If requiered, diagnostics are shown 67 IF (flag_inhib_tend > 0) then 68 ! print some diagnostics if xxx_seri have changed 69 call cmp_seri(flag_inhib_tend,text) 70 END IF 71 RETURN ! on n ajoute pas les tendance 72 END IF 73 74 IF (abortphy==1) RETURN ! on n ajoute pas les tendance si le modele 58 75 ! a deja plante. 59 76 … … 259 276 260 277 261 262 END 278 RETURN 279 END SUBROUTINE add_phys_tend -
LMDZ5/branches/testing/libf/phylmd/aeropt_2bands.F90
r2595 r2641 12 12 USE phys_local_var_mod, only: absvisaer 13 13 USE pres2lev_mod 14 15 14 16 15 ! Yves Balkanski le 12 avril 2006 … … 128 127 REAL :: zrho 129 128 REAL :: fac 130 REAL :: zdp1(klon,klev) 131 REAL, PARAMETER :: gravit = 9.80616 ! m2/s 129 REAL :: zdh(klon,klev) 132 130 INTEGER, ALLOCATABLE, DIMENSION(:) :: aerosol_name 133 131 INTEGER :: nb_aer 134 REAL, DIMENSION(klon,klev,naero_tot) :: mass_temp135 !RAF136 REAL, DIMENSION(klon,klev,naero_tot) :: mass_temp_pi137 132 138 133 ! … … 587 582 END IF ! firstcall 588 583 589 590 584 DO k=1, klev 591 585 DO i=1, klon 592 zrho=pplay(i,k)/t_seri(i,k)/RD ! kg/m3 593 mass_temp(i,k,:) = m_allaer(i,k,:) / zrho / 1.e+9 594 mass_temp_pi(i,k,:) = m_allaer_pi(i,k,:) / zrho / 1.e+9 595 zdp1(i,k)=pdel(i,k)/(gravit*delt) ! air mass auxiliary variable --> zdp1 [kg/(m^2 *s)] 586 zrho=pplay(i,k)/t_seri(i,k)/RD ! kg/m3 587 zdh(i,k)=pdel(i,k)/(RG*zrho) ! m 596 588 ENDDO 597 589 ENDDO … … 645 637 ! compute optical_thickness_at_gridpoint_per_species 646 638 647 648 649 639 !CDIR ON_ADB(fact_RH) 650 640 !CDIR SHORTLOOP … … 660 650 IF (rh(i,k).GT.85.) RH_num(i,k)=10 661 651 IF (rh(i,k).GT.90.) RH_num(i,k)=11 662 663 652 DELTA(i,k)=(rh(i,k)-RH_tab(RH_num(i,k)))*fact_RH(RH_num(i,k)) 664 653 ENDDO … … 718 707 used_aer(id)=.TRUE. 719 708 720 721 709 IF (soluble) THEN 722 710 … … 739 727 !CDIR ON_ADB(C1_ASSSM_b2) 740 728 !CDIR ON_ADB(C2_ASSSM_b2) 729 741 730 DO i=1, KLON 731 742 732 H=rh(i,k)/100 743 tmp_var=m ass_temp(i,k,spsol)*1000.*zdp1(i,k)*delt*fac744 tmp_var_pi=m ass_temp_pi(i,k,spsol)*1000.*zdp1(i,k)*delt*fac733 tmp_var=m_allaer(i,k,spsol)/1.e6*zdh(i,k)*fac 734 tmp_var_pi=m_allaer_pi(i,k,spsol)/1.e6*zdh(i,k)*fac 745 735 746 736 ! band 1 … … 784 774 !CDIR ON_ADB(C1_CSSSM_b2) 785 775 !CDIR ON_ADB(C2_CSSSM_b2) 776 786 777 DO i=1, KLON 778 787 779 H=rh(i,k)/100 788 tmp_var=m ass_temp(i,k,spsol)*1000.*zdp1(i,k)*delt*fac789 tmp_var_pi=m ass_temp_pi(i,k,spsol)*1000.*zdp1(i,k)*delt*fac780 tmp_var=m_allaer(i,k,spsol)/1.e6*zdh(i,k)*fac 781 tmp_var_pi=m_allaer_pi(i,k,spsol)/1.e6*zdh(i,k)*fac 790 782 ! band 1 791 783 tau_ae2b_int=A1_CSSSM_b1(k)+A2_CSSSM_b1(k)*H+A3_CSSSM_b1(k)/(H-1.05) … … 828 820 !CDIR ON_ADB(C1_SSSSM_b2) 829 821 !CDIR ON_ADB(C2_SSSSM_b2) 822 830 823 DO i=1, KLON 824 831 825 H=rh(i,k)/100 832 tmp_var=m ass_temp(i,k,spsol)*1000.*zdp1(i,k)*delt*fac833 tmp_var_pi=m ass_temp_pi(i,k,spsol)*1000.*zdp1(i,k)*delt*fac826 tmp_var=m_allaer(i,k,spsol)/1.e6*zdh(i,k)*fac 827 tmp_var_pi=m_allaer_pi(i,k,spsol)/1.e6*zdh(i,k)*fac 834 828 835 829 ! band 1 … … 864 858 DO k=1, KLEV 865 859 DO i=1, KLON 866 tmp_var=m ass_temp(i,k,spsol)*1000.*zdp1(i,k)*delt*fac867 tmp_var_pi=m ass_temp_pi(i,k,spsol)*1000.*zdp1(i,k)*delt*fac860 tmp_var=m_allaer(i,k,spsol)/1.e6*zdh(i,k)*fac 861 tmp_var_pi=m_allaer_pi(i,k,spsol)/1.e6*zdh(i,k)*fac 868 862 !CDIR UNROLL=nbands 869 863 DO inu=1,nbands … … 899 893 DO k=1, KLEV 900 894 DO i=1, KLON 901 tmp_var=m ass_temp(i,k,naero_soluble+ spinsol)*1000.*zdp1(i,k)*delt*fac902 tmp_var_pi=m ass_temp_pi(i,k,naero_soluble+spinsol)*1000.*zdp1(i,k)*delt*fac895 tmp_var=m_allaer(i,k,naero_soluble+spinsol)/1.e6*zdh(i,k)*fac 896 tmp_var_pi=m_allaer_pi(i,k,naero_soluble+spinsol)/1.e6*zdh(i,k)*fac 903 897 !CDIR UNROLL=nbands 904 898 DO inu=1,nbands … … 931 925 932 926 DO inu=1, nbands 933 DO mrfspecies=1,naero_grp 927 928 !!DO mrfspecies=1,naero_grp 929 DO mrfspecies=2,3 !--only deal with total and natural aerosols 930 934 931 IF (mrfspecies .EQ. 2) THEN ! = total aerosol AER 932 935 933 DO k=1, KLEV 936 934 DO i=1, KLON … … 1026 1024 1027 1025 ELSEIF (mrfspecies .EQ. 4) THEN ! = BC 1026 1028 1027 DO k=1, KLEV 1029 1028 DO i=1, KLON … … 1128 1127 ENDDO 1129 1128 1130 inu=1 ! visible wav aband1129 inu=1 ! visible waveband 1131 1130 mrfspecies=2 ! total aerosol AER 1132 1131 DO i=1, KLON -
LMDZ5/branches/testing/libf/phylmd/aeropt_5wv.F90
r2594 r2641 13 13 USE phys_local_var_mod, only: od550aer,od865aer,ec550aer,od550lt1aer 14 14 USE pres2lev_mod 15 16 15 17 16 ! … … 66 65 ! Output arguments: 67 66 ! 68 REAL, DIMENSION(klon), INTENT(out) :: ai ! POLDER aerosol index 67 REAL, DIMENSION(klon), INTENT(out) :: ai ! POLDER aerosol index 69 68 REAL, DIMENSION(klon,nwave,naero_tot), INTENT(out) :: tausum 70 69 REAL, DIMENSION(klon,klev,nwave,naero_tot), INTENT(out) :: tau 71 72 73 70 ! 74 71 ! Local … … 134 131 REAL :: cg_ae5wv_int ! Intermediate asymmetry parameter aerosol 135 132 REAL, PARAMETER :: RH_MAX=95. 136 REAL :: taue670( KLON) ! epaisseur optique aerosol absorption 550 nm137 REAL :: taue865( KLON) ! epaisseur optique aerosol extinction 865 nm133 REAL :: taue670(klon) ! epaisseur optique aerosol absorption 550 nm 134 REAL :: taue865(klon) ! epaisseur optique aerosol extinction 865 nm 138 135 REAL :: fac 139 REAL :: zdp1(klon,klev)140 REAL, PARAMETER :: gravit = 9.80616 ! m2/s141 136 INTEGER, ALLOCATABLE, DIMENSION(:) :: aerosol_name 142 137 INTEGER :: nb_aer 143 138 144 REAL :: tau3d( KLON,KLEV), piz3d(KLON,KLEV), cg3d(KLON,KLEV)145 REAL :: abs3d( KLON,KLEV) ! epaisseur optique d'absorption146 REAL :: dh( KLON,KLEV)139 REAL :: tau3d(klon,klev), piz3d(klon,klev), cg3d(klon,klev) 140 REAL :: abs3d(klon,klev) ! epaisseur optique d'absorption 141 REAL :: dh(klon,klev) 147 142 148 143 REAL :: alpha_aers_5wv(nbre_RH,las,naero_soluble) ! ext. coeff. Soluble comp. units *** m2/g … … 155 150 ! 1- BC soluble; 2- POM soluble; 3- SO4 acc.; 4- SO4 coarse; 5 seasalt super-C; 6 seasalt coarse; 7 seasalt acc. 156 151 REAL :: piz_aeri_5wv(las,naero_insoluble) ! Insoluble comp. 1- Dust: 2- BC; 3- POM 157 158 REAL, DIMENSION(klon,klev,naero_tot) :: mass_temp159 160 152 ! 161 153 ! Proprietes optiques 162 154 ! 163 REAL :: radry = 287.054164 REAL :: tau_tmp ! dry air mass constant165 155 REAL :: fact_RH(nbre_RH) 166 156 LOGICAL :: used_tau(naero_spc) … … 303 293 !********************************************************************* 304 294 ! 305 !306 !307 !308 !309 295 ! 310 296 ! From here on we look at the optical parameters at 5 wavelengths: … … 478 464 0.737,0.750,0.765,0.775,0.787,0.803/ 479 465 ! 480 481 466 DATA cg_aeri_5wv/& 482 467 ! dust insoluble … … 616 601 END IF ! firstcall 617 602 618 619 603 ! Initialisations 620 ai(:) =0.621 tausum(:,:,:) 622 604 tau(:,:,:,:) =0. 605 tausum(:,:,:)= 0. 606 ai(:)=0.0 623 607 624 608 DO k=1, klev 625 609 DO i=1, klon 626 zrho=pplay(i,k)/t_seri(i,k)/RD ! kg/m3 627 dh(i,k)=pdel(i,k)/(gravit*zrho) 628 mass_temp(i,k,:) = m_allaer(i,k,:) / zrho / 1.e+9 629 zdp1(i,k)=pdel(i,k)/(gravit*delt) ! air mass auxiliary variable --> zdp1 [kg/(m^2 *s)] 630 610 zrho=pplay(i,k)/t_seri(i,k)/RD ! kg/m3 611 dh(i,k)=pdel(i,k)/(RG*zrho) ! m 631 612 ENDDO 632 613 ENDDO 633 634 614 635 615 IF (flag_aerosol .EQ. 1) THEN … … 680 660 ! compute optical_thickness_at_gridpoint_per_species 681 661 682 683 662 ! 684 663 ! Calculations that need to be done since we are not in the subroutines INCA 685 664 ! 686 665 687 !CDIR ON_ADB(RH_tab)688 !CDIR ON_ADB(fact_RH)689 !CDIR NOVECTOR690 666 DO n=1,nbre_RH-1 691 667 fact_RH(n)=1./(RH_tab(n+1)-RH_tab(n)) 692 668 ENDDO 693 669 694 DO k=1, KLEV 695 !CDIR ON_ADB(RH_tab) 696 !CDIR ON_ADB(fact_RH) 697 DO i=1, KLON 670 DO k=1, klev 671 DO i=1, klon 698 672 rh(i,k)=MIN(RHcl(i,k)*100.,RH_MAX) 699 673 RH_num(i,k) = INT( rh(i,k)/10. + 1.) 674 !--test olivier pour pas de reindicage 675 ! RH_num(i,k) =1 700 676 IF (rh(i,k).GT.85.) RH_num(i,k)=10 701 677 IF (rh(i,k).GT.90.) RH_num(i,k)=11 … … 704 680 ENDDO 705 681 706 !CDIR SHORTLOOP707 682 used_tau(:)=.FALSE. 708 683 … … 765 740 DO la=1,las 766 741 742 !--only 550 and 865 nm are used 743 IF (la.NE.la550.AND.la.NE.la865) CYCLE 744 767 745 IF (soluble) THEN 768 746 769 IF ((la.EQ.2).AND.(spss.NE.0)) THEN !la=2 corresponds to 550 nm747 IF ((la.EQ.2).AND.(spss.NE.0)) THEN !la=2 corresponds to 550 nm 770 748 IF (spss.EQ.1) THEN !accumulation mode 771 DO k=1, KLEV 772 !CDIR ON_ADB(A1_ASSSM) 773 !CDIR ON_ADB(A2_ASSSM) 774 !CDIR ON_ADB(A3_ASSSM) 775 DO i=1, KLON 776 H=rh(i,k)/100 749 DO k=1, klev 750 DO i=1, klon 751 H=rh(i,k)/100. 777 752 tau_ae5wv_int=A1_ASSSM(k)+A2_ASSSM(k)*H+A3_ASSSM(k)/(H-1.05) 778 tau(i,k,la,aerindex) = mass_temp(i,k,aerindex)*1000.*zdp1(i,k) & 779 *tau_ae5wv_int*delt*fac 753 tau(i,k,la,aerindex) = m_allaer(i,k,aerindex)/1.e6*dh(i,k)*tau_ae5wv_int*fac 780 754 tausum(i,la,aerindex)=tausum(i,la,aerindex)+tau(i,k,la,aerindex) 781 755 ENDDO … … 784 758 785 759 IF (spss.EQ.2) THEN !coarse mode 786 DO k=1, KLEV 787 !CDIR ON_ADB(A1_CSSSM) 788 !CDIR ON_ADB(A2_CSSSM) 789 !CDIR ON_ADB(A3_CSSSM) 790 DO i=1, KLON 791 H=rh(i,k)/100 760 DO k=1, klev 761 DO i=1, klon 762 H=rh(i,k)/100. 792 763 tau_ae5wv_int=A1_CSSSM(k)+A2_CSSSM(k)*H+A3_CSSSM(k)/(H-1.05) 793 tau(i,k,la,aerindex) = mass_temp(i,k,aerindex)*1000.*zdp1(i,k) & 794 *tau_ae5wv_int*delt*fac 795 tausum(i,la,aerindex) = tausum(i,la,aerindex)+tau(i,k,la,aerindex) 796 ENDDO 797 ENDDO 798 ENDIF 799 800 IF (spss.EQ.3) THEN !super coarse mode 801 DO k=1, KLEV 802 !CDIR ON_ADB(A1_SSSSM) 803 !CDIR ON_ADB(A2_SSSSM) 804 !CDIR ON_ADB(A3_SSSSM) 805 DO i=1, KLON 806 H=rh(i,k)/100 807 tau_ae5wv_int=A1_SSSSM(k)+A2_SSSSM(k)*H+A3_SSSSM(k)/(H-1.05) 808 tau(i,k,la,aerindex) = mass_temp(i,k,aerindex)*1000.*zdp1(i,k) & 809 *tau_ae5wv_int*delt*fac 764 tau(i,k,la,aerindex) = m_allaer(i,k,aerindex)/1.e6*dh(i,k)*tau_ae5wv_int*fac 810 765 tausum(i,la,aerindex)=tausum(i,la,aerindex)+tau(i,k,la,aerindex) 811 766 ENDDO … … 813 768 ENDIF 814 769 770 IF (spss.EQ.3) THEN !super coarse mode 771 DO k=1, klev 772 DO i=1, klon 773 H=rh(i,k)/100. 774 tau_ae5wv_int=A1_SSSSM(k)+A2_SSSSM(k)*H+A3_SSSSM(k)/(H-1.05) 775 tau(i,k,la,aerindex) = m_allaer(i,k,aerindex)/1.e6*dh(i,k)*tau_ae5wv_int*fac 776 tausum(i,la,aerindex)=tausum(i,la,aerindex)+tau(i,k,la,aerindex) 777 ENDDO 778 ENDDO 779 ENDIF 780 815 781 ELSE 816 DO k=1, KLEV 817 !CDIR ON_ADB(alpha_aers_5wv) 818 DO i=1, KLON 782 DO k=1, klev 783 DO i=1, klon 819 784 tau_ae5wv_int = alpha_aers_5wv(RH_num(i,k),la,spsol)+DELTA(i,k)* & 820 785 (alpha_aers_5wv(RH_num(i,k)+1,la,spsol) - & 821 786 alpha_aers_5wv(RH_num(i,k),la,spsol)) 822 823 tau(i,k,la,aerindex) = mass_temp(i,k,aerindex)*1000.*zdp1(i,k) & 824 *tau_ae5wv_int*delt*fac 787 tau(i,k,la,aerindex) = m_allaer(i,k,aerindex)/1.e6*dh(i,k)*tau_ae5wv_int*fac 825 788 tausum(i,la,aerindex)=tausum(i,la,aerindex)+tau(i,k,la,aerindex) 826 789 ENDDO … … 829 792 830 793 ELSE ! For insoluble aerosol 831 DO k=1, KLEV 832 !CDIR ON_ADB(alpha_aeri_5wv) 833 DO i=1, KLON794 795 DO k=1, klev 796 DO i=1, klon 834 797 tau_ae5wv_int = alpha_aeri_5wv(la,spinsol) 835 tau(i,k,la,aerindex) = mass_temp(i,k,aerindex)*1000.*zdp1(i,k)* & 836 tau_ae5wv_int*delt*fac 837 tausum(i,la,aerindex)= tausum(i,la,aerindex)+tau(i,k,la,aerindex) 798 tau(i,k,la,aerindex) = m_allaer(i,k,aerindex)/1.e6*dh(i,k)*tau_ae5wv_int*fac 799 tausum(i,la,aerindex)=tausum(i,la,aerindex)+tau(i,k,la,aerindex) 838 800 ENDDO 839 801 ENDDO 802 840 803 ENDIF 804 841 805 ENDDO ! boucle sur les longueurs d'onde 842 806 ENDDO ! Boucle sur les masses de traceurs … … 845 809 IF (.NOT.used_tau(m)) tau(:,:,:,m)=0. 846 810 ENDDO 847 ! 848 ! 849 ! taue670(:) = SUM(tausum(:,la670,:),dim=2) 850 ! taue865(:) = SUM(tausum(:,la865,:),dim=2) 851 ! 852 ! DO i=1, klon 853 ! ai(i)=-LOG(MAX(taue670(i),0.0001)/ & 854 ! MAX(taue865(i),0.0001))/LOG(670./865.) 855 ! ENDDO 856 857 DO i=1, klon 858 od550aer(i)=0. 859 DO m=1,naero_spc 860 od550aer(i)=od550aer(i)+tausum(i,2,m) 861 ENDDO 862 ENDDO 863 864 DO i=1, klon 865 od865aer(i)=0. 866 DO m=1,naero_spc 867 od865aer(i)=od865aer(i)+tausum(i,5,m) 868 ENDDO 869 ENDDO 870 871 DO i=1, klon 872 DO k=1, KLEV 873 ec550aer(i,k)=0. 874 DO m=1,naero_spc 875 ec550aer(i,k)=ec550aer(i,k)+tau(i,k,2,m)/dh(i,k) 876 ENDDO 877 ENDDO 878 ENDDO 811 812 !--AOD calculations for diagnostics 813 od550aer(:)=SUM(tausum(:,la550,:),dim=2) 814 od865aer(:)=SUM(tausum(:,la865,:),dim=2) 815 816 !--extinction coefficient for diagnostic 817 ec550aer(:,:)=SUM(tau(:,:,la550,:),dim=3)/dh(:,:) 879 818 880 od550lt1aer(:)=tausum(:,2,id_ASSO4M_phy)+tausum(:,2,id_ASBCM_phy)+tausum(:,2,id_AIBCM_phy)+ & 881 tausum(:,2,id_ASPOMM_phy)+tausum(:,2,id_AIPOMM_phy)+tausum(:,2,id_ASSSM_phy)+ & 882 0.03*tausum(:,2,id_CSSSM_phy)+0.4*tausum(:,2,id_CIDUSTM_phy) 819 !--acc mode AOD calculation for diagnostic 820 od550lt1aer(:)=tausum(:,la550,id_ASSO4M_phy)+tausum(:,la550,id_ASBCM_phy)+tausum(:,la550,id_AIBCM_phy)+ & 821 tausum(:,la550,id_ASPOMM_phy)+tausum(:,la550,id_AIPOMM_phy)+tausum(:,la550,id_ASSSM_phy)+ & 822 0.03*tausum(:,la550,id_CSSSM_phy)+0.4*tausum(:,la550,id_CIDUSTM_phy) 883 823 884 824 DEALLOCATE(aerosol_name) -
LMDZ5/branches/testing/libf/phylmd/calwake.F90
r2408 r2641 2 2 ! $Id$ 3 3 4 SUBROUTINE calwake(paprs, pplay, dtime, t, q, omgb, dt_dwn, dq_dwn, m_dwn, & 5 m_up, dt_a, dq_a, sigd, wdt_pbl, wdq_pbl, udt_pbl, udq_pbl, wake_deltat, & 6 wake_deltaq, wake_dth, wake_h, wake_s, wake_dens, wake_pe, wake_fip, & 7 wake_gfl, dt_wake, dq_wake, wake_k, undi_t, undi_q, wake_omgbdth, & 8 wake_dp_omgb, wake_dtke, wake_dqke, wake_dtpbl, wake_dqpbl, wake_omg, & 9 wake_dp_deltomg, wake_spread, wake_cstar, wake_d_deltat_gw, wake_ddeltat, & 10 wake_ddeltaq) 4 SUBROUTINE calwake(iflag_wake_tend, paprs, pplay, dtime, & 5 t, q, omgb, & 6 dt_dwn, dq_dwn, m_dwn, m_up, dt_a, dq_a, & 7 sigd, & 8 wake_deltat, wake_deltaq, wake_s, wake_dens, & 9 wake_dth, wake_h, & 10 wake_pe, wake_fip, wake_gfl, & 11 dt_wake, dq_wake, wake_k, t_x, q_x, wake_omgbdth, & 12 wake_dp_omgb, & 13 wake_dtke, wake_dqke, & 14 wake_omg, wake_dp_deltomg, & 15 wake_spread, wake_cstar, wake_d_deltat_gw, & 16 wake_ddeltat, wake_ddeltaq, wake_ds, wake_ddens) 11 17 ! ************************************************************** 12 18 ! * … … 26 32 ! Arguments 27 33 ! ---------- 28 29 INTEGER i, l, ktopw(klon) 30 REAL dtime 31 32 REAL paprs(klon, klev+1), pplay(klon, klev) 33 REAL t(klon, klev), q(klon, klev), omgb(klon, klev) 34 REAL dt_dwn(klon, klev), dq_dwn(klon, klev), m_dwn(klon, klev) 35 REAL m_up(klon, klev) 36 REAL dt_a(klon, klev), dq_a(klon, klev) 37 REAL wdt_pbl(klon, klev), wdq_pbl(klon, klev) 38 REAL udt_pbl(klon, klev), udq_pbl(klon, klev) 39 REAL wake_deltat(klon, klev), wake_deltaq(klon, klev) 40 REAL dt_wake(klon, klev), dq_wake(klon, klev) 41 REAL wake_d_deltat_gw(klon, klev) 42 REAL wake_h(klon), wake_s(klon) 43 REAL wake_dth(klon, klev) 44 REAL wake_pe(klon), wake_fip(klon), wake_gfl(klon) 45 REAL undi_t(klon, klev), undi_q(klon, klev) 46 REAL wake_omgbdth(klon, klev), wake_dp_omgb(klon, klev) 47 REAL wake_dtke(klon, klev), wake_dqke(klon, klev) 48 REAL wake_dtpbl(klon, klev), wake_dqpbl(klon, klev) 49 REAL wake_omg(klon, klev), wake_dp_deltomg(klon, klev) 50 REAL wake_spread(klon, klev), wake_cstar(klon) 51 REAL wake_ddeltat(klon, klev), wake_ddeltaq(klon, klev) 52 REAL d_deltatw(klon, klev), d_deltaqw(klon, klev) 53 INTEGER wake_k(klon) 54 REAL sigd(klon) 55 REAL wake_dens(klon) 34 ! Input 35 ! ---- 36 INTEGER, INTENT (IN) :: iflag_wake_tend 37 REAL, INTENT (IN) :: dtime 38 REAL, DIMENSION(klon, klev), INTENT (IN) :: pplay 39 REAL, DIMENSION(klon, klev+1), INTENT (IN) :: paprs 40 REAL, DIMENSION(klon, klev), INTENT (IN) :: t, q, omgb 41 REAL, DIMENSION(klon, klev), INTENT (IN) :: dt_dwn, dq_dwn 42 REAL, DIMENSION(klon, klev), INTENT (IN) :: m_up, m_dwn 43 REAL, DIMENSION(klon, klev), INTENT (IN) :: dt_a, dq_a 44 REAL, DIMENSION(klon), INTENT (IN) :: sigd 45 ! Input/Output 46 ! ------------ 47 REAL, DIMENSION(klon, klev), INTENT (INOUT) :: wake_deltat, wake_deltaq 48 REAL, DIMENSION(klon), INTENT (INOUT) :: wake_s 49 REAL, DIMENSION(klon), INTENT (INOUT) :: wake_dens 50 ! Output 51 ! ------ 52 REAL, DIMENSION(klon, klev), INTENT (OUT) :: dt_wake, dq_wake 53 INTEGER, DIMENSION(klon), INTENT (OUT) :: wake_k 54 REAL, DIMENSION(klon, klev), INTENT (OUT) :: wake_d_deltat_gw 55 REAL, DIMENSION(klon), INTENT (OUT) :: wake_h 56 REAL, DIMENSION(klon, klev), INTENT (OUT) :: wake_dth 57 REAL, DIMENSION(klon), INTENT (OUT) :: wake_pe, wake_fip, wake_gfl 58 REAL, DIMENSION(klon, klev), INTENT (OUT) :: t_x, q_x 59 REAL, DIMENSION(klon, klev), INTENT (OUT) :: wake_omgbdth, wake_dp_omgb 60 REAL, DIMENSION(klon, klev), INTENT (OUT) :: wake_dtke, wake_dqke 61 REAL, DIMENSION(klon, klev), INTENT (OUT) :: wake_omg, wake_dp_deltomg 62 REAL, DIMENSION(klon, klev), INTENT (OUT) :: wake_spread 63 REAL, DIMENSION(klon), INTENT (OUT) :: wake_cstar 64 REAL, DIMENSION(klon, klev), INTENT (OUT) :: wake_ddeltat, wake_ddeltaq 65 REAL, DIMENSION(klon), INTENT (OUT) :: wake_ds, wake_ddens 66 56 67 57 68 ! Variable internes 58 69 ! ----------------- 59 60 REAL aire 61 REAL p(klon, klev), ph(klon, klev+1), pi(klon, klev) 62 REAL te(klon, klev), qe(klon, klev), omgbe(klon, klev+1) 63 REAL dtdwn(klon, klev), dqdwn(klon, klev) 64 REAL dta(klon, klev), dqa(klon, klev) 65 REAL wdtpbl(klon, klev), wdqpbl(klon, klev) 66 REAL udtpbl(klon, klev), udqpbl(klon, klev) 67 REAL amdwn(klon, klev), amup(klon, klev) 68 REAL dtw(klon, klev), dqw(klon, klev), dth(klon, klev) 69 REAL d_deltat_gw(klon, klev) 70 REAL dtls(klon, klev), dqls(klon, klev) 71 REAL tu(klon, klev), qu(klon, klev) 72 REAL hw(klon), sigmaw(klon), wape(klon), fip(klon), gfl(klon) 73 REAL omgbdth(klon, klev+1), dp_omgb(klon, klev) 74 REAL dtke(klon, klev), dqke(klon, klev) 75 REAL dtpbl(klon, klev), dqpbl(klon, klev) 76 REAL omg(klon, klev+1), dp_deltomg(klon, klev), spread(klon, klev) 77 REAL cstar(klon) 78 REAL sigd0(klon), wdens(klon) 79 80 REAL rdcp 70 INTEGER :: i, l 71 REAL :: aire 72 REAL, DIMENSION(klon, klev) :: p, pi 73 REAL, DIMENSION(klon, klev+1) :: ph, omgbe 74 REAL, DIMENSION(klon, klev) :: te, qe 75 REAL, DIMENSION(klon, klev) :: dtdwn, dqdwn 76 REAL, DIMENSION(klon, klev) :: dta, dqa 77 REAL, DIMENSION(klon, klev) :: amdwn, amup 78 REAL, DIMENSION(klon, klev) :: dtw, dqw, dth 79 REAL, DIMENSION(klon, klev) :: dtls, dqls 80 REAL, DIMENSION(klon, klev) :: tx, qx 81 REAL, DIMENSION(klon) :: hw, wape, fip, gfl 82 REAL, DIMENSION(klon) :: sigmaw, wdens 83 REAL, DIMENSION(klon, klev+1) :: omgbdth 84 REAL, DIMENSION(klon, klev) :: dp_omgb 85 REAL, DIMENSION(klon, klev) :: dtke, dqke 86 REAL, DIMENSION(klon, klev+1) :: omg 87 REAL, DIMENSION(klon, klev) :: dp_deltomg, spread 88 REAL, DIMENSION(klon) :: cstar 89 REAL, DIMENSION(klon) :: sigd0 90 INTEGER, DIMENSION(klon) :: ktopw 91 REAL, DIMENSION(klon, klev) :: d_deltat_gw 92 REAL, DIMENSION(klon, klev) :: d_deltatw, d_deltaqw 93 REAL, DIMENSION(klon) :: d_sigmaw, d_wdens 94 95 REAL :: rdcp 96 81 97 82 98 ! print *, '-> calwake, wake_s ', wake_s(1) … … 104 120 dta(i, l) = dt_a(i, l) 105 121 dqa(i, l) = dq_a(i, l) 106 wdtpbl(i, l) = wdt_pbl(i, l)107 wdqpbl(i, l) = wdq_pbl(i, l)108 udtpbl(i, l) = udt_pbl(i, l)109 udqpbl(i, l) = udq_pbl(i, l)110 122 END DO 111 123 END DO … … 125 137 END DO 126 138 139 DO i = 1, klon 140 hw(i) = wake_h(i) 141 END DO 142 ! 143 ! Make a copy of state variables 127 144 DO l = 1, klev 128 145 DO i = 1, klon … … 132 149 END DO 133 150 134 DO l = 1, klev 135 DO i = 1, klon 136 dtls(i, l) = dt_wake(i, l) 137 dqls(i, l) = dq_wake(i, l) 138 END DO 139 END DO 140 141 DO i = 1, klon 142 hw(i) = wake_h(i) 151 DO i = 1, klon 143 152 sigmaw(i) = wake_s(i) 153 END DO 154 155 DO i = 1, klon 156 wdens(i) = wake_dens(i) 144 157 END DO 145 158 … … 166 179 END DO 167 180 168 CALL wake(p, ph, pi, dtime, sigd0, te, qe, omgbe, dtdwn, dqdwn, amdwn, & 169 amup, dta, dqa, wdtpbl, wdqpbl, udtpbl, udqpbl, dtw, dqw, dth, hw, & 170 sigmaw, wape, fip, gfl, dtls, dqls, ktopw, omgbdth, dp_omgb, wdens, tu, & 171 qu, dtke, dqke, dtpbl, dqpbl, omg, dp_deltomg, spread, cstar, & 172 d_deltat_gw, d_deltatw, d_deltaqw) 173 181 CALL wake(p, ph, pi, dtime, & 182 te, qe, omgbe, & 183 dtdwn, dqdwn, amdwn, amup, dta, dqa, & 184 sigd0, & 185 dtw, dqw, sigmaw, wdens, & ! state variables 186 dth, hw, wape, fip, gfl, & 187 dtls, dqls, ktopw, omgbdth, dp_omgb, tx, qx, & 188 dtke, dqke, omg, dp_deltomg, spread, cstar, & 189 d_deltat_gw, & 190 d_deltatw, d_deltaqw, d_sigmaw, d_wdens) ! tendencies 191 192 ! 174 193 DO l = 1, klev 175 194 DO i = 1, klon 176 195 IF (ktopw(i)>0) THEN 177 wake_deltat(i, l) = dtw(i, l)178 wake_deltaq(i, l) = dqw(i, l)179 196 wake_d_deltat_gw(i, l) = d_deltat_gw(i, l) 180 197 wake_omgbdth(i, l) = omgbdth(i, l) … … 182 199 wake_dtke(i, l) = dtke(i, l) 183 200 wake_dqke(i, l) = dqke(i, l) 184 wake_dtpbl(i, l) = dtpbl(i, l)185 wake_dqpbl(i, l) = dqpbl(i, l)186 201 wake_omg(i, l) = omg(i, l) 187 202 wake_dp_deltomg(i, l) = dp_deltomg(i, l) 188 203 wake_spread(i, l) = spread(i, l) 189 204 wake_dth(i, l) = dth(i, l) 190 dt_wake(i, l) = dtls(i, l) 191 dq_wake(i, l) = dqls(i, l) 192 undi_t(i, l) = tu(i, l) 193 undi_q(i, l) = qu(i, l) 194 wake_ddeltat(i, l) = d_deltatw(i, l) 195 wake_ddeltaq(i, l) = d_deltaqw(i, l) 205 dt_wake(i, l) = dtls(i, l)*dtime ! derivative -> tendency 206 dq_wake(i, l) = dqls(i, l)*dtime ! derivative -> tendency 207 t_x(i, l) = tx(i, l) 208 q_x(i, l) = qx(i, l) 196 209 ELSE 197 wake_deltat(i, l) = 0.198 wake_deltaq(i, l) = 0.199 210 wake_d_deltat_gw(i, l) = 0. 200 211 wake_omgbdth(i, l) = 0. … … 202 213 wake_dtke(i, l) = 0. 203 214 wake_dqke(i, l) = 0. 204 wake_dtpbl(i, l) = 0.205 wake_dqpbl(i, l) = 0.206 215 wake_omg(i, l) = 0. 207 216 wake_dp_deltomg(i, l) = 0. … … 210 219 dt_wake(i, l) = 0. 211 220 dq_wake(i, l) = 0. 212 undi_t(i, l) = te(i, l) 213 undi_q(i, l) = qe(i, l) 214 wake_ddeltat(i, l) = 0. 215 wake_ddeltaq(i, l) = 0. 221 t_x(i, l) = te(i, l) 222 q_x(i, l) = qe(i, l) 216 223 END IF 217 224 END DO … … 220 227 DO i = 1, klon 221 228 wake_h(i) = hw(i) 222 wake_s(i) = sigmaw(i)223 229 wake_pe(i) = wape(i) 224 230 wake_fip(i) = fip(i) … … 226 232 wake_k(i) = ktopw(i) 227 233 wake_cstar(i) = cstar(i) 228 wake_dens(i) = wdens(i) 229 END DO 234 END DO 235 236 ! Tendencies of state variables 237 DO l = 1, klev 238 DO i = 1, klon 239 IF (ktopw(i)>0) THEN 240 wake_ddeltat(i, l) = d_deltatw(i, l)*dtime 241 wake_ddeltaq(i, l) = d_deltaqw(i, l)*dtime 242 ELSE 243 wake_ddeltat(i, l) = -wake_deltat(i, l) 244 wake_ddeltaq(i, l) = -wake_deltaq(i, l) 245 END IF 246 END DO 247 END DO 248 DO i = 1, klon 249 IF (ktopw(i)>0) THEN 250 wake_ds(i) = d_sigmaw(i)*dtime 251 wake_ddens(i) = d_wdens(i)*dtime 252 ELSE 253 wake_ds(i) = -wake_s(i) 254 wake_ddens(i)= -wake_dens(i) 255 END IF 256 END DO 257 258 !jyg< 259 IF (iflag_wake_tend .EQ. 0) THEN 260 ! Update State variables 261 DO l = 1, klev 262 DO i = 1, klon 263 IF (ktopw(i)>0) THEN 264 wake_deltat(i, l) = dtw(i, l) 265 wake_deltaq(i, l) = dqw(i, l) 266 ELSE 267 wake_deltat(i, l) = 0. 268 wake_deltaq(i, l) = 0. 269 END IF 270 END DO 271 END DO 272 DO i = 1, klon 273 wake_s(i) = sigmaw(i) 274 wake_dens(i) = wdens(i) 275 END DO 276 ENDIF 277 !>jyg 230 278 231 279 RETURN 232 280 END SUBROUTINE calwake 281 -
LMDZ5/branches/testing/libf/phylmd/cv3_routines.F90
r2594 r2641 238 238 ! gz = phi at the full levels (same as p). 239 239 240 DO i = 1, len 241 gz(i, 1) = 0.0 242 END DO 240 !! DO i = 1, len !jyg 241 !! gz(i, 1) = 0.0 !jyg 242 !! END DO !jyg 243 gz(:,:) = 0. !jyg: initialization of the whole array 243 244 ! ori do 140 k=2,nlp 244 245 DO k = 2, nl ! convect3 … … 409 410 IF (ok_new_feed) THEN 410 411 IF (iter==niter) THEN 411 DO k = minorig, nl 412 DO i = 1,len !jyg 413 pfeedmin(i) = ph(i,minorig+1) !jyg 414 ENDDO !jyg 415 DO k = minorig+1, nl !jyg 416 !! DO k = minorig, nl !jyg 412 417 DO i = 1, len 413 418 IF (ph(i,k)>=plclfeed(i)) pfeedmin(i) = ph(i, k) … … 1055 1060 p, ph, h, tv, lv, lf, pbase, buoybase, plcl, & 1056 1061 inb, tp, tvp, clw, hp, ep, sigp, buoy, frac) 1062 USE print_control_mod, ONLY: prt_level 1057 1063 IMPLICIT NONE 1058 1064 … … 1113 1119 REAL fracg 1114 1120 REAL deltap 1121 1122 IF (prt_level >= 10) THEN 1123 print *,'cv3_undilute2.0. t(1,k), q(1,k), qs(1,k) ', & 1124 (k, t(1,k), q(1,k), qs(1,k), k = 1,nl) 1125 ENDIF 1115 1126 1116 1127 ! ===================================================================== … … 1299 1310 END DO 1300 1311 END DO 1312 1313 IF (prt_level >= 10) THEN 1314 print *,'cv3_undilute2.1. tp(1,k), tvp(1,k) ', & 1315 (k, tp(1,k), tvp(1,k), k = 1,nl) 1316 ENDIF 1301 1317 1302 1318 ! ===================================================================== -
LMDZ5/branches/testing/libf/phylmd/cva_driver.F90
r2488 r2641 144 144 ! ep1 Real Output 145 145 ! sigij1 Real Output used in tracer transport (cvltr) 146 ! clw1 Real Output condensed water content of the adiabatic updraught 146 147 ! elij1 Real Output 147 148 ! wghti1 Real Output final weight of the feeding layers, … … 254 255 REAL, DIMENSION (len, nd), INTENT (OUT) :: evap1, ep1 255 256 REAL, DIMENSION (len, nd, nd), INTENT (OUT) :: sigij1, elij1 257 REAL, DIMENSION (len, nd), INTENT (OUT) :: clw1 256 258 !JYG,RL 257 259 REAL, DIMENSION (len, nd), INTENT (OUT) :: wghti1 ! final weight of the feeding layers … … 424 426 REAL h1(klon, klev), h1_wake(klon, klev) 425 427 REAL tp1(klon, klev) 426 REAL clw1(klon, klev)427 428 REAL th1(klon, klev), th1_wake(klon, klev) 428 429 … … 650 651 sigij1(:, :, :) = 0. 651 652 elij1(:, :, :) = 0. 653 clw1(:,:) = 0. 652 654 wghti1(:,:) = 0. 653 655 phi21(:, :, :) = 0. … … 673 675 END IF 674 676 ! print*,'t1, q1 ',t1,q1 677 if (prt_level >= 9) & 678 PRINT *, 'cva_driver -> cv3_prelim' 675 679 CALL cv3_prelim(len, nd, ndp1, t1, q1, p1, ph1, & ! nd->na 676 680 lv1, lf1, cpn1, tv1, gz1, h1, hm1, th1) 677 681 678 682 683 if (prt_level >= 9) & 684 PRINT *, 'cva_driver -> cv3_prelim' 679 685 CALL cv3_prelim(len, nd, ndp1, t1_wake, q1_wake, p1, ph1, & ! nd->na 680 686 lv1_wake, lf1_wake, cpn1_wake, tv1_wake, gz1_wake, & … … 685 691 IF (iflag_con==4) THEN 686 692 PRINT *, 'Emanuel version 4 ' 693 if (prt_level >= 9) & 694 PRINT *, 'cva_driver -> cv_prelim' 687 695 CALL cv_prelim(len, nd, ndp1, t1, q1, p1, ph1, & 688 696 lv1, cpn1, tv1, gz1, h1, hm1) … … 728 736 ! write(*,'(64i1)') iflag1(2:klon-1) 729 737 738 if (prt_level >= 9) & 739 PRINT *, 'cva_driver -> cv3_feed' 730 740 CALL cv3_feed(len, nd, ok_conserv_q, & ! nd->na 731 741 t1, q1, u1, v1, p1, ph1, hm1, gz1, & … … 740 750 741 751 IF (iflag_con==4) THEN 752 if (prt_level >= 9) & 753 PRINT *, 'cva_driver -> cv_feed' 742 754 CALL cv_feed(len, nd, t1, q1, qs1, p1, hm1, gz1, & 743 755 nk1, icb1, icbmax, iflag1, tnk1, qnk1, gznk1, plcl1) … … 755 767 IF (iflag_con==3) THEN 756 768 769 if (prt_level >= 9) & 770 PRINT *, 'cva_driver -> cv3_undilute1' 757 771 CALL cv3_undilute1(len, nd, t1, qs1, gz1, plcl1, p1, icb1, tnk1, qnk1, & ! nd->na 758 772 gznk1, tp1, tvp1, clw1, icbs1) … … 761 775 762 776 IF (iflag_con==4) THEN 777 if (prt_level >= 9) & 778 PRINT *, 'cva_driver -> cv_undilute1' 763 779 CALL cv_undilute1(len, nd, t1, q1, qs1, gz1, p1, nk1, icb1, icbmax, & 764 780 tp1, tvp1, clw1) … … 773 789 IF (iflag_con==3) THEN 774 790 791 if (prt_level >= 9) & 792 PRINT *, 'cva_driver -> cv3_trigger' 775 793 CALL cv3_trigger(len, nd, icb1, plcl1, p1, th1, tv1, tvp1, thnk1, & ! nd->na 776 794 pbase1, buoybase1, iflag1, sig1, w01) … … 785 803 786 804 IF (iflag_con==4) THEN 805 if (prt_level >= 9) & 806 PRINT *, 'cva_driver -> cv_trigger' 787 807 CALL cv_trigger(len, nd, icb1, cbmf1, tv1, tvp1, iflag1) 788 808 END IF … … 831 851 ! 832 852 !>jyg 853 if (prt_level >= 9) & 854 PRINT *, 'cva_driver -> cv3a_compress' 833 855 CALL cv3a_compress(len, nloc, ncum, nd, ntra, compress, & 834 856 iflag1, nk1, icb1, icbs1, & … … 859 881 860 882 IF (iflag_con==4) THEN 883 if (prt_level >= 9) & 884 PRINT *, 'cva_driver -> cv_compress' 861 885 CALL cv_compress(len, nloc, ncum, nd, & 862 886 iflag1, nk1, icb1, & … … 881 905 882 906 IF (iflag_con==3) THEN 907 if (prt_level >= 9) & 908 PRINT *, 'cva_driver -> cv3_undilute2' 883 909 CALL cv3_undilute2(nloc, ncum, nd, icb, icbs, nk, & !na->nd 884 910 tnk, qnk, gznk, hnk, t, q, qs, gz, & … … 889 915 890 916 IF (iflag_con==4) THEN 917 if (prt_level >= 9) & 918 PRINT *, 'cva_driver -> cv_undilute2' 891 919 CALL cv_undilute2(nloc, ncum, nd, icb, nk, & 892 920 tnk, qnk, gznk, t, q, qs, gz, & … … 897 925 ! epmax_cape 898 926 ! on recalcule ep et hp 927 if (prt_level >= 9) & 928 PRINT *, 'cva_driver -> cv3_epmax_cape' 899 929 call cv3_epmax_fn_cape(nloc,ncum,nd & 900 930 , ep,hp,icb,inb,clw,nk,t,h,hnk,lv,lf,frac & … … 913 943 IF (iflag_mix>=1) THEN 914 944 CALL zilch(supmax, nloc*klev) 945 if (prt_level >= 9) & 946 PRINT *, 'cva_driver -> cv3p_mixing' 915 947 CALL cv3p_mixing(nloc, ncum, nd, nd, ntra, icb, nk, inb, & ! na->nd 916 948 ph, t, q, qs, u, v, tra, h, lv, lf, frac, qnk, & … … 931 963 IF (iflag_con==3) THEN 932 964 IF (iflag_clos==0) THEN 965 if (prt_level >= 9) & 966 PRINT *, 'cva_driver -> cv3_closure' 933 967 CALL cv3_closure(nloc, ncum, nd, icb, inb, & ! na->nd 934 968 pbase, p, ph, tv, buoy, & … … 947 981 948 982 IF (iflag_clos==2) THEN 983 if (prt_level >= 9) & 984 PRINT *, 'cva_driver -> cv3p1_closure' 949 985 CALL cv3p1_closure(nloc, ncum, nd, icb, inb, & ! na->nd 950 986 pbase, plcl, p, ph, tv, tvp, buoy, & … … 958 994 959 995 IF (iflag_clos==3) THEN 996 if (prt_level >= 9) & 997 PRINT *, 'cva_driver -> cv3p2_closure' 960 998 CALL cv3p2_closure(nloc, ncum, nd, icb, inb, & ! na->nd 961 999 pbase, plcl, p, ph, tv, tvp, buoy, & … … 970 1008 971 1009 IF (iflag_con==4) THEN 1010 if (prt_level >= 9) & 1011 PRINT *, 'cva_driver -> cv_closure' 972 1012 CALL cv_closure(nloc, ncum, nd, nk, icb, & 973 1013 tv, tvp, p, ph, dph, plcl, cpn, & … … 983 1023 IF (iflag_con==3) THEN 984 1024 IF (iflag_mix==0) THEN 1025 if (prt_level >= 9) & 1026 PRINT *, 'cva_driver -> cv3_mixing' 985 1027 CALL cv3_mixing(nloc, ncum, nd, nd, ntra, icb, nk, inb, & ! na->nd 986 1028 ph, t, q, qs, u, v, tra, h, lv, lf, frac, qnk, & … … 997 1039 998 1040 IF (iflag_con==4) THEN 1041 if (prt_level >= 9) & 1042 PRINT *, 'cva_driver -> cv_mixing' 999 1043 CALL cv_mixing(nloc, ncum, nd, icb, nk, inb, inbis, & 1000 1044 ph, t, q, qs, u, v, h, lv, qnk, & … … 1018 1062 END IF !(debut) THEN 1019 1063 1064 if (prt_level >= 9) & 1065 PRINT *, 'cva_driver -> cv3_unsat' 1020 1066 CALL cv3_unsat(nloc, ncum, nd, nd, ntra, icb, inb, iflag, & ! na->nd 1021 1067 t_wake, q_wake, qs_wake, gz, u, v, tra, p, ph, & … … 1044 1090 1045 1091 IF (iflag_con==4) THEN 1092 if (prt_level >= 9) & 1093 PRINT *, 'cva_driver -> cv_unsat' 1046 1094 CALL cv_unsat(nloc, ncum, nd, inb, t, q, qs, gz, u, v, p, ph, & 1047 1095 h, lv, ep, sigp, clw, m, ment, elij, & … … 1063 1111 IF (iflag_con==3) THEN 1064 1112 1113 if (prt_level >= 9) & 1114 PRINT *, 'cva_driver -> cv3_yield' 1065 1115 CALL cv3_yield(nloc, ncum, nd, nd, ntra, ok_conserv_q, & ! na->nd 1066 1116 icb, inb, delt, & … … 1092 1142 1093 1143 IF (iflag_con==4) THEN 1144 if (prt_level >= 9) & 1145 PRINT *, 'cva_driver -> cv_yield' 1094 1146 CALL cv_yield(nloc, ncum, nd, nk, icb, inb, delt, & 1095 1147 t, q, u, v, & … … 1110 1162 IF (iflag_con==3) THEN 1111 1163 !RomP >>> 1164 if (prt_level >= 9) & 1165 PRINT *, 'cva_driver -> cv3_tracer' 1112 1166 CALL cv3_tracer(nloc, len, ncum, nd, nd, & 1113 1167 ment, sigij, da, phi, phi2, d1a, dam, & … … 1125 1179 1126 1180 IF (iflag_con==3) THEN 1181 if (prt_level >= 9) & 1182 PRINT *, 'cva_driver -> cv3a_uncompress' 1127 1183 CALL cv3a_uncompress(nloc, len, ncum, nd, ntra, idcum, compress, & 1128 1184 iflag, icb, inb, & … … 1155 1211 1156 1212 IF (iflag_con==4) THEN 1213 if (prt_level >= 9) & 1214 PRINT *, 'cva_driver -> cv_uncompress' 1157 1215 CALL cv_uncompress(nloc, len, ncum, nd, idcum, & 1158 1216 iflag, & -
LMDZ5/branches/testing/libf/phylmd/dyn1d/1DUTILS.h
r2594 r2641 435 435 USE infotrac 436 436 use control_mod 437 USE comconst_mod, ONLY: im, jm, lllm 438 USE logic_mod, ONLY: fxyhypb, ysinus 439 USE temps_mod, ONLY: annee_ref, day_ini, day_ref, itau_dyn 437 440 438 441 IMPLICIT NONE … … 443 446 ! ------------- 444 447 include "dimensions.h" 445 include "comconst.h"446 include "temps.h"447 448 !!#include "control.h" 448 include "logic.h"449 449 include "netcdf.inc" 450 450 … … 579 579 USE infotrac 580 580 use control_mod 581 USE comconst_mod, ONLY: cpp, daysec, dtvr, g, kappa, omeg, rad 582 USE logic_mod, ONLY: fxyhypb, ysinus 583 USE temps_mod, ONLY: annee_ref,day_end,day_ref,itau_dyn,itaufin 581 584 582 585 IMPLICIT NONE … … 587 590 ! ------------- 588 591 include "dimensions.h" 589 include "comconst.h"590 include "temps.h"591 592 !!#include "control.h" 592 include "logic.h"593 593 include "netcdf.inc" 594 594 -
LMDZ5/branches/testing/libf/phylmd/dyn1d/lmdz1d.F90
r2594 r2641 16 16 ftsol, pbl_tke, pctsrf, radsol, rain_fall, snow_fall, ratqs, & 17 17 rnebcon, rugoro, sig1, w01, solaire_etat0, sollw, sollwdown, & 18 solsw, t_ancien, q_ancien, u_ancien, v_ancien, wake_cstar, wake_deltaq,&19 wake_delta t, wake_delta_pbl_TKE, delta_tsurf, wake_fip, wake_pe, &20 wake_ s, zgam, &21 z max0, zmea, zpic, zsig, &18 solsw, t_ancien, q_ancien, u_ancien, v_ancien, wake_cstar, & 19 wake_delta_pbl_TKE, delta_tsurf, wake_fip, wake_pe, & 20 wake_deltaq, wake_deltat, wake_s, wake_dens, & 21 zgam, zmax0, zmea, zpic, zsig, & 22 22 zstd, zthe, zval, ale_bl, ale_bl_trig, alp_bl 23 usedimphy24 usesurface_data, only : type_ocean,ok_veget25 use pbl_surface_mod, only : ftsoil, pbl_surface_init,&26 &pbl_surface_final27 usefonte_neige_mod, only : fonte_neige_init, fonte_neige_final28 29 useinfotrac ! new30 usecontrol_mod23 USE dimphy 24 USE surface_data, only : type_ocean,ok_veget 25 USE pbl_surface_mod, only : ftsoil, pbl_surface_init, & 26 pbl_surface_final 27 USE fonte_neige_mod, only : fonte_neige_init, fonte_neige_final 28 29 USE infotrac ! new 30 USE control_mod 31 31 USE indice_sol_mod 32 32 USE phyaqua_mod … … 37 37 USE mod_const_mpi, ONLY: comm_lmdz 38 38 USE physiq_mod, ONLY: physiq 39 USE comvert_mod, ONLY: presnivs, ap, bp, dpres,nivsig, nivsigs, pa, & 40 preff 41 USE temps_mod, ONLY: annee_ref, calend, day_end, day_ini, day_ref, & 42 itau_dyn, itau_phy, start_time 39 43 40 44 implicit none 41 45 #include "dimensions.h" 42 46 #include "YOMCST.h" 43 #include "temps.h"44 47 !!#include "control.h" 45 48 #include "clesphys.h" … … 47 50 !#include "indicesol.h" 48 51 49 #include "comvert.h"50 52 #include "compar1d.h" 51 53 #include "flux_arp.h" … … 246 248 integer jcode 247 249 INTEGER read_climoz 250 ! 251 integer :: it_end ! iteration number of the last call 248 252 !Al1 249 253 integer ecrit_slab_oc !1=ecrit,-1=lit,0=no file 250 254 data ecrit_slab_oc/-1/ 255 ! 256 ! if flag_inhib_forcing = 0, tendencies of forcing are added 257 ! <> 0, tendencies of forcing are not added 258 INTEGER :: flag_inhib_forcing = 0 251 259 252 260 !===================================================================== … … 745 753 pbl_tke(:,2,:)=1.e-2 746 754 PRINT *, ' pbl_tke dans lmdz1d ' 747 DO nsrf = 1,4 748 PRINT *,'pbl_tke(1,:,',nsrf,') ',pbl_tke(1,:,nsrf) 749 ENDDO 755 if (prt_level .ge. 5) then 756 DO nsrf = 1,4 757 PRINT *,'pbl_tke(1,:,',nsrf,') ',pbl_tke(1,:,nsrf) 758 ENDDO 759 end if 750 760 751 761 !>jyg … … 777 787 wake_pe = 0. 778 788 wake_s = 0. 789 wake_dens = 0. 779 790 ale_bl = 0. 780 791 ale_bl_trig = 0. … … 800 811 ! t_ancien,q_ancien,,frugs(:,is_oce),clwcon(:,1),rnebcon(:,1),ratqs(:,1) 801 812 ! run_off_lic_0,pbl_tke(:,1:klev,nsrf), zmax0,f0,sig1,w01 802 ! wake_deltat,wake_deltaq,wake_s,wake_cstar,wake_fip,wake_delta_pbl_tke(:,1:klev,nsrf) 813 ! wake_deltat,wake_deltaq,wake_s,wake_dens,wake_cstar, 814 ! wake_fip,wake_delta_pbl_tke(:,1:klev,nsrf) 803 815 ! 804 816 ! NB2: The content of the startphy.nc file depends on some flags defined in … … 898 910 !===================================================================== 899 911 900 do while(it.le.nint(fnday*day_step)) 912 it_end = nint(fnday*day_step) 913 !test JLD it_end = 10 914 do while(it.le.it_end) 901 915 902 916 if (prt_level.ge.1) then 903 917 print*,'XXXXXXXXXXXXXXXXXXX ITAP,day,time=', & 904 & it,day,time, nint(fnday*day_step),day_step918 & it,day,time,it_end,day_step 905 919 print*,'PAS DE TEMPS ',timestep 906 920 endif 907 921 !Al1 demande de restartphy.nc 908 if (it.eq. nint(fnday*day_step)) lastcall=.True.922 if (it.eq.it_end) lastcall=.True. 909 923 910 924 !--------------------------------------------------------------------- … … 936 950 write(*,*) 'firstcall,lastcall,phis', & 937 951 & firstcall,lastcall,phis 952 end if 953 if (prt_level>=5) then 938 954 write(*,'(a10,2a4,4a13)') 'BEFOR1 IT=','it','l', & 939 955 & 'presniv','plev','play','phi' … … 950 966 !--------------------------------------------------------------------- 951 967 call physiq(ngrid,llm, & 952 953 954 955 956 957 958 !--------------------------------------------------------------------- 959 ! Listing output for debug prt_level>=1960 !--------------------------------------------------------------------- 961 if (prt_level>= 1) then968 firstcall,lastcall,timestep, & 969 plev,play,phi,phis,presnivs, & 970 u,v, rot, temp,q,omega2, & 971 du_phys,dv_phys,dt_phys,dq,dpsrf) 972 firstcall=.false. 973 974 !--------------------------------------------------------------------- 975 ! Listing output for debug 976 !--------------------------------------------------------------------- 977 if (prt_level>=5) then 962 978 write(*,'(a11,2a4,4a13)') 'AFTER1 IT=','it','l', & 963 979 & 'presniv','plev','play','phi' … … 996 1012 endif 997 1013 998 IF (prt_level >= 1) print*, 'fcoriolis, xlat,mxcalc ', &1014 IF (prt_level >= 5) print*, 'fcoriolis, xlat,mxcalc ', & 999 1015 fcoriolis, xlat,mxcalc 1000 1016 … … 1046 1062 !! Increment state variables 1047 1063 !!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1064 IF (flag_inhib_forcing == 0) then ! if tendency of forcings should be added 1065 1048 1066 ! pour les cas sandu et astex, on reclacule u,v,q,temp et teta dans 1D_nudge_sandu_astex.h 1049 1067 ! au dessus de 700hpa, on relaxe vers les profils initiaux … … 1064 1082 & +d_q_nudge(1:mxcalc,:) ) 1065 1083 1066 if (prt_level.ge. 1) then1084 if (prt_level.ge.3) then 1067 1085 print *, & 1068 1086 & 'physiq-> temp(1),dt_phys(1),d_th_adv(1),dt_cooling(1) ', & … … 1111 1129 !cc q(1:mxcalc,2)=tmpvar(1:mxcalc) 1112 1130 1131 END IF ! end if tendency of tendency should be added 1132 1113 1133 !--------------------------------------------------------------------- 1114 1134 ! Air temperature : -
LMDZ5/branches/testing/libf/phylmd/fonte_neige_mod.F90
r2542 r2641 34 34 REAL, ALLOCATABLE, DIMENSION(:,:), PRIVATE :: fqcalving_global 35 35 !$OMP THREADPRIVATE(fqcalving_global) 36 REAL, ALLOCATABLE, DIMENSION(:), PRIVATE :: runofflic_global 37 !$OMP THREADPRIVATE(runofflic_global) 36 38 37 39 CONTAINS … … 105 107 ENDIF 106 108 fqcalving_global(:,:) = 0.0 109 110 ALLOCATE(runofflic_global(klon)) 111 IF (error /= 0) THEN 112 abort_message='Pb allocation runofflic_global' 113 CALL abort_physic(modname,abort_message,1) 114 ENDIF 115 runofflic_global(:) = 0.0 107 116 108 117 !**************************************************************************************** … … 282 291 ENDDO 283 292 293 IF (nisurf == is_lic) THEN 294 DO i = 1, knon 295 runofflic_global(knindex(i)) = run_off_lic(i) 296 ENDDO 297 ENDIF 298 284 299 END SUBROUTINE fonte_neige 285 300 ! … … 307 322 IF (ALLOCATED(fqfonte_global)) DEALLOCATE(fqfonte_global) 308 323 IF (ALLOCATED(fqcalving_global)) DEALLOCATE(fqcalving_global) 324 IF (ALLOCATED(runofflic_global)) DEALLOCATE(runofflic_global) 309 325 310 326 END SUBROUTINE fonte_neige_final … … 343 359 fqcalving_out(:) = fqcalving_out(:) + fqcalving_global(:,nisurf)*pctsrf(:,nisurf) 344 360 ENDDO 345 run_off_lic_out(:)=run_off_lic(:) 361 362 run_off_lic_out(:)=runofflic_global(:) 346 363 347 364 END SUBROUTINE fonte_neige_get_vars -
LMDZ5/branches/testing/libf/phylmd/newmicro.F90
r2160 r2641 17 17 ! Auteur(s): Z.X. Li (LMD/CNRS) date: 19930910 18 18 ! O. Boucher (LMD/CNRS) mise a jour en 201212 19 ! I. Musat (LMD/CNRS) : prise en compte de la meme hypothese de recouvrement 20 ! pour les nuages que pour le rayonnement rrtm via 21 ! le parametre novlp de radopt.h : 20160721 19 22 ! Objet: Calculer epaisseur optique et emmissivite des nuages 20 23 ! ====================================================================== … … 53 56 include "radopt.h" 54 57 55 ! choix de l'hypothese de recouvrememnt nuageuse 56 LOGICAL random, maximum_random, maximum 57 PARAMETER (random=.FALSE., maximum_random=.TRUE., maximum=.FALSE.) 58 ! choix de l'hypothese de recouvrement nuageuse via radopt.h (IM, 19.07.2016) 59 ! !novlp=1: max-random 60 ! !novlp=2: maximum 61 ! !novlp=3: random 62 ! LOGICAL random, maximum_random, maximum 63 ! PARAMETER (random=.FALSE., maximum_random=.TRUE., maximum=.FALSE.) 58 64 59 65 LOGICAL, SAVE :: first = .TRUE. … … 512 518 reffclwtop(i) = 0. 513 519 cldncl(i) = 0. 514 IF ( random .OR. maximum_random) tcc(i) = 1.515 IF ( maximum) tcc(i) = 0.520 IF (novlp.EQ.3 .OR. novlp.EQ.1) tcc(i) = 1. 521 IF (novlp.EQ.2) tcc(i) = 0. 516 522 END DO 517 523 … … 524 530 IF (pcltau(i,k)>thres_tau .AND. pclc(i,k)>thres_neb) THEN 525 531 526 IF ( maximum) THEN532 IF (novlp.EQ.2) THEN 527 533 IF (first) THEN 528 534 WRITE (*, *) 'Hypothese de recouvrement: MAXIMUM' … … 533 539 END IF 534 540 535 IF ( random) THEN541 IF (novlp.EQ.3) THEN 536 542 IF (first) THEN 537 543 WRITE (*, *) 'Hypothese de recouvrement: RANDOM' … … 542 548 END IF 543 549 544 IF ( maximum_random) THEN550 IF (novlp.EQ.1) THEN 545 551 IF (first) THEN 546 552 WRITE (*, *) 'Hypothese de recouvrement: MAXIMUM_ & … … 567 573 END DO ! loop over k 568 574 569 IF ( random .OR. maximum_random) tcc(i) = 1. - tcc(i)575 IF (novlp.EQ.3 .OR. novlp.EQ.1) tcc(i) = 1. - tcc(i) 570 576 571 577 END DO ! loop over i -
LMDZ5/branches/testing/libf/phylmd/nuage.h
r2594 r2641 14 14 & t_glace_min,exposant_glace,rei_min,rei_max, & 15 15 & tau_cld_cv,coefw_cld_cv, & 16 & iflag_t_glace,iflag_cloudth_vert,iflag_cld_cv,&17 & tmax_fonte_cv16 & tmax_fonte_cv, & 17 & iflag_t_glace,iflag_cloudth_vert,iflag_cld_cv 18 18 !$OMP THREADPRIVATE(/nuagecom/) -
LMDZ5/branches/testing/libf/phylmd/phyetat0.F90
r2594 r2641 17 17 solsw, t_ancien, u_ancien, v_ancien, w01, wake_cstar, wake_deltaq, & 18 18 wake_deltat, wake_delta_pbl_TKE, delta_tsurf, wake_fip, wake_pe, & 19 wake_s, zgam, zmax0, zmea, zpic, zsig, &19 wake_s, wake_dens, zgam, zmax0, zmea, zpic, zsig, & 20 20 zstd, zthe, zval, ale_bl, ale_bl_trig, alp_bl, u10m, v10m 21 21 USE geometry_mod, ONLY : longitude_deg, latitude_deg … … 378 378 found=phyetat0_get(klev,wake_deltat,"WAKE_DELTAT","Delta T wake/env",0.) 379 379 found=phyetat0_get(klev,wake_deltaq,"WAKE_DELTAQ","Delta hum. wake/env",0.) 380 found=phyetat0_get(1,wake_s,"WAKE_S","WAKE_S",0.) 380 found=phyetat0_get(1,wake_s,"WAKE_S","Wake frac. area",0.) 381 found=phyetat0_get(1,wake_dens,"WAKE_DENS","Wake num. /unit area",0.) 381 382 found=phyetat0_get(1,wake_cstar,"WAKE_CSTAR","WAKE_CSTAR",0.) 382 383 found=phyetat0_get(1,wake_pe,"WAKE_PE","WAKE_PE",0.) -
LMDZ5/branches/testing/libf/phylmd/phyredem.F90
r2594 r2641 18 18 v_ancien, clwcon, rnebcon, ratqs, pbl_tke, & 19 19 wake_delta_pbl_tke, zmax0, f0, sig1, w01, & 20 wake_deltat, wake_deltaq, wake_s, wake_cstar,& 20 wake_deltat, wake_deltaq, wake_s, wake_dens, & 21 wake_cstar, & 21 22 wake_pe, wake_fip, fm_therm, entr_therm, & 22 23 detr_therm, Ale_bl, Ale_bl_trig, Alp_bl, & … … 259 260 CALL put_field("WAKE_DELTAQ", "WAKE_DELTAQ", wake_deltaq) 260 261 261 CALL put_field("WAKE_S", "WAKE_S", wake_s) 262 CALL put_field("WAKE_S", "Wake frac. area", wake_s) 263 264 CALL put_field("WAKE_DENS", "Wake num. /unit area", wake_dens) 262 265 263 266 CALL put_field("WAKE_CSTAR", "WAKE_CSTAR", wake_cstar) -
LMDZ5/branches/testing/libf/phylmd/phys_local_var_mod.F90
r2594 r2641 253 253 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: sens, flwp, fiwp 254 254 !$OMP THREADPRIVATE(sens, flwp, fiwp) 255 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: ale_wake, alp_wake, bils 256 !$OMP THREADPRIVATE(ale_wake, alp_wake, bils) 255 !! 256 !! Wake variables 257 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: ale_wake, alp_wake 258 !$OMP THREADPRIVATE(ale_wake, alp_wake) 259 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: wake_h 260 !$OMP THREADPRIVATE(wake_h) 261 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: wake_omg 262 !$OMP THREADPRIVATE(wake_omg) 263 REAL, SAVE, ALLOCATABLE,DIMENSION(:,:) :: d_deltat_wk, d_deltaq_wk 264 !$OMP THREADPRIVATE(d_deltat_wk, d_deltaq_wk) 265 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: d_s_wk, d_dens_wk 266 !$OMP THREADPRIVATE(d_s_wk, d_dens_wk) 267 REAL, SAVE, ALLOCATABLE,DIMENSION(:,:) :: d_deltat_wk_gw, d_deltaq_wk_gw 268 !$OMP THREADPRIVATE(d_deltat_wk_gw, d_deltaq_wk_gw) 269 REAL, SAVE, ALLOCATABLE,DIMENSION(:,:) :: d_deltat_vdf, d_deltaq_vdf 270 !$OMP THREADPRIVATE(d_deltat_vdf, d_deltaq_vdf) 271 !!! REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: d_s_vdf, d_dens_vdf 272 !!!OMP THREADPRIVATE(d_s_vdf, d_dens_vdf) 273 REAL, SAVE, ALLOCATABLE,DIMENSION(:,:) :: d_deltat_the, d_deltaq_the 274 !$OMP THREADPRIVATE(d_deltat_the, d_deltaq_the) 275 !!! REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: d_s_the, d_dens_the 276 !!!OMP THREADPRIVATE(d_s_the, d_dens_the) 277 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: d_deltat_ajs_cv, d_deltaq_ajs_cv 278 !$OMP THREADPRIVATE(d_deltat_ajs_cv, d_deltaq_ajs_cv) 279 !! End of Wake variables 280 !! 281 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: bils 282 !$OMP THREADPRIVATE(bils) 257 283 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cdragm, cdragh 258 284 !$OMP THREADPRIVATE(cdragm, cdragh) … … 312 338 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: dqvdf_x, dqvdf_w 313 339 !$OMP THREADPRIVATE(dqvdf_x, dqvdf_w) 314 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: undi_tke, wake_tke315 !$OMP THREADPRIVATE(undi_tke, wake_tke)316 340 ! Variables supplémentaires dans physiq.F relative au splitting de la surface 317 341 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: pbl_tke_input 318 342 !$OMP THREADPRIVATE(pbl_tke_input) 319 343 ! Entree supplementaire Thermiques : 320 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: t_therm, q_therm 321 !$OMP THREADPRIVATE(t_therm, q_therm )344 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: t_therm, q_therm, u_therm, v_therm 345 !$OMP THREADPRIVATE(t_therm, q_therm, u_therm, v_therm) 322 346 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cdragh_x, cdragh_w 323 347 !$OMP THREADPRIVATE(cdragh_x, cdragh_w) … … 330 354 !>jyg+nrlmd 331 355 ! 332 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: w ake_h, wbeff, zmax_th, zq2m, zt2m333 !$OMP THREADPRIVATE(w ake_h, wbeff, zmax_th, zq2m, zt2m)356 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: wbeff, zmax_th, zq2m, zt2m 357 !$OMP THREADPRIVATE(wbeff, zmax_th, zq2m, zt2m) 334 358 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zt2m_min_mon, zt2m_max_mon 335 359 !$OMP THREADPRIVATE(zt2m_min_mon, zt2m_max_mon) … … 365 389 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: ref_liq_pi, ref_ice_pi 366 390 !$OMP THREADPRIVATE(ref_liq_pi, ref_ice_pi) 367 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: wake_omg,zx_rh368 !$OMP THREADPRIVATE( wake_omg,zx_rh)391 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: zx_rh 392 !$OMP THREADPRIVATE(zx_rh) 369 393 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: pmflxr, pmflxs, prfl, psfl, fraca 370 394 !$OMP THREADPRIVATE(pmflxr, pmflxs, prfl, psfl, fraca) … … 530 554 ALLOCATE(tal1(klon), pal1(klon), pab1(klon), pab2(klon)) 531 555 ALLOCATE(ptstar(klon),pt0(klon),slp(klon)) 532 ALLOCATE(ale_wake(klon), alp_wake(klon), bils(klon)) 556 !! 557 !! Wake variables 558 ALLOCATE(ale_wake(klon), alp_wake(klon)) 559 ALLOCATE(wake_h(klon)) 560 ALLOCATE(wake_omg(klon, klev)) 561 ALLOCATE(d_deltat_wk(klon, klev), d_deltaq_wk(klon, klev)) 562 ALLOCATE(d_s_wk(klon), d_dens_wk(klon)) 563 ALLOCATE(d_deltat_wk_gw(klon, klev), d_deltaq_wk_gw(klon, klev)) 564 ALLOCATE(d_deltat_vdf(klon, klev), d_deltaq_vdf(klon, klev)) 565 !! ALLOCATE( d_s_vdf(klon), d_dens_vdf(klon)) 566 ALLOCATE(d_deltat_the(klon, klev), d_deltaq_the(klon, klev)) 567 !! ALLOCATE( d_s_the(klon), d_dens_the(klon)) 568 ALLOCATE(d_deltat_ajs_cv(klon, klev), d_deltaq_ajs_cv(klon, klev)) 569 !! End of wake variables 570 !! 571 ALLOCATE(bils(klon)) 533 572 ALLOCATE(cdragm(klon), cdragh(klon), cldh(klon), cldl(klon)) 534 573 ALLOCATE(cldm(klon), cldq(klon), cldt(klon), qsat2m(klon)) … … 561 600 ALLOCATE(dtvdf_x(klon,klev), dtvdf_w(klon,klev)) 562 601 ALLOCATE(dqvdf_x(klon,klev), dqvdf_w(klon,klev)) 563 ALLOCATE(undi_tke(klon,klev), wake_tke(klon,klev))564 602 ALLOCATE(pbl_tke_input(klon,klev+1,nbsrf)) 565 ALLOCATE(t_therm(klon,klev), q_therm(klon,klev) )603 ALLOCATE(t_therm(klon,klev), q_therm(klon,klev),u_therm(klon,klev), v_therm(klon,klev)) 566 604 ALLOCATE(cdragh_x(klon), cdragh_w(klon)) 567 605 ALLOCATE(cdragm_x(klon), cdragm_w(klon)) 568 606 ALLOCATE(kh(klon), kh_x(klon), kh_w(klon)) 569 607 ! 570 ALLOCATE(w ake_h(klon), wbeff(klon), zmax_th(klon))608 ALLOCATE(wbeff(klon), zmax_th(klon)) 571 609 ALLOCATE(zq2m(klon), zt2m(klon), weak_inversion(klon)) 572 610 ALLOCATE(zt2m_min_mon(klon), zt2m_max_mon(klon)) … … 589 627 ALLOCATE(ref_liq(klon, klev), ref_ice(klon, klev), theta(klon, klev)) 590 628 ALLOCATE(ref_liq_pi(klon, klev), ref_ice_pi(klon, klev)) 591 ALLOCATE(zphi(klon, klev), wake_omg(klon, klev),zx_rh(klon, klev))629 ALLOCATE(zphi(klon, klev), zx_rh(klon, klev)) 592 630 ALLOCATE(pmfd(klon, klev), pmfu(klon, klev)) 593 631 … … 741 779 DEALLOCATE(tal1, pal1, pab1, pab2) 742 780 DEALLOCATE(ptstar, pt0, slp) 743 DEALLOCATE(ale_wake, alp_wake, bils) 781 ! 782 DEALLOCATE(ale_wake, alp_wake) 783 DEALLOCATE(wake_h) 784 DEALLOCATE(wake_omg) 785 DEALLOCATE(d_deltat_wk, d_deltaq_wk) 786 DEALLOCATE(d_s_wk, d_dens_wk) 787 DEALLOCATE(d_deltat_wk_gw, d_deltaq_wk_gw) 788 DEALLOCATE(d_deltat_vdf, d_deltaq_vdf) 789 !! DEALLOCATE( d_s_vdf, d_dens_vdf) 790 DEALLOCATE(d_deltat_the, d_deltaq_the) 791 !! DEALLOCATE( d_s_the, d_dens_the) 792 DEALLOCATE(d_deltat_ajs_cv, d_deltaq_ajs_cv) 793 ! 794 DEALLOCATE(bils) 744 795 DEALLOCATE(cdragm, cdragh, cldh, cldl) 745 796 DEALLOCATE(cldm, cldq, cldt, qsat2m) … … 770 821 DEALLOCATE(dtvdf_x, dtvdf_w) 771 822 DEALLOCATE(dqvdf_x, dqvdf_w) 772 DEALLOCATE(undi_tke, wake_tke)773 823 DEALLOCATE(pbl_tke_input) 774 DEALLOCATE(t_therm, q_therm )824 DEALLOCATE(t_therm, q_therm, u_therm, v_therm) 775 825 DEALLOCATE(cdragh_x, cdragh_w) 776 826 DEALLOCATE(cdragm_x, cdragm_w) 777 827 DEALLOCATE(kh, kh_x, kh_w) 778 828 ! 779 DEALLOCATE(w ake_h, wbeff, zmax_th)829 DEALLOCATE(wbeff, zmax_th) 780 830 DEALLOCATE(zq2m, zt2m, weak_inversion) 781 831 DEALLOCATE(zt2m_min_mon, zt2m_max_mon) … … 798 848 DEALLOCATE(ref_liq, ref_ice, theta) 799 849 DEALLOCATE(ref_liq_pi, ref_ice_pi) 800 DEALLOCATE(zphi, wake_omg,zx_rh)850 DEALLOCATE(zphi, zx_rh) 801 851 DEALLOCATE(pmfd, pmfu) 802 852 -
LMDZ5/branches/testing/libf/phylmd/phys_output_ctrlout_mod.F90
r2594 r2641 1658 1658 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1659 1659 1660 #ifdef CPP_Dust 1661 #include "Dust/spla_output_dat.h" 1662 #endif 1663 1660 1664 END MODULE phys_output_ctrlout_mod -
LMDZ5/branches/testing/libf/phylmd/phys_output_write_mod.F90
r2594 r2641 1763 1763 ENDIF 1764 1764 1765 1765 1766 END SUBROUTINE phys_output_write 1766 1767 -
LMDZ5/branches/testing/libf/phylmd/phys_state_var_mod.F90
r2542 r2641 203 203 REAL,ALLOCATABLE,SAVE :: cin(:) 204 204 !$OMP THREADPRIVATE(cin) 205 ! ftd : differential heating between wake and environment205 ! ftd : convective heating due to unsaturated downdraughts 206 206 REAL,ALLOCATABLE,SAVE :: ftd(:,:) 207 207 !$OMP THREADPRIVATE(ftd) 208 ! fqd : differential moistening between wake and environment208 ! fqd : convective moistening due to unsaturated downdraughts 209 209 REAL,ALLOCATABLE,SAVE :: fqd(:,:) 210 210 !$OMP THREADPRIVATE(fqd) … … 232 232 ! wake_deltat : ecart de temperature avec la zone non perturbee 233 233 ! wake_deltaq : ecart d'humidite avec la zone non perturbee 234 ! wake_s : fraction surfacique occupee par la poche froide 235 ! wake_dens : number of wakes per unit area 236 ! wake_occ : occurence of wakes (= 1 if wakes occur, =0 otherwise) 234 237 ! wake_Cstar : vitesse d'etalement de la poche 235 ! wake_s : fraction surfacique occupee par la poche froide236 238 ! wake_pe : wake potential energy - WAPE 237 239 ! wake_fip : Gust Front Impinging power - ALP 238 ! dt_wake, dq_wake: LS tendencies due to wake239 240 REAL,ALLOCATABLE,SAVE :: wake_deltat(:,:) 240 241 !$OMP THREADPRIVATE(wake_deltat) 241 242 REAL,ALLOCATABLE,SAVE :: wake_deltaq(:,:) 242 243 !$OMP THREADPRIVATE(wake_deltaq) 244 REAL,ALLOCATABLE,SAVE :: wake_s(:) 245 !$OMP THREADPRIVATE(wake_s) 246 REAL,ALLOCATABLE,SAVE :: wake_dens(:) 247 !$OMP THREADPRIVATE(wake_dens) 243 248 REAL,ALLOCATABLE,SAVE :: wake_Cstar(:) 244 249 !$OMP THREADPRIVATE(wake_Cstar) 245 REAL,ALLOCATABLE,SAVE :: wake_s(:)246 !$OMP THREADPRIVATE(wake_s)247 250 REAL,ALLOCATABLE,SAVE :: wake_pe(:) 248 251 !$OMP THREADPRIVATE(wake_pe) 249 252 REAL,ALLOCATABLE,SAVE :: wake_fip(:) 250 253 !$OMP THREADPRIVATE(wake_fip) 251 REAL,ALLOCATABLE,SAVE :: dt_wake(:,:)252 !$OMP THREADPRIVATE(dt_wake)253 REAL,ALLOCATABLE,SAVE :: dq_wake(:,:)254 !$OMP THREADPRIVATE(dq_wake)255 254 ! 256 255 !jyg< … … 524 523 ALLOCATE(wght_th(klon,klev)) 525 524 ALLOCATE(wake_deltat(klon,klev), wake_deltaq(klon,klev)) 526 ALLOCATE(wake_Cstar(klon), wake_s(klon)) 525 ALLOCATE(wake_s(klon), wake_dens(klon)) 526 ALLOCATE(wake_Cstar(klon)) 527 527 ALLOCATE(wake_pe(klon), wake_fip(klon)) 528 ALLOCATE(dt_wake(klon,klev), dq_wake(klon,klev))529 528 !jyg< 530 529 ALLOCATE(wake_delta_pbl_TKE(klon,klev+1,nbsrf+1)) … … 664 663 deallocate(lalim_conv, wght_th) 665 664 deallocate(wake_deltat, wake_deltaq) 666 deallocate(wake_ Cstar, wake_s, wake_pe, wake_fip)667 deallocate( dt_wake, dq_wake)665 deallocate(wake_s, wake_dens) 666 deallocate(wake_Cstar, wake_pe, wake_fip) 668 667 !jyg< 669 668 deallocate(wake_delta_pbl_TKE) -
LMDZ5/branches/testing/libf/phylmd/physiq_mod.F90
r2595 r2641 34 34 USE change_srf_frac_mod 35 35 USE surface_data, ONLY : type_ocean, ok_veget, ok_snow 36 USE phys_local_var_mod ! Variables internes non sauvegardees de la physique 36 #ifdef CPP_Dust 37 USE phytracr_spl_mod, ONLY: phytracr_spl 38 #endif 39 USE phys_local_var_mod, ONLY: phys_local_var_init, phys_local_var_end, & 40 ! [Variables internes non sauvegardees de la physique] 41 ! Variables locales pour effectuer les appels en serie 42 t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,tr_seri, & 43 ! Dynamic tendencies (diagnostics) 44 d_t_dyn,d_q_dyn,d_ql_dyn,d_qs_dyn,d_u_dyn,d_v_dyn,d_tr_dyn, & 45 d_q_dyn2d,d_ql_dyn2d,d_qs_dyn2d, & 46 ! Physic tendencies 47 d_t_con,d_q_con,d_u_con,d_v_con, & 48 d_tr, & !! to be removed?? (jyg) 49 d_t_wake,d_q_wake, & 50 d_t_lwr,d_t_lw0,d_t_swr,d_t_sw0, & 51 d_t_ajsb,d_q_ajsb, & 52 d_t_ajs,d_q_ajs,d_u_ajs,d_v_ajs, & 53 d_t_ajs_w,d_q_ajs_w, & 54 d_t_ajs_x,d_q_ajs_x, & 55 ! 56 d_t_eva,d_q_eva, & 57 d_t_lsc,d_q_lsc,d_ql_lsc,d_qi_lsc, & 58 d_t_lscst,d_q_lscst, & 59 d_t_lscth,d_q_lscth, & 60 plul_st,plul_th, & 61 ! 62 d_t_vdf,d_q_vdf,d_u_vdf,d_v_vdf,d_t_diss, & 63 d_t_vdf_w,d_q_vdf_w, & 64 d_t_vdf_x,d_q_vdf_x, & 65 d_ts, & 66 ! 67 d_t_oli,d_u_oli,d_v_oli, & 68 d_t_oro,d_u_oro,d_v_oro, & 69 d_t_lif,d_u_lif,d_v_lif, & 70 d_t_ec, & 71 ! 72 du_gwd_hines,dv_gwd_hines,d_t_hin, & 73 dv_gwd_rando,dv_gwd_front, & 74 east_gwstress,west_gwstress, & 75 d_q_ch4, & 76 ! Special RRTM 77 ZLWFT0_i,ZSWFT0_i,ZFLDN0, & 78 ZFLUP0,ZFSDN0,ZFSUP0, & 79 ! 80 topswad_aero,solswad_aero, & 81 topswai_aero,solswai_aero, & 82 topswad0_aero,solswad0_aero, & 83 !LW additional 84 toplwad_aero,sollwad_aero, & 85 toplwai_aero,sollwai_aero, & 86 toplwad0_aero,sollwad0_aero, & 87 ! 88 topsw_aero,solsw_aero, & 89 topsw0_aero,solsw0_aero, & 90 topswcf_aero,solswcf_aero, & 91 tausum_aero,tau3d_aero, & 92 ! 93 !variables CFMIP2/CMIP5 94 topswad_aerop, solswad_aerop, & 95 topswai_aerop, solswai_aerop, & 96 topswad0_aerop, solswad0_aerop, & 97 topsw_aerop, topsw0_aerop, & 98 solsw_aerop, solsw0_aerop, & 99 topswcf_aerop, solswcf_aerop, & 100 !LW diagnostics 101 toplwad_aerop, sollwad_aerop, & 102 toplwai_aerop, sollwai_aerop, & 103 toplwad0_aerop, sollwad0_aerop, & 104 ! 105 ptstar, pt0, slp, & 106 ! 107 bils, & 108 ! 109 cldh, cldl,cldm, cldq, cldt, & 110 JrNt, & 111 dthmin, evap, fder, plcl, plfc, & 112 prw, prlw, prsw, & 113 s_lcl, s_pblh, s_pblt, s_therm, & 114 cdragm, cdragh, & 115 zustar, zu10m, zv10m, rh2m, qsat2m, & 116 zq2m, zt2m, weak_inversion, & 117 zt2m_min_mon, zt2m_max_mon, & ! pour calcul_divers.h 118 t2m_min_mon, t2m_max_mon, & ! pour calcul_divers.h 119 ! 120 s_pblh_x, s_pblh_w, & 121 s_lcl_x, s_lcl_w, & 122 ! 123 slab_wfbils, tpot, tpote, & 124 ue, uq, ve, vq, zxffonte, & 125 zxfqcalving, zxfluxlat, & 126 zxrunofflic, & 127 zxtsol, snow_lsc, zxfqfonte, zxqsurf, & 128 rain_lsc, rain_num, & 129 ! 130 sens_x, sens_w, & 131 zxfluxlat_x, zxfluxlat_w, & 132 ! 133 dtvdf_x, dtvdf_w, & 134 dqvdf_x, dqvdf_w, & 135 pbl_tke_input, & 136 t_therm, q_therm, u_therm, v_therm, & 137 cdragh_x, cdragh_w, & 138 cdragm_x, cdragm_w, & 139 kh, kh_x, kh_w, & 140 ! 141 ale_wake, alp_wake, & 142 wake_h, wake_omg, & 143 ! tendencies of delta T and delta q: 144 d_deltat_wk, d_deltaq_wk, & ! due to wakes 145 d_deltat_wk_gw, d_deltaq_wk_gw, & ! due to wake induced gravity waves 146 d_deltat_vdf, d_deltaq_vdf, & ! due to vertical diffusion 147 d_deltat_the, d_deltaq_the, & ! due to thermals 148 d_deltat_ajs_cv, d_deltaq_ajs_cv, & ! due to dry adjustment of (w) before convection 149 ! tendencies of wake fractional area and wake number per unit area: 150 d_s_wk, d_dens_wk, & ! due to wakes 151 !!! d_s_vdf, d_dens_vdf, & ! due to vertical diffusion 152 !!! d_s_the, d_dens_the, & ! due to thermals 153 ! 154 wbeff, zmax_th, & 155 sens, flwp, fiwp, & 156 ale_bl_stat,alp_bl_conv,alp_bl_det, & 157 alp_bl_fluct_m,alp_bl_fluct_tke, & 158 alp_bl_stat, n2, s2, & 159 proba_notrig, random_notrig, & 160 ! 161 dnwd, dnwd0, & 162 upwd, omega, & 163 epmax_diag, & 164 ep, & 165 cldemi, & 166 cldfra, cldtau, fiwc, & 167 fl, re, flwc, & 168 ref_liq, ref_ice, theta, & 169 ref_liq_pi, ref_ice_pi, & 170 zphi, zx_rh, & 171 pmfd, pmfu, & 172 ! 173 t2m, fluxlat, & 174 fsollw, evap_pot, & 175 fsolsw, wfbils, wfbilo, & 176 177 pmflxr, pmflxs, prfl, & 178 psfl, fraca, Vprecip, & 179 zw2, & 180 181 fluxu, fluxv, & 182 fluxt, & 183 184 uwriteSTD, vwriteSTD, & !pour calcul_STDlev.h 185 wwriteSTD, phiwriteSTD, & !pour calcul_STDlev.h 186 qwriteSTD, twriteSTD, rhwriteSTD, & !pour calcul_STDlev.h 187 188 wdtrainA, wdtrainM, & 189 beta_prec, & 190 rneb, & 191 zxsnow,snowhgt,qsnow,to_ice,sissnow,runoff,albsol3_lic 192 ! 37 193 USE phys_state_var_mod ! Variables sauvegardees de la physique 194 #ifdef CPP_Dust 195 USE phys_output_write_spl_mod 196 #else 38 197 USE phys_output_var_mod ! Variables pour les ecritures des sorties 198 #endif 199 39 200 USE phys_output_write_mod 40 201 USE fonte_neige_mod, ONLY : fonte_neige_get_vars 41 202 USE phys_output_mod 42 203 USE phys_output_ctrlout_mod 43 USE iophy44 204 use open_climoz_m, only: open_climoz ! ozone climatology from a file 45 205 use regr_pr_av_m, only: regr_pr_av … … 74 234 75 235 USE paramLMDZ_phy_mod 236 237 USE cmp_seri_mod 76 238 77 239 !IM stations CFMIP … … 378 540 !RC 379 541 ! Variables li\'ees \`a la poche froide (jyg et rr) 380 ! Version diagnostique pour l'instant : pas de r\'etroaction sur 381 ! la convection 382 383 REAL t_wake(klon,klev),q_wake(klon,klev) ! wake pour la convection 542 543 INTEGER, SAVE :: iflag_wake_tend ! wake: if =0, then wake state variables are 544 ! updated within calwake 545 !$OMP THREADPRIVATE(iflag_wake_tend) 546 REAL t_w(klon,klev),q_w(klon,klev) ! temperature and moisture profiles in the wake region 547 REAL t_x(klon,klev),q_x(klon,klev) ! temperature and moisture profiles in the off-wake region 384 548 385 549 REAL wake_dth(klon,klev) ! wake : temp pot difference 386 550 387 REAL wake_d_deltat_gw(klon,klev)! wake : delta T tendency due to388 ! Gravity Wave (/s)389 551 REAL wake_omgbdth(klon,klev) ! Wake : flux of Delta_Theta 390 552 ! transported by LS omega … … 395 557 REAL wake_dqKE(klon,klev) ! Wake : differential moistening 396 558 ! (wake - unpertubed) CONV 397 REAL wake_dtPBL(klon,klev) ! Wake : differential heating398 ! (wake - unpertubed) PBL399 REAL wake_dqPBL(klon,klev) ! Wake : differential moistening400 ! (wake - unpertubed) PBL401 REAL wake_ddeltat(klon,klev),wake_ddeltaq(klon,klev)402 559 REAL wake_dp_deltomg(klon,klev) ! Wake : gradient vertical de wake_omg 403 560 REAL wake_spread(klon,klev) ! spreading term in wake_delt … … 406 563 ! 407 564 INTEGER wake_k(klon) ! Wake sommet 408 !409 REAL t_undi(klon,klev) ! temperature moyenne dans la zone410 ! non perturbee411 REAL q_undi(klon,klev) ! humidite moyenne dans la zone412 ! non perturbee413 565 ! 414 566 !jyg< … … 417 569 418 570 REAL wake_gfl(klon) ! Gust Front Length 419 REAL wake_dens(klon) 571 !!! REAL wake_dens(klon) ! moved to phys_state_var_mod 420 572 ! 421 573 ! 422 574 REAL dt_dwn(klon,klev) 423 575 REAL dq_dwn(klon,klev) 424 REAL wdt_PBL(klon,klev)425 REAL udt_PBL(klon,klev)426 REAL wdq_PBL(klon,klev)427 REAL udq_PBL(klon,klev)428 576 REAL M_dwn(klon,klev) 429 577 REAL M_up(klon,klev) … … 434 582 LOGICAL,SAVE :: ok_adjwk=.FALSE. 435 583 !$OMP THREADPRIVATE(ok_adjwk) 584 REAL,SAVE :: oliqmax=999. 585 !$OMP THREADPRIVATE(oliqmax) 436 586 REAL, SAVE :: alp_offset 437 587 !$OMP THREADPRIVATE(alp_offset) 438 439 ! !!440 !=================================================================441 ! PROVISOIRE : DECOUPLAGE PBL/WAKE442 ! --------------------------------443 REAL wake_deltat_sav(klon,klev)444 REAL wake_deltaq_sav(klon,klev)445 !=================================================================446 588 447 589 ! … … 659 801 ! eva: evaporation de l'eau liquide nuageuse 660 802 ! vdf: couche limite (Vertical DiFfusion) 661 803 ! 662 804 ! tendance nulles 663 805 REAL, dimension(klon,klev):: du0, dv0, dt0, dq0, dql0, dqi0 806 REAL, dimension(klon) :: dsig0, ddens0 807 INTEGER, dimension(klon) :: wkoccur1 808 ! 809 ! Flag pour pouvoir ne pas ajouter les tendances. 810 ! Par defaut, les tendances doivente etre ajoutees et 811 ! flag_inhib_tend = 0 812 ! flag_inhib_tend > 0 : tendances non ajoutees, avec un nombre 813 ! croissant de print quand la valeur du flag augmente 814 !!! attention, ce flag doit etre change avec prudence !!! 815 INTEGER :: flag_inhib_tend = 0 ! 0 is the default value 816 !! INTEGER :: flag_inhib_tend = 2 664 817 665 818 ! … … 750 903 REAL zx_lat(nbp_lon,nbp_lat) 751 904 ! 752 INTEGER nid_ day_seri, nid_ctesGCM753 SAVE nid_ day_seri, nid_ctesGCM754 !$OMP THREADPRIVATE(nid_ day_seri,nid_ctesGCM)905 INTEGER nid_ctesGCM 906 SAVE nid_ctesGCM 907 !$OMP THREADPRIVATE(nid_ctesGCM) 755 908 ! 756 909 !IM 280405 BEG … … 970 1123 971 1124 if (first) then 972 973 1125 !CR:nvelles variables convection/poches froides 974 1126 … … 1044 1196 CALL getin_p('random_notrig_max',random_notrig_max) 1045 1197 CALL getin_p('ok_adjwk',ok_adjwk) 1198 CALL getin_p('oliqmax',oliqmax) 1046 1199 CALL getin_p('ratqsp0',ratqsp0) 1047 1200 CALL getin_p('ratqsdp',ratqsdp) 1201 iflag_wake_tend = 0 1202 CALL getin_p('iflag_wake_tend',iflag_wake_tend) 1048 1203 ENDIF 1049 1204 … … 1245 1400 ! 11/09/06 rajout initialisation ALE et ALP du wake et PBL(YU) 1246 1401 ! print*,'apres ini_wake iflag_cld_th=', iflag_cld_th 1402 ! 1403 ! Initialize tendencies of wake state variables (for some flag values 1404 ! they are not computed). 1405 d_deltat_wk(:,:) = 0. 1406 d_deltaq_wk(:,:) = 0. 1407 d_deltat_wk_gw(:,:) = 0. 1408 d_deltaq_wk_gw(:,:) = 0. 1409 d_deltat_vdf(:,:) = 0. 1410 d_deltaq_vdf(:,:) = 0. 1411 d_deltat_the(:,:) = 0. 1412 d_deltaq_the(:,:) = 0. 1413 d_deltat_ajs_cv(:,:) = 0. 1414 d_deltaq_ajs_cv(:,:) = 0. 1415 d_s_wk(:) = 0. 1416 d_dens_wk(:) = 0. 1247 1417 endif 1248 1418 … … 1381 1551 WRITE(lunout,*)'OK freq_outNMC(3)=',freq_outNMC(3) 1382 1552 1383 include "ini_histday_seri.h"1384 1385 1553 CALL ini_paramLMDZ_phy(dtime,nid_ctesGCM) 1386 1554 … … 1537 1705 dql0(:,:)=0. 1538 1706 dqi0(:,:)=0. 1707 dsig0(:) = 0. 1708 ddens0(:) = 0. 1709 wkoccur1(:)=1 1539 1710 ! 1540 1711 ! Mettre a zero des variables de sortie (pour securite) … … 1630 1801 ENDDO 1631 1802 ENDDO 1803 ! Initialize variables used for diagnostic purpose 1804 if (flag_inhib_tend .ne. 0) call init_cmp_seri 1632 1805 !IM 1633 1806 IF (ip_ebil_phy.ge.1) THEN … … 1972 2145 ENDIF 1973 2146 ! !! 1974 !=================================================================1975 ! PROVISOIRE : DECOUPLAGE PBL/WAKE1976 ! --------------------------------1977 !1978 !! wake_deltat_sav(:,:)=wake_deltat(:,:)1979 !! wake_deltaq_sav(:,:)=wake_deltaq(:,:)1980 !! wake_deltat(:,:)=0.1981 !! wake_deltaq(:,:)=0.1982 !=================================================================1983 2147 !>jyg+nrlmd 1984 2148 ! … … 2055 2219 ) 2056 2220 ! 2057 !=================================================================2058 ! PROVISOIRE : DECOUPLAGE PBL/WAKE2059 ! --------------------------------2060 !2061 !! wake_deltat(:,:)=wake_deltat_sav(:,:)2062 !! wake_deltaq(:,:)=wake_deltaq_sav(:,:)2063 !=================================================================2064 !2065 2221 ! Add turbulent diffusion tendency to the wake difference variables 2066 2222 IF (mod(iflag_pbl_split,2) .NE. 0) THEN 2067 wake_deltat(:,:) = wake_deltat(:,:) + (d_t_vdf_w(:,:)-d_t_vdf_x(:,:)) 2068 wake_deltaq(:,:) = wake_deltaq(:,:) + (d_q_vdf_w(:,:)-d_q_vdf_x(:,:)) 2223 !jyg< 2224 d_deltat_vdf(:,:) = d_t_vdf_w(:,:)-d_t_vdf_x(:,:) 2225 d_deltaq_vdf(:,:) = d_q_vdf_w(:,:)-d_q_vdf_x(:,:) 2226 CALL add_wake_tend & 2227 (d_deltat_vdf, d_deltaq_vdf, dsig0, ddens0, wkoccur1, 'vdf', abortphy) 2228 ELSE 2229 d_deltat_vdf(:,:) = 0. 2230 d_deltaq_vdf(:,:) = 0. 2231 !>jyg 2069 2232 ENDIF 2070 2233 … … 2075 2238 CALL add_pbl_tend & 2076 2239 (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,dqi0,paprs,& 2077 'vdf',abortphy )2240 'vdf',abortphy,flag_inhib_tend) 2078 2241 ELSE 2079 2242 CALL add_phys_tend & 2080 2243 (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,dqi0,paprs,& 2081 'vdf',abortphy )2244 'vdf',abortphy,flag_inhib_tend) 2082 2245 ENDIF 2083 2246 !-------------------------------------------------------------------- … … 2241 2404 !======================================================================= 2242 2405 !ajout pour la parametrisation des poches froides: calcul de 2243 !t_w ake et t_undi: si pas de poches froides, t_wake=t_undi=t_seri2244 do k=1,klev2245 do i=1,klon2246 if (iflag_wake>=1) then2247 t_w ake(i,k) = t_seri(i,k) &2406 !t_w et t_x: si pas de poches froides, t_w=t_x=t_seri 2407 if (iflag_wake>=1) then 2408 do k=1,klev 2409 do i=1,klon 2410 t_w(i,k) = t_seri(i,k) & 2248 2411 +(1-wake_s(i))*wake_deltat(i,k) 2249 q_w ake(i,k) = q_seri(i,k) &2412 q_w(i,k) = q_seri(i,k) & 2250 2413 +(1-wake_s(i))*wake_deltaq(i,k) 2251 t_ undi(i,k) = t_seri(i,k) &2414 t_x(i,k) = t_seri(i,k) & 2252 2415 -wake_s(i)*wake_deltat(i,k) 2253 q_ undi(i,k) = q_seri(i,k) &2416 q_x(i,k) = q_seri(i,k) & 2254 2417 -wake_s(i)*wake_deltaq(i,k) 2255 else2256 t_wake(i,k) = t_seri(i,k)2257 q_wake(i,k) = q_seri(i,k)2258 t_ undi(i,k) = t_seri(i,k)2259 q_ undi(i,k) = q_seri(i,k)2260 endif2261 enddo2262 end do2418 enddo 2419 enddo 2420 else 2421 t_w(:,:) = t_seri(:,:) 2422 q_w(:,:) = q_seri(:,:) 2423 t_x(:,:) = t_seri(:,:) 2424 q_x(:,:) = q_seri(:,:) 2425 endif 2263 2426 ! 2264 2427 !jyg< … … 2269 2432 IF (ok_adjwk) THEN 2270 2433 limbas(:) = 1 2271 CALL ajsec(paprs, pplay, t_w ake, q_wake, limbas, &2434 CALL ajsec(paprs, pplay, t_w, q_w, limbas, & 2272 2435 d_t_adjwk, d_q_adjwk) 2273 ENDIF 2274 ! 2275 DO k=1,klev 2276 DO i=1,klon 2277 IF (wake_s(i) .GT. 1.e-3) THEN 2278 t_wake(i,k) = t_wake(i,k) + d_t_adjwk(i,k) 2279 q_wake(i,k) = q_wake(i,k) + d_q_adjwk(i,k) 2280 wake_deltat(i,k) = wake_deltat(i,k) + d_t_adjwk(i,k) 2281 wake_deltaq(i,k) = wake_deltaq(i,k) + d_q_adjwk(i,k) 2282 ENDIF 2436 ! 2437 DO k=1,klev 2438 DO i=1,klon 2439 IF (wake_s(i) .GT. 1.e-3) THEN 2440 t_w(i,k) = t_w(i,k) + d_t_adjwk(i,k) 2441 q_w(i,k) = q_w(i,k) + d_q_adjwk(i,k) 2442 d_deltat_ajs_cv(i,k) = d_t_adjwk(i,k) 2443 d_deltaq_ajs_cv(i,k) = d_q_adjwk(i,k) 2444 ELSE 2445 d_deltat_ajs_cv(i,k) = 0. 2446 d_deltaq_ajs_cv(i,k) = 0. 2447 ENDIF 2448 ENDDO 2283 2449 ENDDO 2284 ENDDO 2450 CALL add_wake_tend & 2451 (d_deltat_ajs_cv, d_deltaq_ajs_cv, dsig0, ddens0, wkoccur1, 'ajs_cv', abortphy) 2452 ENDIF ! (ok_adjwk) 2285 2453 ENDIF ! (iflag_wake>=1) 2286 2454 !>jyg 2287 2455 ! 2456 2457 !! print *,'physiq. q_w(1,k), q_x(1,k) ', & 2458 !! (k, q_w(1,k), q_x(1,k),k=1,25) 2459 2288 2460 !jyg< 2289 2461 CALL alpale( debut, itap, dtime, paprs, omega, t_seri, & … … 2324 2496 !c CALL concvl (iflag_con,iflag_clos, 2325 2497 CALL concvl (iflag_clos, & 2326 dtime, paprs, pplay, k_upper_cv, t_ undi,q_undi, &2327 t_w ake,q_wake,wake_s, &2498 dtime, paprs, pplay, k_upper_cv, t_x,q_x, & 2499 t_w,q_w,wake_s, & 2328 2500 u_seri,v_seri,tr_seri,nbtr_tmp, & 2329 2501 ALE,ALP, & … … 2342 2514 wdtrainA,wdtrainM,wght_cvfd,qtc_cv,sigt_cv, & 2343 2515 tau_cld_cv,coefw_cld_cv,epmax_diag) 2516 2344 2517 ! RomP <<< 2345 2518 … … 2457 2630 2458 2631 CALL add_phys_tend(d_u_con, d_v_con, d_t_con, d_q_con, dql0, dqi0, paprs, & 2459 'convection',abortphy )2632 'convection',abortphy,flag_inhib_tend) 2460 2633 2461 2634 !------------------------------------------------------------------------- … … 2540 2713 ENDDO 2541 2714 ENDDO 2542 !nrlmd+jyg<2543 DO k=1,klev2544 DO i=1,klon2545 wdt_PBL(i,k) = 0.2546 wdq_PBL(i,k) = 0.2547 udt_PBL(i,k) = 0.2548 udq_PBL(i,k) = 0.2549 ENDDO2550 ENDDO2551 !2552 IF (mod(iflag_pbl_split,2) .EQ. 1) THEN2553 DO k=1,klev2554 DO i=1,klon2555 wdt_PBL(i,k) = wdt_PBL(i,k) + d_t_vdf_w(i,k)/dtime2556 wdq_PBL(i,k) = wdq_PBL(i,k) + d_q_vdf_w(i,k)/dtime2557 udt_PBL(i,k) = udt_PBL(i,k) + d_t_vdf_x(i,k)/dtime2558 udq_PBL(i,k) = udq_PBL(i,k) + d_q_vdf_x(i,k)/dtime2559 !! dt_dwn(i,k) = dt_dwn(i,k) + d_t_vdf_w(i,k)/dtime2560 !! dq_dwn(i,k) = dq_dwn(i,k) + d_q_vdf_w(i,k)/dtime2561 !! dt_a (i,k) = dt_a(i,k) + d_t_vdf_x(i,k)/dtime2562 !! dq_a (i,k) = dq_a(i,k) + d_q_vdf_x(i,k)/dtime2563 ENDDO2564 ENDDO2565 ENDIF2566 IF (mod(iflag_pbl_split/2,2) .EQ. 1) THEN2567 DO k=1,klev2568 DO i=1,klon2569 !! dt_dwn(i,k) = dt_dwn(i,k) + 0.2570 !! dq_dwn(i,k) = dq_dwn(i,k) + 0.2571 !! dt_a(i,k) = dt_a(i,k) + d_t_ajs(i,k)/dtime2572 !! dq_a(i,k) = dq_a(i,k) + d_q_ajs(i,k)/dtime2573 udt_PBL(i,k) = udt_PBL(i,k) + d_t_ajs(i,k)/dtime2574 udq_PBL(i,k) = udq_PBL(i,k) + d_q_ajs(i,k)/dtime2575 ENDDO2576 ENDDO2577 ENDIF2578 !>nrlmd+jyg2579 2715 2580 2716 IF (iflag_wake==2) THEN … … 2605 2741 ! 2606 2742 !calcul caracteristiques de la poche froide 2607 call calWAKE (paprs,pplay,dtime & 2608 ,t_seri,q_seri,omega & 2609 ,dt_dwn,dq_dwn,M_dwn,M_up & 2610 ,dt_a,dq_a,sigd & 2611 ,wdt_PBL,wdq_PBL & 2612 ,udt_PBL,udq_PBL & 2613 ,wake_deltat,wake_deltaq,wake_dth & 2614 ,wake_h,wake_s,wake_dens & 2615 ,wake_pe,wake_fip,wake_gfl & 2616 ,dt_wake,dq_wake & 2617 ,wake_k, t_undi,q_undi & 2618 ,wake_omgbdth,wake_dp_omgb & 2619 ,wake_dtKE,wake_dqKE & 2620 ,wake_dtPBL,wake_dqPBL & 2621 ,wake_omg,wake_dp_deltomg & 2622 ,wake_spread,wake_Cstar,wake_d_deltat_gw & 2623 ,wake_ddeltat,wake_ddeltaq) 2743 call calWAKE (iflag_wake_tend, paprs, pplay, dtime, & 2744 t_seri, q_seri, omega, & 2745 dt_dwn, dq_dwn, M_dwn, M_up, & 2746 dt_a, dq_a, & 2747 sigd, & 2748 wake_deltat, wake_deltaq, wake_s, wake_dens, & 2749 wake_dth, wake_h, & 2750 wake_pe, wake_fip, wake_gfl, & 2751 d_t_wake, d_q_wake, & 2752 wake_k, t_x, q_x, & 2753 wake_omgbdth, wake_dp_omgb, & 2754 wake_dtKE, wake_dqKE, & 2755 wake_omg, wake_dp_deltomg, & 2756 wake_spread, wake_Cstar, d_deltat_wk_gw, & 2757 d_deltat_wk, d_deltaq_wk, d_s_wk, d_dens_wk) 2624 2758 ! 2625 2759 !----------------------------------------------------------------------- 2626 2760 ! ajout des tendances des poches froides 2627 ! Faire rapidement disparaitre l'ancien dt_wake pour garder un d_t_wake2628 ! coherent avec les autres d_t_...2629 d_t_wake(:,:)=dt_wake(:,:)*dtime2630 d_q_wake(:,:)=dq_wake(:,:)*dtime2631 2761 CALL add_phys_tend(du0,dv0,d_t_wake,d_q_wake,dql0,dqi0,paprs,'wake', & 2632 abortphy )2762 abortphy,flag_inhib_tend) 2633 2763 !------------------------------------------------------------------------ 2764 2765 ! Increment Wake state variables 2766 IF (iflag_wake_tend .GT. 0.) THEN 2767 2768 CALL add_wake_tend & 2769 (d_deltat_wk, d_deltaq_wk, d_s_wk, d_dens_wk, wake_k, & 2770 'wake', abortphy) 2771 2772 ENDIF ! (iflag_wake_tend .GT. 0.) 2634 2773 2635 2774 endif ! (iflag_wake>=1) … … 2708 2847 t_therm(i,k) = t_seri(i,k) - wake_s(i)*wake_deltat(i,k) 2709 2848 q_therm(i,k) = q_seri(i,k) - wake_s(i)*wake_deltaq(i,k) 2849 u_therm(i,k) = u_seri(i,k) 2850 v_therm(i,k) = v_seri(i,k) 2710 2851 ENDDO 2711 2852 ENDDO … … 2716 2857 t_therm(i,k) = t_seri(i,k) 2717 2858 q_therm(i,k) = q_seri(i,k) 2859 u_therm(i,k) = u_seri(i,k) 2860 v_therm(i,k) = v_seri(i,k) 2718 2861 ENDDO 2719 2862 ENDDO … … 2722 2865 call calltherm(pdtphys & 2723 2866 ,pplay,paprs,pphi,weak_inversion & 2724 ! ,u_seri,v_seri,t_seri,q_seri,zqsat,debut & 2725 !jyg 2726 ,u_seri,v_seri,t_therm,q_therm,zqsat,debut & !jyg 2867 ! ,u_seri,v_seri,t_seri,q_seri,zqsat,debut & !jyg 2868 ,u_therm,v_therm,t_therm,q_therm,zqsat,debut & !jyg 2727 2869 ,d_u_ajs,d_v_ajs,d_t_ajs,d_q_ajs & 2728 2870 ,fm_therm,entr_therm,detr_therm & … … 2751 2893 DO i=1,klon 2752 2894 ! 2753 wake_deltat(i,k) = wake_deltat(i,k) - d_t_ajs(i,k) 2754 wake_deltaq(i,k) = wake_deltaq(i,k) - d_q_ajs(i,k) 2755 t_seri(i,k) = t_therm(i,k) + wake_s(i)*wake_deltat(i,k) 2756 q_seri(i,k) = q_therm(i,k) + wake_s(i)*wake_deltaq(i,k) 2895 d_deltat_the(i,k) = - d_t_ajs(i,k) 2896 d_deltaq_the(i,k) = - d_q_ajs(i,k) 2757 2897 ! 2758 2898 d_u_ajs(i,k) = d_u_ajs(i,k)*(1.-wake_s(i)) … … 2763 2903 ENDDO 2764 2904 ENDDO 2765 ELSE 2766 DO k=1,klev 2767 DO i=1,klon 2768 t_seri(i,k) = t_therm(i,k) 2769 q_seri(i,k) = q_therm(i,k) 2770 ENDDO 2771 ENDDO 2772 ENDIF 2773 !>jyg 2774 !jyg< 2905 ! 2906 CALL add_wake_tend & 2907 (d_deltat_the, d_deltaq_the, dsig0, ddens0, wkoccur1, 'the', abortphy) 2908 ! 2909 ENDIF ! (mod(iflag_pbl_split/2,2) .EQ. 1) 2910 ! 2911 CALL add_phys_tend(d_u_ajs,d_v_ajs,d_t_ajs,d_q_ajs, & 2912 dql0,dqi0,paprs,'thermals', abortphy,flag_inhib_tend) 2913 ! 2775 2914 ! 2776 2915 CALL alpale_th( dtime, lmax_th, t_seri, cell_area, & … … 2779 2918 alp_bl, alp_bl_stat, & 2780 2919 proba_notrig, random_notrig) 2920 !>jyg 2781 2921 2782 2922 ! ------------------------------------------------------------------ … … 2833 2973 ! ajout des tendances de l'ajustement sec ou des thermiques 2834 2974 CALL add_phys_tend(du0,dv0,d_t_ajsb,d_q_ajsb,dql0,dqi0,paprs, & 2835 'ajsb',abortphy )2975 'ajsb',abortphy,flag_inhib_tend) 2836 2976 d_t_ajs(:,:)=d_t_ajs(:,:)+d_t_ajsb(:,:) 2837 2977 d_q_ajs(:,:)=d_q_ajs(:,:)+d_q_ajsb(:,:) … … 2892 3032 2893 3033 CALL add_phys_tend(du0,dv0,d_t_lsc,d_q_lsc,d_ql_lsc,d_qi_lsc,paprs, & 2894 'lsc',abortphy) 3034 'lsc',abortphy,flag_inhib_tend) 3035 rain_num(:)=0. 3036 DO k = 1, klev ! re-evaporation de l'eau liquide nuageuse 3037 DO i = 1, klon 3038 IF (ql_seri(i,k)>oliqmax) THEN 3039 rain_num(i)=rain_num(i)+(ql_seri(i,k)-oliqmax)*zmasse(i,k)/pdtphys 3040 ql_seri(i,k)=oliqmax 3041 ENDIF 3042 ENDDO 3043 ENDDO 3044 2895 3045 !--------------------------------------------------------------------------- 2896 3046 DO k = 1, klev … … 2995 3145 enddo 2996 3146 enddo 2997 2998 !2999 !jq - introduce the aerosol direct and first indirect radiative forcings3000 !jq - Johannes Quaas, 27/11/2003 (quaas@lmd.jussieu.fr)3001 IF (flag_aerosol .gt. 0) THEN3002 IF (iflag_rrtm .EQ. 0) THEN !--old radiation3003 IF (.NOT. aerosol_couple) THEN3004 !3005 CALL readaerosol_optic( &3006 debut, new_aod, flag_aerosol, itap, jD_cur-jD_ref, &3007 pdtphys, pplay, paprs, t_seri, rhcl, presnivs, &3008 mass_solu_aero, mass_solu_aero_pi, &3009 tau_aero, piz_aero, cg_aero, &3010 tausum_aero, tau3d_aero)3011 ENDIF3012 ELSE ! RRTM radiation3013 IF (aerosol_couple .AND. config_inca == 'aero' ) THEN3014 abort_message='config_inca=aero et rrtm=1 impossible'3015 call abort_physic(modname,abort_message,1)3016 ELSE3017 !3018 #ifdef CPP_RRTM3019 IF (NSW.EQ.6) THEN3020 !--new aerosol properties3021 !3022 CALL readaerosol_optic_rrtm( debut, aerosol_couple, &3023 new_aod, flag_aerosol, itap, jD_cur-jD_ref, &3024 pdtphys, pplay, paprs, t_seri, rhcl, presnivs, &3025 tr_seri, mass_solu_aero, mass_solu_aero_pi, &3026 tau_aero_sw_rrtm, piz_aero_sw_rrtm, cg_aero_sw_rrtm, &3027 tausum_aero, tau3d_aero)3028 3029 ELSE IF (NSW.EQ.2) THEN3030 !--for now we use the old aerosol properties3031 !3032 CALL readaerosol_optic( &3033 debut, new_aod, flag_aerosol, itap, jD_cur-jD_ref, &3034 pdtphys, pplay, paprs, t_seri, rhcl, presnivs, &3035 mass_solu_aero, mass_solu_aero_pi, &3036 tau_aero, piz_aero, cg_aero, &3037 tausum_aero, tau3d_aero)3038 !3039 !--natural aerosols3040 tau_aero_sw_rrtm(:,:,1,:)=tau_aero(:,:,3,:)3041 piz_aero_sw_rrtm(:,:,1,:)=piz_aero(:,:,3,:)3042 cg_aero_sw_rrtm (:,:,1,:)=cg_aero (:,:,3,:)3043 !--all aerosols3044 tau_aero_sw_rrtm(:,:,2,:)=tau_aero(:,:,2,:)3045 piz_aero_sw_rrtm(:,:,2,:)=piz_aero(:,:,2,:)3046 cg_aero_sw_rrtm (:,:,2,:)=cg_aero (:,:,2,:)3047 ELSE3048 abort_message='Only NSW=2 or 6 are possible with ' &3049 // 'aerosols and iflag_rrtm=1'3050 call abort_physic(modname,abort_message,1)3051 ENDIF3052 3053 !--call LW optical properties for tropospheric aerosols3054 !--only works for INCA aerosol (aerosol_couple = TRUE)3055 CALL aeropt_lw_rrtm(aerosol_couple,paprs,tr_seri)3056 !3057 #else3058 abort_message='You should compile with -rrtm if running ' &3059 // 'with iflag_rrtm=1'3060 call abort_physic(modname,abort_message,1)3061 #endif3062 !3063 ENDIF3064 ENDIF3065 ELSE3066 tausum_aero(:,:,:) = 0.3067 IF (iflag_rrtm .EQ. 0) THEN !--old radiation3068 tau_aero(:,:,:,:) = 1.e-153069 piz_aero(:,:,:,:) = 1.3070 cg_aero(:,:,:,:) = 0.3071 ELSE3072 tau_aero_sw_rrtm(:,:,:,:) = 1.e-153073 tau_aero_lw_rrtm(:,:,:,:) = 1.e-153074 piz_aero_sw_rrtm(:,:,:,:) = 1.03075 cg_aero_sw_rrtm(:,:,:,:) = 0.03076 ENDIF3077 ENDIF3078 !3079 !--STRAT AEROSOL3080 !--updates tausum_aero,tau_aero,piz_aero,cg_aero3081 IF (flag_aerosol_strat.GT.0) THEN3082 IF (prt_level .GE.10) THEN3083 PRINT *,'appel a readaerosolstrat', mth_cur3084 ENDIF3085 IF (iflag_rrtm.EQ.0) THEN3086 IF (flag_aerosol_strat.EQ.1) THEN3087 CALL readaerosolstrato(debut)3088 ELSE3089 abort_message='flag_aerosol_strat must equal 1 for rrtm=0'3090 call abort_physic(modname,abort_message,1)3091 ENDIF3092 ELSE3093 #ifdef CPP_RRTM3094 IF (flag_aerosol_strat.EQ.1) THEN3095 CALL readaerosolstrato1_rrtm(debut)3096 ELSEIF (flag_aerosol_strat.EQ.2) THEN3097 CALL stratosphere_mask(t_seri, pplay, latitude_deg)3098 CALL readaerosolstrato2_rrtm(debut)3099 ELSE3100 abort_message='flag_aerosol_strat must equal 1 or 2 for rrtm=1'3101 call abort_physic(modname,abort_message,1)3102 ENDIF3103 #else3104 abort_message='You should compile with -rrtm if running ' &3105 // 'with iflag_rrtm=1'3106 call abort_physic(modname,abort_message,1)3107 #endif3108 ENDIF3109 ENDIF3110 !--fin STRAT AEROSOL3111 3147 3112 3148 ! On prend la somme des fractions nuageuses et des contenus en eau … … 3320 3356 #endif 3321 3357 END IF !type_trac = inca 3322 ! 3323 ! Calculer les parametres optiques des nuages et quelques 3324 ! parametres pour diagnostiques: 3325 ! 3326 3327 IF (aerosol_couple.AND.config_inca=='aero') THEN 3328 mass_solu_aero(:,:) = ccm(:,:,1) 3329 mass_solu_aero_pi(:,:) = ccm(:,:,2) 3330 END IF 3331 3332 if (ok_newmicro) then 3333 IF (iflag_rrtm.NE.0) THEN 3358 3359 3360 ! 3361 ! Appeler le rayonnement mais calculer tout d'abord l'albedo du sol. 3362 ! 3363 IF (MOD(itaprad,radpas).EQ.0) THEN 3364 3365 ! 3366 !jq - introduce the aerosol direct and first indirect radiative forcings 3367 !jq - Johannes Quaas, 27/11/2003 (quaas@lmd.jussieu.fr) 3368 IF (flag_aerosol .gt. 0) THEN 3369 IF (iflag_rrtm .EQ. 0) THEN !--old radiation 3370 IF (.NOT. aerosol_couple) THEN 3371 ! 3372 CALL readaerosol_optic( & 3373 debut, new_aod, flag_aerosol, itap, jD_cur-jD_ref, & 3374 pdtphys, pplay, paprs, t_seri, rhcl, presnivs, & 3375 mass_solu_aero, mass_solu_aero_pi, & 3376 tau_aero, piz_aero, cg_aero, & 3377 tausum_aero, tau3d_aero) 3378 ENDIF 3379 ELSE ! RRTM radiation 3380 IF (aerosol_couple .AND. config_inca == 'aero' ) THEN 3381 abort_message='config_inca=aero et rrtm=1 impossible' 3382 call abort_physic(modname,abort_message,1) 3383 ELSE 3384 ! 3334 3385 #ifdef CPP_RRTM 3335 IF (ok_cdnc.AND.NRADLP.NE.3) THEN 3386 IF (NSW.EQ.6) THEN 3387 !--new aerosol properties 3388 ! 3389 CALL readaerosol_optic_rrtm( debut, aerosol_couple, & 3390 new_aod, flag_aerosol, itap, jD_cur-jD_ref, & 3391 pdtphys, pplay, paprs, t_seri, rhcl, presnivs, & 3392 tr_seri, mass_solu_aero, mass_solu_aero_pi, & 3393 tau_aero_sw_rrtm, piz_aero_sw_rrtm, cg_aero_sw_rrtm, & 3394 tausum_aero, tau3d_aero) 3395 3396 ELSE IF (NSW.EQ.2) THEN 3397 !--for now we use the old aerosol properties 3398 ! 3399 CALL readaerosol_optic( & 3400 debut, new_aod, flag_aerosol, itap, jD_cur-jD_ref, & 3401 pdtphys, pplay, paprs, t_seri, rhcl, presnivs, & 3402 mass_solu_aero, mass_solu_aero_pi, & 3403 tau_aero, piz_aero, cg_aero, & 3404 tausum_aero, tau3d_aero) 3405 ! 3406 !--natural aerosols 3407 tau_aero_sw_rrtm(:,:,1,:)=tau_aero(:,:,3,:) 3408 piz_aero_sw_rrtm(:,:,1,:)=piz_aero(:,:,3,:) 3409 cg_aero_sw_rrtm (:,:,1,:)=cg_aero (:,:,3,:) 3410 !--all aerosols 3411 tau_aero_sw_rrtm(:,:,2,:)=tau_aero(:,:,2,:) 3412 piz_aero_sw_rrtm(:,:,2,:)=piz_aero(:,:,2,:) 3413 cg_aero_sw_rrtm (:,:,2,:)=cg_aero (:,:,2,:) 3414 ELSE 3415 abort_message='Only NSW=2 or 6 are possible with ' & 3416 // 'aerosols and iflag_rrtm=1' 3417 call abort_physic(modname,abort_message,1) 3418 ENDIF 3419 3420 !--call LW optical properties for tropospheric aerosols 3421 !--only works for INCA aerosol (aerosol_couple = TRUE) 3422 CALL aeropt_lw_rrtm(aerosol_couple,paprs,tr_seri) 3423 ! 3424 #else 3425 abort_message='You should compile with -rrtm if running ' & 3426 // 'with iflag_rrtm=1' 3427 call abort_physic(modname,abort_message,1) 3428 #endif 3429 ! 3430 ENDIF 3431 ENDIF 3432 ELSE 3433 tausum_aero(:,:,:) = 0. 3434 mass_solu_aero(:,:) = 0. 3435 mass_solu_aero_pi(:,:) = 0. 3436 IF (iflag_rrtm .EQ. 0) THEN !--old radiation 3437 tau_aero(:,:,:,:) = 1.e-15 3438 piz_aero(:,:,:,:) = 1. 3439 cg_aero(:,:,:,:) = 0. 3440 ELSE 3441 tau_aero_sw_rrtm(:,:,:,:) = 1.e-15 3442 tau_aero_lw_rrtm(:,:,:,:) = 1.e-15 3443 piz_aero_sw_rrtm(:,:,:,:) = 1.0 3444 cg_aero_sw_rrtm(:,:,:,:) = 0.0 3445 ENDIF 3446 ENDIF 3447 ! 3448 !--STRAT AEROSOL 3449 !--updates tausum_aero,tau_aero,piz_aero,cg_aero 3450 IF (flag_aerosol_strat.GT.0) THEN 3451 IF (prt_level .GE.10) THEN 3452 PRINT *,'appel a readaerosolstrat', mth_cur 3453 ENDIF 3454 IF (iflag_rrtm.EQ.0) THEN 3455 IF (flag_aerosol_strat.EQ.1) THEN 3456 CALL readaerosolstrato(debut) 3457 ELSE 3458 abort_message='flag_aerosol_strat must equal 1 for rrtm=0' 3459 CALL abort_physic(modname,abort_message,1) 3460 ENDIF 3461 ELSE 3462 #ifdef CPP_RRTM 3463 IF (flag_aerosol_strat.EQ.1) THEN 3464 CALL readaerosolstrato1_rrtm(debut) 3465 ELSEIF (flag_aerosol_strat.EQ.2) THEN 3466 CALL stratosphere_mask(t_seri, pplay, latitude_deg) 3467 CALL readaerosolstrato2_rrtm(debut) 3468 ELSE 3469 abort_message='flag_aerosol_strat must equal 1 or 2 for rrtm=1' 3470 CALL abort_physic(modname,abort_message,1) 3471 ENDIF 3472 #else 3473 abort_message='You should compile with -rrtm if running ' & 3474 // 'with iflag_rrtm=1' 3475 CALL abort_physic(modname,abort_message,1) 3476 #endif 3477 ENDIF 3478 ENDIF 3479 !--fin STRAT AEROSOL 3480 ! 3481 3482 ! Calculer les parametres optiques des nuages et quelques 3483 ! parametres pour diagnostiques: 3484 ! 3485 IF (aerosol_couple.AND.config_inca=='aero') THEN 3486 mass_solu_aero(:,:) = ccm(:,:,1) 3487 mass_solu_aero_pi(:,:) = ccm(:,:,2) 3488 END IF 3489 3490 IF (ok_newmicro) then 3491 IF (iflag_rrtm.NE.0) THEN 3492 #ifdef CPP_RRTM 3493 IF (ok_cdnc.AND.NRADLP.NE.3) THEN 3336 3494 abort_message='RRTM choix incoherent NRADLP doit etre egal a 3 ' & 3337 3495 // 'pour ok_cdnc' 3338 callabort_physic(modname,abort_message,1)3339 endif3496 CALL abort_physic(modname,abort_message,1) 3497 ENDIF 3340 3498 #else 3341 3499 3342 abort_message='You should compile with -rrtm if running with ' & 3343 // 'iflag_rrtm=1' 3344 call abort_physic(modname,abort_message,1) 3500 abort_message='You should compile with -rrtm if running with '//'iflag_rrtm=1' 3501 CALL abort_physic(modname,abort_message,1) 3345 3502 #endif 3503 ENDIF 3504 CALL newmicro (ok_cdnc, bl95_b0, bl95_b1, & 3505 paprs, pplay, t_seri, cldliq, cldfra, & 3506 cldtau, cldemi, cldh, cldl, cldm, cldt, cldq, & 3507 flwp, fiwp, flwc, fiwc, & 3508 mass_solu_aero, mass_solu_aero_pi, & 3509 cldtaupi, re, fl, ref_liq, ref_ice, & 3510 ref_liq_pi, ref_ice_pi) 3511 ELSE 3512 CALL nuage (paprs, pplay, & 3513 t_seri, cldliq, cldfra, cldtau, cldemi, & 3514 cldh, cldl, cldm, cldt, cldq, & 3515 ok_aie, & 3516 mass_solu_aero, mass_solu_aero_pi, & 3517 bl95_b0, bl95_b1, & 3518 cldtaupi, re, fl) 3346 3519 ENDIF 3347 CALL newmicro (ok_cdnc, bl95_b0, bl95_b1, & 3348 paprs, pplay, t_seri, cldliq, cldfra, & 3349 cldtau, cldemi, cldh, cldl, cldm, cldt, cldq, & 3350 flwp, fiwp, flwc, fiwc, & 3351 mass_solu_aero, mass_solu_aero_pi, & 3352 cldtaupi, re, fl, ref_liq, ref_ice, & 3353 ref_liq_pi, ref_ice_pi) 3354 else 3355 CALL nuage (paprs, pplay, & 3356 t_seri, cldliq, cldfra, cldtau, cldemi, & 3357 cldh, cldl, cldm, cldt, cldq, & 3358 ok_aie, & 3359 mass_solu_aero, mass_solu_aero_pi, & 3360 bl95_b0, bl95_b1, & 3361 cldtaupi, re, fl) 3362 endif 3363 ! 3364 !IM betaCRF 3365 ! 3366 cldtaurad = cldtau 3367 cldtaupirad = cldtaupi 3368 cldemirad = cldemi 3369 cldfrarad = cldfra 3370 3371 ! 3372 if(lon1_beta.EQ.-180..AND.lon2_beta.EQ.180..AND. & 3373 lat1_beta.EQ.90..AND.lat2_beta.EQ.-90.) THEN 3374 ! 3375 ! global 3376 ! 3377 DO k=1, klev 3378 DO i=1, klon 3379 if (pplay(i,k).GE.pfree) THEN 3380 beta(i,k) = beta_pbl 3381 else 3382 beta(i,k) = beta_free 3383 endif 3384 if (mskocean_beta) THEN 3385 beta(i,k) = beta(i,k) * pctsrf(i,is_oce) 3386 endif 3387 cldtaurad(i,k) = cldtau(i,k) * beta(i,k) 3388 cldtaupirad(i,k) = cldtaupi(i,k) * beta(i,k) 3389 cldemirad(i,k) = cldemi(i,k) * beta(i,k) 3390 cldfrarad(i,k) = cldfra(i,k) * beta(i,k) 3391 ENDDO 3392 ENDDO 3393 ! 3394 else 3395 ! 3396 ! regional 3397 ! 3398 DO k=1, klev 3399 DO i=1,klon 3400 ! 3401 if (longitude_deg(i).ge.lon1_beta.AND. & 3402 longitude_deg(i).le.lon2_beta.AND. & 3403 latitude_deg(i).le.lat1_beta.AND. & 3404 latitude_deg(i).ge.lat2_beta) THEN 3405 if (pplay(i,k).GE.pfree) THEN 3520 ! 3521 !IM betaCRF 3522 ! 3523 cldtaurad = cldtau 3524 cldtaupirad = cldtaupi 3525 cldemirad = cldemi 3526 cldfrarad = cldfra 3527 3528 ! 3529 IF (lon1_beta.EQ.-180..AND.lon2_beta.EQ.180..AND. & 3530 lat1_beta.EQ.90..AND.lat2_beta.EQ.-90.) THEN 3531 ! 3532 ! global 3533 ! 3534 DO k=1, klev 3535 DO i=1, klon 3536 IF (pplay(i,k).GE.pfree) THEN 3406 3537 beta(i,k) = beta_pbl 3407 else3538 ELSE 3408 3539 beta(i,k) = beta_free 3409 endif3410 if(mskocean_beta) THEN3540 ENDIF 3541 IF (mskocean_beta) THEN 3411 3542 beta(i,k) = beta(i,k) * pctsrf(i,is_oce) 3412 endif3543 ENDIF 3413 3544 cldtaurad(i,k) = cldtau(i,k) * beta(i,k) 3414 3545 cldtaupirad(i,k) = cldtaupi(i,k) * beta(i,k) 3415 3546 cldemirad(i,k) = cldemi(i,k) * beta(i,k) 3416 3547 cldfrarad(i,k) = cldfra(i,k) * beta(i,k) 3417 endif 3548 ENDDO 3549 ENDDO 3550 ! 3551 ELSE 3552 ! 3553 ! regional 3554 ! 3555 DO k=1, klev 3556 DO i=1,klon 3557 ! 3558 IF (longitude_deg(i).ge.lon1_beta.AND. & 3559 longitude_deg(i).le.lon2_beta.AND. & 3560 latitude_deg(i).le.lat1_beta.AND. & 3561 latitude_deg(i).ge.lat2_beta) THEN 3562 IF (pplay(i,k).GE.pfree) THEN 3563 beta(i,k) = beta_pbl 3564 ELSE 3565 beta(i,k) = beta_free 3566 ENDIF 3567 IF (mskocean_beta) THEN 3568 beta(i,k) = beta(i,k) * pctsrf(i,is_oce) 3569 ENDIF 3570 cldtaurad(i,k) = cldtau(i,k) * beta(i,k) 3571 cldtaupirad(i,k) = cldtaupi(i,k) * beta(i,k) 3572 cldemirad(i,k) = cldemi(i,k) * beta(i,k) 3573 cldfrarad(i,k) = cldfra(i,k) * beta(i,k) 3574 ENDIF 3418 3575 ! 3576 ENDDO 3419 3577 ENDDO 3420 ENDDO 3421 ! 3422 endif 3423 ! 3424 ! Appeler le rayonnement mais calculer tout d'abord l'albedo du sol. 3425 ! 3426 IF (MOD(itaprad,radpas).EQ.0) THEN 3427 3428 !albedo SB >>> 3429 if(ok_chlorophyll)then 3578 ! 3579 ENDIF 3580 3581 !lecture de la chlorophylle pour le nouvel albedo de Sunghye Baek 3582 IF (ok_chlorophyll) THEN 3430 3583 print*,"-- reading chlorophyll" 3431 call readchlorophyll(debut) 3432 endif 3433 !do i=1,klon 3434 !if(chl_con(i)>1.) print*,i,chl_con(i),pctsrf(i,is_ter) 3435 !enddo 3436 !albedo SB <<< 3584 CALL readchlorophyll(debut) 3585 ENDIF 3437 3586 3438 3587 !--if ok_suntime_rrtm we use ancillay data for RSUN … … 3483 3632 cldtaupirad, & 3484 3633 topswai_aero, solswai_aero) 3485 3486 3634 #endif 3487 3635 ELSE … … 3498 3646 print *,' ->radlwsw, number 1 ' 3499 3647 ENDIF 3500 3501 3648 ! 3502 3649 CALL radlwsw & … … 3569 3716 !albedo SB <<< 3570 3717 t_seri,q_seri,wo, & 3571 cldfra , cldemi, cldtau, &3718 cldfrarad, cldemirad, cldtaurad, & 3572 3719 ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie, flag_aerosol, & 3573 3720 flag_aerosol_strat, & … … 3638 3785 ! 3639 3786 radsol=solsw*swradcorr+sollw 3787 3640 3788 if (ok_4xCO2atm) then 3641 3789 radsolp=solswp*swradcorr+sollwp … … 3654 3802 ENDDO 3655 3803 3656 CALL add_phys_tend(du0,dv0,d_t_swr,dq0,dql0,dqi0,paprs,'SW',abortphy )3657 CALL add_phys_tend(du0,dv0,d_t_lwr,dq0,dql0,dqi0,paprs,'LW',abortphy )3804 CALL add_phys_tend(du0,dv0,d_t_swr,dq0,dql0,dqi0,paprs,'SW',abortphy,flag_inhib_tend) 3805 CALL add_phys_tend(du0,dv0,d_t_lwr,dq0,dql0,dqi0,paprs,'LW',abortphy,flag_inhib_tend) 3658 3806 3659 3807 ! … … 3739 3887 ! ajout des tendances de la trainee de l'orographie 3740 3888 CALL add_phys_tend(d_u_oro,d_v_oro,d_t_oro,dq0,dql0,dqi0,paprs,'oro', & 3741 abortphy )3889 abortphy,flag_inhib_tend) 3742 3890 !---------------------------------------------------------------------- 3743 3891 ! … … 3785 3933 ! ajout des tendances de la portance de l'orographie 3786 3934 CALL add_phys_tend(d_u_lif, d_v_lif, d_t_lif, dq0, dql0, dqi0, paprs, & 3787 'lif', abortphy )3935 'lif', abortphy,flag_inhib_tend) 3788 3936 ENDIF ! fin de test sur ok_orolf 3789 3937 … … 3808 3956 d_t_hin(:, :)=0. 3809 3957 CALL add_phys_tend(du_gwd_hines, dv_gwd_hines, d_t_hin, dq0, dql0, & 3810 dqi0, paprs, 'hin', abortphy )3958 dqi0, paprs, 'hin', abortphy,flag_inhib_tend) 3811 3959 ENDIF 3812 3960 … … 3825 3973 3826 3974 CALL add_phys_tend(du_gwd_front, dv_gwd_front, dt0, dq0, dql0, dqi0, & 3827 paprs, 'front_gwd_rando', abortphy )3975 paprs, 'front_gwd_rando', abortphy,flag_inhib_tend) 3828 3976 ENDIF 3829 3977 … … 3833 3981 du_gwd_rando, dv_gwd_rando, east_gwstress, west_gwstress) 3834 3982 CALL add_phys_tend(du_gwd_rando, dv_gwd_rando, dt0, dq0, dql0, dqi0, & 3835 paprs, 'flott_gwd_rando', abortphy )3983 paprs, 'flott_gwd_rando', abortphy,flag_inhib_tend) 3836 3984 zustr_gwd_rando=0. 3837 3985 zvstr_gwd_rando=0. … … 3896 4044 ! ajout de la tendance d'humidite due au methane 3897 4045 CALL add_phys_tend(du0, dv0, dt0, d_q_ch4*dtime, dql0, dqi0, paprs, & 3898 'q_ch4', abortphy )4046 'q_ch4', abortphy,flag_inhib_tend) 3899 4047 END IF 3900 4048 ! … … 3977 4125 sh_in(:,:) = qx(:,:,ivap) 3978 4126 END IF 4127 4128 #ifdef CPP_Dust 4129 CALL phytracr_spl ( debut,lafin , jD_cur,jH_cur,iflag_con, & ! I 4130 pdtphys,ftsol, & ! I 4131 t,q_seri,paprs,pplay,RHcl, & ! I 4132 pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, & ! I 4133 coefh(1:klon,1:klev,is_ave), cdragh, cdragm, u1, v1, & ! I 4134 u_seri, v_seri, latitude_deg, longitude_deg, & 4135 pphis,pctsrf,pmflxr,pmflxs,prfl,psfl, & ! I 4136 da,phi,phi2,d1a,dam,mp,ep,sigd,sij,clw,elij, & ! I 4137 epmlmMm,eplaMm,upwd,dnwd,itop_con,ibas_con, & ! I 4138 ev,wdtrainA, wdtrainM,wght_cvfd, & ! I 4139 fm_therm, entr_therm, rneb, & ! I 4140 beta_prec_fisrt,beta_prec, & !I 4141 zu10m,zv10m,wstar,ale_bl,ale_wake, & ! I 4142 d_tr_dyn,tr_seri) 4143 4144 #else 3979 4145 3980 4146 call phytrac ( & … … 4002 4168 d_tr_dyn, & !<<RomP 4003 4169 tr_seri) 4170 #endif 4004 4171 4005 4172 IF (offline) THEN … … 4333 4500 !On effectue les sorties: 4334 4501 4502 #ifdef CPP_Dust 4503 CALL phys_output_write_spl(itap, pdtphys, paprs, pphis, & 4504 pplay, lmax_th, aerosol_couple, & 4505 ok_ade, ok_aie, ivap, new_aod, ok_sync, & 4506 ptconv, read_climoz, clevSTD, & 4507 ptconvth, d_t, qx, d_qx, d_tr_dyn, zmasse, & 4508 flag_aerosol, flag_aerosol_strat, ok_cdnc) 4509 #else 4335 4510 CALL phys_output_write(itap, pdtphys, paprs, pphis, & 4336 4511 pplay, lmax_th, aerosol_couple, & … … 4339 4514 ptconvth, d_t, qx, d_qx, zmasse, & 4340 4515 flag_aerosol, flag_aerosol_strat, ok_cdnc) 4341 4342 include "write_histday_seri.h" 4516 #endif 4517 4343 4518 4344 4519 CALL write_paramLMDZ_phy(itap,nid_ctesGCM,ok_sync) -
LMDZ5/branches/testing/libf/phylmd/phytrac_mod.F90
r2408 r2641 570 570 CASE('inca') 571 571 ! -- CHIMIE INCA config_inca = aero or chem -- 572 573 CALL tracinca(& 574 nstep, julien, gmtime, lafin, & 575 pdtphys, t_seri, paprs, pplay, & 576 pmfu, upwd, ftsol, pctsrf, pphis, & 577 pphi, albsol, sh, rh, & 578 cldfra, rneb, diafra, cldliq, & 579 itop_con, ibas_con, pmflxr, pmflxs, & 580 prfl, psfl, aerosol_couple, flxmass_w, & 581 tau_aero, piz_aero, cg_aero, ccm, & 582 rfname, & 583 tr_seri, source) 584 572 ! Appel fait en fin de phytrac pour avoir les emissions modifiees par 573 ! la couche limite et la convection avant le calcul de la chimie 585 574 CASE('repr') 586 575 ! -- CHIMIE REPROBUS -- … … 895 884 END IF ! lessivage 896 885 886 887 ! -- CHIMIE INCA config_inca = aero or chem -- 888 IF (type_trac == 'inca') THEN 889 890 CALL tracinca(& 891 nstep, julien, gmtime, lafin, & 892 pdtphys, t_seri, paprs, pplay, & 893 pmfu, upwd, ftsol, pctsrf, pphis, & 894 pphi, albsol, sh, rh, & 895 cldfra, rneb, diafra, cldliq, & 896 itop_con, ibas_con, pmflxr, pmflxs, & 897 prfl, psfl, aerosol_couple, flxmass_w, & 898 tau_aero, piz_aero, cg_aero, ccm, & 899 rfname, & 900 tr_seri, source) 901 902 903 ENDIF 897 904 !============================================================= 898 905 ! Ecriture des sorties -
LMDZ5/branches/testing/libf/phylmd/radlwsw_m.F90
r2542 r2641 465 465 PWV(i,k) = MAX (q(iof+i,k), 1.0e-12) 466 466 PQS(i,k) = PWV(i,k) 467 ! Confert from column density of ozone in a cell, in kDU, to a mass fraction 467 468 POZON(i,k, :) = wo(iof+i, k, :) * RG * dobson_u * 1e3 & 468 469 / (paprs(iof+i, k) - paprs(iof+i, k+1)) -
LMDZ5/branches/testing/libf/phylmd/rrtm/aeropt_5wv_rrtm.F90
r2594 r2641 94 94 REAL :: od670aer(klon) ! epaisseur optique aerosol extinction 670 nm 95 95 REAL :: fac 96 REAL :: zdp1(klon,klev)97 96 INTEGER, ALLOCATABLE, DIMENSION(:) :: aerosol_name 98 97 INTEGER :: nb_aer, itau 99 98 LOGICAL :: ok_itau 100 99 101 REAL :: dh(KLON,KLEV)100 REAL :: zdh(klon,klev) 102 101 103 102 ! Soluble components 1- BC soluble; 2- POM soluble; 3- SO4 acc.; 4- SO4 coarse; 5 seasalt super-coarse; 6 seasalt coarse; 7 seasalt acc. … … 106 105 REAL :: alpha_aeri_5wv(las,naero_insoluble) ! Ext. coeff. ** m2/g 107 106 108 REAL, DIMENSION(klon,klev,naero_tot) :: mass_temp109 110 107 ! 111 108 ! Proprietes optiques 112 109 ! 113 110 REAL :: fact_RH(nbre_RH) 114 LOGICAL :: used_tau(naero_tot)115 111 INTEGER :: n 116 112 … … 209 205 ai(:) = 0. 210 206 tausum(:,:,:) = 0. 207 tau(:,:,:,:)=0. 211 208 212 209 DO k=1, klev 213 210 DO i=1, klon 214 211 zrho=pplay(i,k)/t_seri(i,k)/RD ! kg/m3 215 dh(i,k)=pdel(i,k)/(RG*zrho) 216 !CDIR UNROLL=naero_spc 217 mass_temp(i,k,:) = m_allaer(i,k,:) / zrho / 1.e+9 218 zdp1(i,k)=pdel(i,k)/(RG*delt) ! air mass auxiliary variable --> zdp1 [kg/(m^2 *s)] 212 zdh(i,k)=pdel(i,k)/(RG*zrho) ! m 219 213 ENDDO 220 214 ENDDO … … 270 264 ! 271 265 272 !CDIR ON_ADB(RH_tab)273 !CDIR ON_ADB(fact_RH)274 !CDIR NOVECTOR275 266 DO n=1,nbre_RH-1 276 267 fact_RH(n)=1./(RH_tab(n+1)-RH_tab(n)) 277 268 ENDDO 278 269 279 DO k=1, KLEV 280 !CDIR ON_ADB(RH_tab) 281 !CDIR ON_ADB(fact_RH) 282 DO i=1, KLON 270 DO k=1, klev 271 DO i=1, klon 283 272 rh(i,k)=MIN(RHcl(i,k)*100.,RH_MAX) 284 273 RH_num(i,k) = INT( rh(i,k)/10. + 1.) … … 289 278 ENDDO 290 279 291 !CDIR SHORTLOOP292 used_tau(:)=.FALSE.293 294 280 DO m=1,nb_aer ! tau is only computed for each mass 295 281 fac=1.0 … … 330 316 ENDIF 331 317 332 IF (soluble) then333 used_tau(spsol)=.TRUE.334 ELSE335 used_tau(naero_soluble+spinsol)=.TRUE.336 ENDIF337 338 318 aerindex=aerosol_name(m) 339 319 340 320 DO la=1,las 341 321 322 !--only 550, 670 and 865 nm are used 323 IF (la.NE.la550.AND.la.NE.la670.AND.la.NE.la865) CYCLE 324 342 325 IF (soluble) THEN ! For soluble aerosol 343 326 344 DO k=1, KLEV345 DO i=1, KLON327 DO k=1, klev 328 DO i=1, klon 346 329 tau_ae5wv_int = alpha_aers_5wv(RH_num(i,k),la,spsol)+DELTA(i,k)* & 347 330 (alpha_aers_5wv(RH_num(i,k)+1,la,spsol) - & 348 331 alpha_aers_5wv(RH_num(i,k),la,spsol)) 349 tau(i,k,la,aerindex) = mass_temp(i,k,aerindex)*1000.*zdp1(i,k)* & 350 tau_ae5wv_int*delt*fac 332 tau(i,k,la,aerindex) = m_allaer(i,k,aerindex)/1.e6*zdh(i,k)*tau_ae5wv_int*fac 351 333 tausum(i,la,aerindex)=tausum(i,la,aerindex)+tau(i,k,la,aerindex) 352 334 ENDDO … … 355 337 ELSE ! For insoluble aerosol 356 338 357 DO k=1, KLEV358 DO i=1, KLON339 DO k=1, klev 340 DO i=1, klon 359 341 tau_ae5wv_int = alpha_aeri_5wv(la,spinsol) 360 tau(i,k,la,aerindex) = mass_temp(i,k,aerindex)*1000.*zdp1(i,k)* & 361 tau_ae5wv_int*delt*fac 342 tau(i,k,la,aerindex) = m_allaer(i,k,aerindex)/1.e6*zdh(i,k)*tau_ae5wv_int*fac 362 343 tausum(i,la,aerindex)= tausum(i,la,aerindex)+tau(i,k,la,aerindex) 363 344 ENDDO … … 369 350 ENDDO ! Boucle sur les masses de traceurs 370 351 371 DO m=1,naero_tot 372 IF (.NOT.used_tau(m)) tau(:,:,:,m)=0. 373 ENDDO 374 375 DO i=1, klon 376 od550aer(i)=0. 377 DO m=1,naero_tot 378 od550aer(i)=od550aer(i)+tausum(i,la550,m) 379 END DO 380 END DO 381 382 DO i=1, klon 383 od670aer(i)=0. 384 DO m=1,naero_tot 385 od670aer(i)=od670aer(i)+tausum(i,la670,m) 386 END DO 387 END DO 388 389 DO i=1, klon 390 od865aer(i)=0. 391 DO m=1,naero_tot 392 od865aer(i)=od865aer(i)+tausum(i,la865,m) 393 END DO 394 END DO 395 396 DO i=1, klon 397 DO k=1, KLEV 398 ec550aer(i,k)=0. 399 DO m=1,naero_tot 400 ec550aer(i,k)=ec550aer(i,k)+tau(i,k,la550,m)/dh(i,k) 401 END DO 402 END DO 403 END DO 404 405 DO i=1, klon 406 ai(i)=-LOG(MAX(od670aer(i),1.e-8)/MAX(od865aer(i),1.e-8))/LOG(670./865.) 407 ENDDO 352 !--AOD calculations for diagnostics 353 od550aer(:)=SUM(tausum(:,la550,:),dim=2) 354 od670aer(:)=SUM(tausum(:,la670,:),dim=2) 355 od865aer(:)=SUM(tausum(:,la865,:),dim=2) 356 357 !--extinction coefficient for diagnostic 358 ec550aer(:,:)=SUM(tau(:,:,la550,:),dim=3)/zdh(:,:) 359 360 !--aerosol index 361 ai(:)=-LOG(MAX(od670aer(:),1.e-8)/MAX(od865aer(:),1.e-8))/LOG(670./865.) 408 362 409 363 od550lt1aer(:)=tausum(:,la550,id_ASSO4M_phy)+tausum(:,la550,id_ASBCM_phy) +tausum(:,la550,id_AIBCM_phy)+ & -
LMDZ5/branches/testing/libf/phylmd/rrtm/aeropt_6bands_rrtm.F90
r2408 r2641 36 36 ! 37 37 ! Output arguments: 38 ! 1= total aerosols39 ! 2= natural aerosols38 ! 2= total aerosols 39 ! 1= natural aerosols 40 40 ! 41 41 REAL, DIMENSION(klon,klev,2,nbands_sw_rrtm), INTENT(out) :: tau_allaer ! epaisseur optique aerosol … … 66 66 REAL :: Fact_RH(nbre_RH) 67 67 REAL :: fac 68 REAL :: zd p1(klon,klev)68 REAL :: zdh(klon,klev) 69 69 INTEGER, ALLOCATABLE, DIMENSION(:) :: aerosol_name 70 70 INTEGER :: nb_aer 71 71 72 REAL, DIMENSION(klon,klev,naero_tot) :: mass_temp73 REAL, DIMENSION(klon,klev,naero_tot) :: mass_temp_pi74 72 REAL, DIMENSION(klon,klev,naero_tot,nbands_sw_rrtm) :: tau_ae 75 73 REAL, DIMENSION(klon,klev,naero_tot,nbands_sw_rrtm) :: tau_ae_pi 76 74 REAL, DIMENSION(klon,klev,naero_tot,nbands_sw_rrtm) :: piz_ae 77 75 REAL, DIMENSION(klon,klev,naero_tot,nbands_sw_rrtm) :: cg_ae 78 79 80 76 ! 81 77 ! Proprietes optiques … … 89 85 90 86 INTEGER :: id 91 LOGICAL :: used_aer(naero_tot)92 87 REAL :: tmp_var, tmp_var_pi 93 88 … … 277 272 spsol = 0 278 273 spinsol = 0 274 279 275 IF (NSW.NE.nbands_sw_rrtm) THEN 280 276 print *,'Erreur NSW doit etre egal a 6 pour cette routine' … … 282 278 ENDIF 283 279 284 DO k=1, klev 285 DO i=1, klon 286 !CDIR UNROLL=naero_tot 287 mass_temp(i,k,:) = m_allaer(i,k,:) / zrho(i,k) / 1.e+9 !--kg/kg 288 !CDIR UNROLL=naero_tot 289 mass_temp_pi(i,k,:) = m_allaer_pi(i,k,:) / zrho(i,k) / 1.e+9 290 zdp1(i,k)=pdel(i,k)/(RG*delt) ! air mass auxiliary variable --> zdp1 [kg/(m^2 *s)] 291 ENDDO 292 ENDDO 280 zdh(:,:)=pdel(:,:)/(RG*zrho(:,:)) ! m 293 281 294 282 IF (flag_aerosol .EQ. 1) THEN … … 339 327 ! compute optical_thickness_at_gridpoint_per_species 340 328 341 !!CDIR ON_ADB(RH_tab)342 !CDIR ON_ADB(fact_RH)343 !CDIR SHORTLOOP344 329 DO n=1,nbre_RH-1 345 330 fact_RH(n)=1./(RH_tab(n+1)-RH_tab(n)) 346 331 ENDDO 347 332 348 DO k=1, KLEV 349 !CDIR ON_ADB(fact_RH) 350 DO i=1, KLON 333 DO k=1, klev 334 DO i=1, klon 351 335 rh(i,k)=MIN(RHcl(i,k)*100.,RH_MAX) 352 336 RH_num(i,k) = INT(rh(i,k)/10. + 1.) … … 357 341 ENDDO 358 342 359 used_aer(:)=.FALSE. 343 tau_ae(:,:,:,:)=0. 344 tau_ae_pi(:,:,:,:)=0. 345 piz_ae(:,:,:,:)=0. 346 cg_ae(:,:,:,:)=0. 360 347 361 348 DO m=1,nb_aer ! tau is only computed for each mass … … 398 385 399 386 id=aerosol_name(m) 400 used_aer(id)=.TRUE.401 387 402 388 IF (soluble) THEN 403 389 404 DO k=1, KLEV405 DO i=1, KLON406 tmp_var=m ass_temp(i,k,spsol)*1000.*zdp1(i,k)*delt*fac407 tmp_var_pi=m ass_temp_pi(i,k,spsol)*1000.*zdp1(i,k)*delt*fac390 DO k=1, klev 391 DO i=1, klon 392 tmp_var=m_allaer(i,k,spsol)/1.e6*zdh(i,k)*fac 393 tmp_var_pi=m_allaer_pi(i,k,spsol)/1.e6*zdh(i,k)*fac 408 394 409 395 DO inu=1,NSW … … 432 418 ELSE ! For all aerosol insoluble components 433 419 434 DO k=1, KLEV435 DO i=1, KLON436 tmp_var=m ass_temp(i,k,naero_soluble+ spinsol)*1000.*zdp1(i,k)*delt*fac437 tmp_var_pi=m ass_temp_pi(i,k,naero_soluble+spinsol)*1000.*zdp1(i,k)*delt*fac420 DO k=1, klev 421 DO i=1, klon 422 tmp_var=m_allaer(i,k,naero_soluble+spinsol)/1.e6*zdh(i,k)*fac 423 tmp_var_pi=m_allaer_pi(i,k,naero_soluble+spinsol)/1.e6*zdh(i,k)*fac 438 424 439 425 DO inu=1,NSW … … 454 440 ENDDO ! nb_aer 455 441 456 DO m=1,naero_tot457 IF (.NOT. used_aer(m)) THEN458 tau_ae(:,:,m,:)=0.459 tau_ae_pi(:,:,m,:)=0.460 piz_ae(:,:,m,:)=0.461 cg_ae(:,:,m,:)=0.462 ENDIF463 ENDDO464 465 442 DO inu=1, NSW 466 DO k=1, KLEV467 DO i=1, KLON443 DO k=1, klev 444 DO i=1, klon 468 445 !--anthropogenic aerosol 469 446 tau_allaer(i,k,2,inu)=tau_ae(i,k,id_ASSO4M_phy,inu)+tau_ae(i,k,id_CSSO4M_phy,inu)+ & … … 536 513 ENDDO 537 514 538 !-- ???????539 inu= 1540 DO i=1, KLON541 absvisaer(i)=SUM((1-piz_allaer(i,:, :,inu))*tau_allaer(i,:,:,inu))542 END DO515 !--waveband 2 and all aerosol 516 inu=2 517 DO i=1, klon 518 absvisaer(i)=SUM((1-piz_allaer(i,:,2,inu))*tau_allaer(i,:,2,inu)) 519 ENDDO 543 520 544 521 DEALLOCATE(aerosol_name) -
LMDZ5/branches/testing/libf/phylmd/rrtm/rrtm_ecrt_140gp.F90
r2160 r2641 31 31 & JPINPX 32 32 USE YOERAD , ONLY : NLW ,NOVLP 33 USE YOERDI , ONLY : RCH4 ,RN2O ,RCFC11 ,RCFC1233 !MPL/IM 20160915 on prend GES de phylmd USE YOERDI , ONLY : RCH4 ,RN2O ,RCFC11 ,RCFC12 34 34 USE YOESW , ONLY : RAER 35 35 … … 113 113 REAL(KIND=JPRB) :: ZHOOK_HANDLE 114 114 115 !MPL/IM 20160915 on prend GES de phylmd 116 #include "clesphys.h" 115 117 ! *** 116 118 … … 400 402 401 403 ! ------------------------------------------------------------------ 402 404 403 405 IF (LHOOK) CALL DR_HOOK('RRTM_ECRT_140GP',1,ZHOOK_HANDLE) 404 406 END SUBROUTINE RRTM_ECRT_140GP -
LMDZ5/branches/testing/libf/phylmd/rrtm/srtm_srtm_224gp_mcica.F90
r1999 r2641 16 16 17 17 USE PARSRTM , ONLY : JPLAY 18 USE YOERDI , ONLY : RCH4 , RN2O18 !MPL/IM 20160915 on prend GES de phylmd USE YOERDI , ONLY : RCH4 , RN2O 19 19 USE YOERAD , ONLY : NAER 20 20 USE YOESRTAER, ONLY : RSRTAUA, RSRPIZA, RSRASYA … … 133 133 #include "srtm_setcoef.intfb.h" 134 134 #include "srtm_spcvrt_mcica.intfb.h" 135 135 !MPL/IM 20160915 on prend GES de phylmd 136 #include "clesphys.h" 136 137 137 138 !----------------------------------------------------------------------- -
LMDZ5/branches/testing/libf/phylmd/rrtm/suecrad.F90
r2160 r2641 245 245 #include "naerad.h" 246 246 #include "namrgri.h" 247 !MPL/IM 20160915 on prend GES de phylmd 247 248 #include "clesphys.h" 248 249 … … 449 450 450 451 ! Valeurs LMDZ (physiq.def) MPL 18052010 451 RCCO2 = 348.E-06_JPRB 452 RCCH4 = 1.65E-06_JPRB 453 RCN2O = 306.E-09_JPRB 454 RCCFC11 = 280.E-12_JPRB 455 RCCFC12 = 484.E-12_JPRB 456 print *,'SUECRAD-1' 457 452 !RCCO2 = 348.E-06_JPRB 453 !RCCH4 = 1.65E-06_JPRB 454 !RCN2O = 306.E-09_JPRB 455 !RCCFC11 = 280.E-12_JPRB 456 !RCCFC12 = 484.E-12_JPRB 457 458 !MPL/IM 20160915 on prend GES de phylmd 459 RCCO2 = CO2_ppm * 1.0e-06 460 RCCH4 = CH4_ppb * 1.0e-09 461 RCN2O = N2O_ppb * 1.0e-09 462 RCCFC11 = CFC11_ppt * 1.0e-12 463 RCCFC12 = CFC12_ppt * 1.0e-12 464 !print *,'LMDZSUECRAD-1 RCCO2=',RCCO2 465 !print *,'LMDZSUECRAD-1 RCCH4=',RCCH4 466 !print *,'LMDZSUECRAD-1 RCN2O=',RCN2O 467 !print *,'LMDZSUECRAD-1 RCCFC11=',RCCFC11 468 !print *,'LMDZSUECRAD-1 RCCFC12=',RCCFC12 458 469 ! ------------------------------------------------------------------ 459 470 -
LMDZ5/branches/testing/libf/phylmd/rrtm/surdi.F90
r2056 r2641 54 54 USE YOERDI , ONLY : RRAE ,& 55 55 ! & RCARDI ,RCH4 ,RN2O ,RO3 ,RCFC11 ,& 56 & RCFC12, &56 ! & RCFC12, & 57 57 & REPCLC ,REPH2O ,RSUNDUR ,& 58 58 & RCCO2 ,RCCH4 ,RCN2O ,RCCFC11 ,RCCFC12 … … 61 61 IMPLICIT NONE 62 62 63 !MPL/IM 20160915 on prend GES de phylmd 63 64 !#include "clesphys.h" 64 65 REAL(KIND=JPRB) :: ZAIRMWG, ZC11MWG, ZC12MWG, ZCH4MWG, ZCO2MWG, ZN2OMWG, ZO3MWG -
LMDZ5/branches/testing/libf/phylmd/rrtm/swr.F90
r2056 r2641 192 192 ZCLOUD(JL) = ZSS1(JL) 193 193 ELSEIF (NOVLP == 2) THEN 194 stop 'provisoire pour verifier option novlp=1b' 194 !IM150716 stop 'provisoire pour verifier option novlp=1b' 195 print*,'rrtm provisoire pour verifier option novlp=2 maximum' 195 196 !* maximum 196 197 ZCLOUD(JL) = MAX( ZSS1(JL) , ZCLOUD(JL) ) … … 198 199 !++MODIFCODE 199 200 ELSEIF ((NOVLP == 3).OR.((NOVLP >= 5).AND.(NOVLP /= 8))) THEN 200 stop 'provisoire pour verifier option novlp=1c' 201 !IM150716 stop 'provisoire pour verifier option novlp=1c' 202 print*,'rrtm provisoire pour verifier option novlp=3 random' 201 203 !--MODIFCODE 202 204 !* random -
LMDZ5/branches/testing/libf/phylmd/tracinca_mod.F90
r2488 r2641 138 138 139 139 #ifdef INCA 140 IF (config_inca == 'aero' ) THEN140 IF (config_inca == 'aero' .OR. config_inca == 'chem') THEN 141 141 zpmfu(:,:)=pmfu(:,:) 142 142 ELSE IF (config_inca == 'aeNP') THEN … … 150 150 pphi,cell_area,nstep,rneb,t_seri, & 151 151 rh,tau_aero,piz_aero,cg_aero, & 152 rfname,ccm,lafin , config_inca)152 rfname,ccm,lafin) 153 153 #endif 154 154 -
LMDZ5/branches/testing/libf/phylmd/wake.F90
r2542 r2641 2 2 ! $Id$ 3 3 4 SUBROUTINE wake(p, ph, pi, dtime, sigd_con,&4 SUBROUTINE wake(p, ph, pi, dtime, & 5 5 te0, qe0, omgb, & 6 6 dtdwn, dqdwn, amdwn, amup, dta, dqa, & 7 wdtpbl, wdqpbl, udtpbl, udqpbl, & 8 deltatw, deltaqw, dth, hw, sigmaw, wape, fip, gfl, & 9 dtls, dqls, ktopw, omgbdth, dp_omgb, wdens, tu, qu, & 10 dtke, dqke, dtpbl, dqpbl, omg, dp_deltomg, spread, cstar, & 11 d_deltat_gw, d_deltatw2, d_deltaqw2) 7 sigd_con, & 8 deltatw, deltaqw, sigmaw, wdens, & ! state variables 9 dth, hw, wape, fip, gfl, & 10 dtls, dqls, ktopw, omgbdth, dp_omgb, tu, qu, & 11 dtke, dqke, omg, dp_deltomg, spread, cstar, & 12 d_deltat_gw, & 13 d_deltatw2, d_deltaqw2, d_sigmaw2, d_wdens2) ! tendencies 12 14 13 15 … … 33 35 ! le declenchement de nouvelles colonnes convectives. 34 36 35 ! Variables d'etat : deltatw : ecart de temperature wake-undisturbed 36 ! area 37 ! deltaqw : ecart d'humidite wake-undisturbed area 38 ! sigmaw : fraction d'aire occupee par la poche. 37 ! State variables : 38 ! deltatw : temperature difference between wake and off-wake regions 39 ! deltaqw : specific humidity difference between wake and off-wake regions 40 ! sigmaw : fractional area covered by wakes. 41 ! wdens : number of wakes per unit area 39 42 40 43 ! Variable de sortie : … … 53 56 ! omg : Delta_omg =vertical velocity diff. wake-undist. (Pa/s) 54 57 ! dp_deltomg : vertical gradient of omg (s-1) 55 ! spread : spreading term in d t_wake and dq_wake58 ! spread : spreading term in d_t_wake and d_q_wake 56 59 ! deltatw : updated temperature difference (T_w-T_u). 57 60 ! deltaqw : updated humidity difference (q_w-q_u). … … 126 129 REAL, DIMENSION (klon, klev), INTENT(IN) :: te0, qe0 127 130 REAL, DIMENSION (klon, klev), INTENT(IN) :: dtdwn, dqdwn 128 REAL, DIMENSION (klon, klev), INTENT(IN) :: wdtpbl, wdqpbl, udtpbl, udqpbl ! UNUSED129 131 REAL, DIMENSION (klon, klev), INTENT(IN) :: amdwn, amup 130 132 REAL, DIMENSION (klon, klev), INTENT(IN) :: dta, dqa … … 133 135 ! 134 136 ! Input/Output 137 ! State variables 135 138 REAL, DIMENSION (klon, klev), INTENT(INOUT) :: deltatw, deltaqw 136 139 REAL, DIMENSION (klon), INTENT(INOUT) :: sigmaw 140 REAL, DIMENSION (klon), INTENT(INOUT) :: wdens 137 141 138 142 ! Sorties … … 143 147 REAL, DIMENSION (klon, klev), INTENT(OUT) :: dtls, dqls 144 148 REAL, DIMENSION (klon, klev), INTENT(OUT) :: dtke, dqke 145 REAL, DIMENSION (klon, klev), INTENT(OUT) :: dtpbl, dqpbl146 149 REAL, DIMENSION (klon, klev), INTENT(OUT) :: spread 147 REAL, DIMENSION (klon, klev), INTENT(OUT) :: d_deltatw2, d_deltaqw2148 150 REAL, DIMENSION (klon, klev+1), INTENT(OUT) :: omgbdth, omg 149 151 REAL, DIMENSION (klon, klev), INTENT(OUT) :: dp_omgb, dp_deltomg 150 152 REAL, DIMENSION (klon, klev), INTENT(OUT) :: d_deltat_gw 151 153 REAL, DIMENSION (klon), INTENT(OUT) :: hw, wape, fip, gfl, cstar 152 REAL, DIMENSION (klon), INTENT(OUT) :: wdens153 154 INTEGER, DIMENSION (klon), INTENT(OUT) :: ktopw 155 ! Tendencies of state variables 156 REAL, DIMENSION (klon, klev), INTENT(OUT) :: d_deltatw2, d_deltaqw2 157 REAL, DIMENSION (klon), INTENT(OUT) :: d_sigmaw2, d_wdens2 154 158 155 159 ! Variables internes … … 157 161 158 162 ! Variables à fixer 159 REAL alon160 LOGICAL, SAVE :: first = .TRUE.163 REAL :: alon 164 LOGICAL, SAVE :: first = .TRUE. 161 165 !$OMP THREADPRIVATE(first) 162 REAL, SAVE :: stark, wdens_ref, coefgw, alpk, crep_upper, crep_sol 166 REAL, SAVE :: stark, wdens_ref, coefgw, alpk 167 REAL, SAVE :: crep_upper, crep_sol 163 168 !$OMP THREADPRIVATE(stark, wdens_ref, coefgw, alpk, crep_upper, crep_sol) 164 169 165 REAL delta_t_min166 INTEGER nsub167 REAL dtimesub168 REAL sigmad, hwmin, wapecut169 REAL :: sigmaw_max170 REAL :: dens_rate171 REAL wdens0170 REAL :: delta_t_min 171 INTEGER :: nsub 172 REAL :: dtimesub 173 REAL :: sigmad, hwmin, wapecut 174 REAL :: sigmaw_max 175 REAL :: dens_rate 176 REAL :: wdens0 172 177 ! IM 080208 173 LOGICAL, DIMENSION (klon) :: gwake178 LOGICAL, DIMENSION (klon) :: gwake 174 179 175 180 ! Variables de sauvegarde 176 REAL, DIMENSION (klon, klev) :: deltatw0177 REAL, DIMENSION (klon, klev) :: deltaqw0178 REAL, DIMENSION (klon, klev) :: te, qe179 REAL, DIMENSION (klon) :: sigmaw0, sigmaw1181 REAL, DIMENSION (klon, klev) :: deltatw0 182 REAL, DIMENSION (klon, klev) :: deltaqw0 183 REAL, DIMENSION (klon, klev) :: te, qe 184 REAL, DIMENSION (klon) :: sigmaw0, sigmaw1 180 185 181 186 ! Variables pour les GW 182 REAL, DIMENSION (klon) :: ll183 REAL, DIMENSION (klon, klev) :: n2184 REAL, DIMENSION (klon, klev) :: cgw185 REAL, DIMENSION (klon, klev) :: tgw187 REAL, DIMENSION (klon) :: ll 188 REAL, DIMENSION (klon, klev) :: n2 189 REAL, DIMENSION (klon, klev) :: cgw 190 REAL, DIMENSION (klon, klev) :: tgw 186 191 187 192 ! Variables liées au calcul de hw 188 REAL, DIMENSION (klon) :: ptop_provis, ptop, ptop_new189 REAL, DIMENSION (klon) :: sum_dth190 REAL, DIMENSION (klon) :: dthmin191 REAL, DIMENSION (klon) :: z, dz, hw0192 INTEGER, DIMENSION (klon) :: ktop, kupper193 REAL, DIMENSION (klon) :: ptop_provis, ptop, ptop_new 194 REAL, DIMENSION (klon) :: sum_dth 195 REAL, DIMENSION (klon) :: dthmin 196 REAL, DIMENSION (klon) :: z, dz, hw0 197 INTEGER, DIMENSION (klon) :: ktop, kupper 193 198 194 199 ! Sub-timestep tendencies and related variables 195 REAL d_deltatw(klon, klev), d_deltaqw(klon, klev) 196 REAL d_te(klon, klev), d_qe(klon, klev) 197 REAL d_sigmaw(klon), alpha(klon) 198 REAL q0_min(klon), q1_min(klon) 199 LOGICAL wk_adv(klon), ok_qx_qw(klon) 200 REAL epsilon 200 REAL, DIMENSION (klon, klev) :: d_deltatw, d_deltaqw 201 REAL, DIMENSION (klon, klev) :: d_te, d_qe 202 REAL, DIMENSION (klon) :: d_sigmaw, alpha 203 REAL, DIMENSION (klon) :: q0_min, q1_min 204 LOGICAL, DIMENSION (klon) :: wk_adv, ok_qx_qw 205 REAL, SAVE :: epsilon 206 !$OMP THREADPRIVATE(epsilon) 201 207 DATA epsilon/1.E-15/ 202 208 203 209 ! Autres variables internes 204 INTEGER isubstep, k, i205 206 REAL , DIMENSION (klon) :: sum_thu, sum_tu, sum_qu, sum_thvu207 REAL, DIMENSION (klon) :: sum_dq, sum_rho 208 REAL, DIMENSION (klon) :: sum_dtdwn, sum_dqdwn209 REAL, DIMENSION (klon) :: av_thu, av_tu, av_qu, av_thvu210 REAL, DIMENSION (klon) :: av_dth, av_dq, av_rho211 REAL, DIMENSION (klon) :: av_dtdwn, av_dqdwn212 213 REAL, DIMENSION (klon , klev) :: rho, rhow214 REAL, DIMENSION (klon, klev+1) :: rhoh 215 REAL, DIMENSION (klon, klev) :: rhow_moyen216 REAL, DIMENSION (klon, klev ) :: zh217 REAL, DIMENSION (klon, klev +1) :: zhh218 REAL, DIMENSION (klon, klev) :: epaisseur1, epaisseur2219 220 REAL, DIMENSION (klon, klev) :: the, thu221 222 ! REAL, DIMENSION(klon,klev) :: d_deltatw, d_deltaqw223 224 REAL, DIMENSION (klon, klev+1) :: omgbw225 REAL, DIMENSION (klon) :: pupper226 REAL, DIMENSION (klon) :: omgtop227 REAL, DIMENSION (klon, klev) :: dp_omgbw228 REAL, DIMENSION (klon) :: ztop, dztop229 REAL, DIMENSION (klon, klev) :: alpha_up230 231 REAL, DIMENSION (klon) :: rre1, rre2232 REAL :: rrd1, rrd2233 REAL, DIMENSION (klon, klev) :: th1, th2, q1, q2234 REAL, DIMENSION (klon, klev) :: d_th1, d_th2, d_dth235 REAL, DIMENSION (klon, klev) :: d_q1, d_q2, d_dq236 REAL, DIMENSION (klon, klev) :: omgbdq237 238 REAL, DIMENSION (klon) :: ff, gg239 REAL, DIMENSION (klon) :: wape2, cstar2, heff240 241 REAL, DIMENSION (klon, klev) :: crep242 243 REAL, DIMENSION (klon, klev) :: ppi210 INTEGER ::isubstep, k, i 211 212 REAL :: sigmaw_targ 213 214 REAL, DIMENSION (klon) :: sum_thu, sum_tu, sum_qu, sum_thvu 215 REAL, DIMENSION (klon) :: sum_dq, sum_rho 216 REAL, DIMENSION (klon) :: sum_dtdwn, sum_dqdwn 217 REAL, DIMENSION (klon) :: av_thu, av_tu, av_qu, av_thvu 218 REAL, DIMENSION (klon) :: av_dth, av_dq, av_rho 219 REAL, DIMENSION (klon) :: av_dtdwn, av_dqdwn 220 221 REAL, DIMENSION (klon, klev) :: rho, rhow 222 REAL, DIMENSION (klon, klev+1) :: rhoh 223 REAL, DIMENSION (klon, klev) :: rhow_moyen 224 REAL, DIMENSION (klon, klev) :: zh 225 REAL, DIMENSION (klon, klev+1) :: zhh 226 REAL, DIMENSION (klon, klev) :: epaisseur1, epaisseur2 227 228 REAL, DIMENSION (klon, klev) :: the, thu 229 230 REAL, DIMENSION (klon, klev+1) :: omgbw 231 REAL, DIMENSION (klon) :: pupper 232 REAL, DIMENSION (klon) :: omgtop 233 REAL, DIMENSION (klon, klev) :: dp_omgbw 234 REAL, DIMENSION (klon) :: ztop, dztop 235 REAL, DIMENSION (klon, klev) :: alpha_up 236 237 REAL, DIMENSION (klon) :: rre1, rre2 238 REAL :: rrd1, rrd2 239 REAL, DIMENSION (klon, klev) :: th1, th2, q1, q2 240 REAL, DIMENSION (klon, klev) :: d_th1, d_th2, d_dth 241 REAL, DIMENSION (klon, klev) :: d_q1, d_q2, d_dq 242 REAL, DIMENSION (klon, klev) :: omgbdq 243 244 REAL, DIMENSION (klon) :: ff, gg 245 REAL, DIMENSION (klon) :: wape2, cstar2, heff 246 247 REAL, DIMENSION (klon, klev) :: crep 248 249 REAL, DIMENSION (klon, klev) :: ppi 244 250 245 251 ! cc nrlmd 246 REAL, DIMENSION (klon) :: death_rate, nat_rate 247 REAL, DIMENSION (klon, klev) :: entr 248 REAL, DIMENSION (klon, klev) :: detr 252 REAL, DIMENSION (klon) :: death_rate, nat_rate 253 REAL, DIMENSION (klon, klev) :: entr 254 REAL, DIMENSION (klon, klev) :: detr 255 256 REAL, DIMENSION(klon) :: sigmaw_in ! pour les prints 249 257 250 258 ! ------------------------------------------------------------------------- … … 312 320 ! Les densites peuvent evoluer si les poches debordent 313 321 ! (voir au tout debut de la boucle sur les substeps) 314 wdens = wdens_ref322 wdens(:) = wdens_ref 315 323 316 324 ! print*,'stark',stark … … 347 355 END DO 348 356 END DO 357 DO i = 1, klon 358 sigmaw_in(i) = sigmaw(i) 359 END DO 349 360 ! sigmaw1=sigmaw 350 361 ! IF (sigd_con.GT.sigmaw1) THEN … … 353 364 DO i = 1, klon 354 365 ! c sigmaw(i) = amax1(sigmaw(i),sigd_con(i)) 355 sigmaw(i) = amax1(sigmaw(i), sigmad) 356 sigmaw(i) = amin1(sigmaw(i), 0.99) 366 !jyg< 367 !! sigmaw(i) = amax1(sigmaw(i), sigmad) 368 !! sigmaw(i) = amin1(sigmaw(i), 0.99) 369 sigmaw_targ = min(max(sigmaw(i), sigmad),0.99) 370 d_sigmaw2(i) = sigmaw_targ - sigmaw(i) 371 sigmaw(i) = sigmaw_targ 372 !>jyg 357 373 sigmaw0(i) = sigmaw(i) 358 374 wape(i) = 0. 359 375 wape2(i) = 0. 360 376 d_sigmaw(i) = 0. 377 d_wdens2(i) = 0. 361 378 ktopw(i) = 0 362 379 END DO … … 433 450 n2(i, k) = 0 434 451 ELSE 435 n2(i, k) = amax1(0., -rg**2/the(i,k)*rho(i,k)*(the(i,k+1)-the(i, &436 k-1))/(p(i,k+1)-p(i,k-1)))452 n2(i, k) = amax1(0., -rg**2/the(i,k)*rho(i,k)*(the(i,k+1)-the(i,k-1))/ & 453 (p(i,k+1)-p(i,k-1))) 437 454 END IF 438 455 zh(i, k) = (zhh(i,k)+zhh(i,k+1))/2 … … 504 521 IF (dth(i,k)>-delta_t_min .AND. dth(i,k-1)<-delta_t_min .AND. & 505 522 ptop_provis(i)==ph(i,1)) THEN 506 ptop_provis(i) = ((dth(i,k)+delta_t_min)*p(i,k-1)- (dth(i,&507 k-1)+delta_t_min)*p(i,k))/(dth(i,k)-dth(i,k-1))523 ptop_provis(i) = ((dth(i,k)+delta_t_min)*p(i,k-1)- & 524 (dth(i,k-1)+delta_t_min)*p(i,k))/(dth(i,k)-dth(i,k-1)) 508 525 END IF 509 526 END DO … … 602 619 deltatw(i, k) = 0. 603 620 deltaqw(i, k) = 0. 621 d_deltatw2(i,k) = -deltatw0(i,k) 622 d_deltaqw2(i,k) = -deltaqw0(i,k) 604 623 END IF 605 624 END DO … … 671 690 av_dqdwn(i) = sum_dqdwn(i)/hw0(i) 672 691 673 wape(i) = -rg*hw0(i)*(av_dth(i)+epsim1*(av_thu(i)*av_dq(i)+av_dth(i)*av_qu(i & 674 )+av_dth(i)*av_dq(i)))/av_thvu(i) 692 wape(i) = -rg*hw0(i)*(av_dth(i)+ & 693 epsim1*(av_thu(i)*av_dq(i)+av_dth(i)*av_qu(i)+av_dth(i)*av_dq(i)))/av_thvu(i) 694 675 695 END DO 676 696 … … 686 706 deltaqw(i, k) = 0. 687 707 dth(i, k) = 0. 708 d_deltatw2(i,k) = -deltatw0(i,k) 709 d_deltaqw2(i,k) = -deltaqw0(i,k) 688 710 END IF 689 711 END DO … … 695 717 cstar(i) = 0. 696 718 hw(i) = hwmin 697 sigmaw(i) = amax1(sigmad, sigd_con(i)) 719 !jyg< 720 !! sigmaw(i) = amax1(sigmad, sigd_con(i)) 721 sigmaw_targ = max(sigmad, sigd_con(i)) 722 d_sigmaw2(i) = d_sigmaw2(i) + sigmaw_targ - sigmaw(i) 723 sigmaw(i) = sigmaw_targ 724 !>jyg 698 725 fip(i) = 0. 699 726 gwake(i) = .FALSE. … … 708 735 ! -------------------------- 709 736 DO i = 1, klon 710 q0_min(i) = min((qe(i,1)-sigmaw(i)*deltaqw(i,1)), (qe(i,&711 1)+(1.-sigmaw(i))*deltaqw(i,1)))737 q0_min(i) = min((qe(i,1)-sigmaw(i)*deltaqw(i,1)), & 738 (qe(i,1)+(1.-sigmaw(i))*deltaqw(i,1))) 712 739 END DO 713 740 DO k = 2, klev 714 741 DO i = 1, klon 715 q1_min(i) = min((qe(i,k)-sigmaw(i)*deltaqw(i,k)), (qe(i,&716 k)+(1.-sigmaw(i))*deltaqw(i,k)))742 q1_min(i) = min((qe(i,k)-sigmaw(i)*deltaqw(i,k)), & 743 (qe(i,k)+(1.-sigmaw(i))*deltaqw(i,k))) 717 744 IF (q1_min(i)<=q0_min(i)) THEN 718 745 q0_min(i) = q1_min(i) … … 752 779 IF (wk_adv(i) .AND. cstar(i)>0.01) THEN 753 780 omg(i, kupper(i)+1) = -rg*amdwn(i, kupper(i)+1)/sigmaw(i) + & 754 rg*amup(i, kupper(i)+1)/(1.-sigmaw(i))755 wdens0 = (sigmaw(i)/(4.*3.14))* ((1.-sigmaw(i))*omg(i,kupper(i)+1)/((&756 ph(i,1)-pupper(i))*cstar(i)))**(2)781 rg*amup(i, kupper(i)+1)/(1.-sigmaw(i)) 782 wdens0 = (sigmaw(i)/(4.*3.14))* & 783 ((1.-sigmaw(i))*omg(i,kupper(i)+1)/((ph(i,1)-pupper(i))*cstar(i)))**(2) 757 784 IF (wdens(i)<=wdens0*1.1) THEN 758 785 wdens(i) = wdens0 … … 770 797 IF (wk_adv(i)) THEN 771 798 gfl(i) = 2.*sqrt(3.14*wdens(i)*sigmaw(i)) 772 sigmaw(i) = amin1(sigmaw(i), sigmaw_max) 773 END IF 774 END DO 799 !jyg< 800 !! sigmaw(i) = amin1(sigmaw(i), sigmaw_max) 801 sigmaw_targ = min(sigmaw(i), sigmaw_max) 802 d_sigmaw2(i) = d_sigmaw2(i) + sigmaw_targ - sigmaw(i) 803 sigmaw(i) = sigmaw_targ 804 !>jyg 805 END IF 806 END DO 807 775 808 DO i = 1, klon 776 809 IF (wk_adv(i)) THEN … … 783 816 death_rate(i) = 0. 784 817 END IF 818 785 819 d_sigmaw(i) = gfl(i)*cstar(i)*dtimesub - death_rate(i)*sigmaw(i)* & 786 820 dtimesub … … 798 832 END IF 799 833 END DO 800 801 834 802 835 ! calcul de la difference de vitesse verticale poche - zone non perturbee … … 1006 1039 1007 1040 d_deltatw(i, k) = dtimesub/(ph(i,k)-ph(i,k+1))* & 1008 (rrd1*omg(i,k)*sigmaw(i)*d_th1(i,k)-rrd2*omg(i,k+1)*(1.-sigmaw( & 1009 i))*d_th2(i,k+1)-(1.-alpha_up(i,k))*omgbdth(i,k)-alpha_up(i,k+1)* & 1010 omgbdth(i,k+1))*ppi(i, k) 1041 (rrd1*omg(i,k)*sigmaw(i)*d_th1(i,k) - & 1042 rrd2*omg(i,k+1)*(1.-sigmaw(i))*d_th2(i,k+1)- & 1043 (1.-alpha_up(i,k))*omgbdth(i,k)- & 1044 alpha_up(i,k+1)*omgbdth(i,k+1))*ppi(i, k) 1011 1045 ! print*,'d_deltatw=',d_deltatw(i,k) 1012 1046 1013 1047 d_deltaqw(i, k) = dtimesub/(ph(i,k)-ph(i,k+1))* & 1014 (rrd1*omg(i,k)*sigmaw(i)*d_q1(i,k)-rrd2*omg(i,k+1)*(1.-sigmaw( & 1015 i))*d_q2(i,k+1)-(1.-alpha_up(i,k))*omgbdq(i,k)-alpha_up(i,k+1)* & 1016 omgbdq(i,k+1)) 1048 (rrd1*omg(i,k)*sigmaw(i)*d_q1(i,k)- & 1049 rrd2*omg(i,k+1)*(1.-sigmaw(i))*d_q2(i,k+1)- & 1050 (1.-alpha_up(i,k))*omgbdq(i,k)- & 1051 alpha_up(i,k+1)*omgbdq(i,k+1)) 1017 1052 ! print*,'d_deltaqw=',d_deltaqw(i,k) 1018 1053 … … 1024 1059 ! C 1025 1060 ! ----------------------------------------------------------------- 1026 d_te(i, k) = dtimesub*((rre1(i)*omg(i,k)*sigmaw(i)*d_th1(i, & 1027 k)-rre2(i)*omg(i,k+1)*(1.-sigmaw(i))*d_th2(i,k+1))/(ph(i,k)-ph(i, & 1028 k+1)) & ! cc nrlmd $ 1029 ! -sigmaw(i)*(1.-sigmaw(i))*dth(i,k)*dp_deltomg(i,k) 1030 -sigmaw(i)*(1.-sigmaw(i))*dth(i,k)*(omg(i,k)-omg(i,k+1))/(ph(i, & 1031 k)-ph(i,k+1)) & ! cc 1032 )*ppi(i, k) 1033 1034 d_qe(i, k) = dtimesub*((rre1(i)*omg(i,k)*sigmaw(i)*d_q1(i, & 1035 k)-rre2(i)*omg(i,k+1)*(1.-sigmaw(i))*d_q2(i,k+1))/(ph(i,k)-ph(i, & 1036 k+1)) & ! cc nrlmd $ 1037 ! -sigmaw(i)*(1.-sigmaw(i))*deltaqw(i,k)*dp_deltomg(i,k) 1038 -sigmaw(i)*(1.-sigmaw(i))*deltaqw(i,k)*(omg(i,k)-omg(i, & 1039 k+1))/(ph(i,k)-ph(i,k+1)) & ! cc 1040 ) 1041 ! cc nrlmd 1061 d_te(i, k) = dtimesub*((rre1(i)*omg(i,k)*sigmaw(i)*d_th1(i,k)- & 1062 rre2(i)*omg(i,k+1)*(1.-sigmaw(i))*d_th2(i,k+1))/ & 1063 (ph(i,k)-ph(i,k+1)) & 1064 -sigmaw(i)*(1.-sigmaw(i))*dth(i,k)*(omg(i,k)-omg(i,k+1))/ & 1065 (ph(i,k)-ph(i,k+1)) )*ppi(i, k) 1066 1067 d_qe(i, k) = dtimesub*((rre1(i)*omg(i,k)*sigmaw(i)*d_q1(i,k)- & 1068 rre2(i)*omg(i,k+1)*(1.-sigmaw(i))*d_q2(i,k+1))/ & 1069 (ph(i,k)-ph(i,k+1)) & 1070 -sigmaw(i)*(1.-sigmaw(i))*deltaqw(i,k)*(omg(i,k)-omg(i,k+1))/ & 1071 (ph(i,k)-ph(i,k+1)) ) 1042 1072 ELSE IF (wk_adv(i) .AND. k==kupper(i)) THEN 1043 d_te(i, k) = dtimesub*((rre1(i)*omg(i,k)*sigmaw(i)*d_th1(i, & 1044 k)/(ph(i,k)-ph(i,k+1))))*ppi(i, k) 1045 1046 d_qe(i, k) = dtimesub*((rre1(i)*omg(i,k)*sigmaw(i)*d_q1(i, & 1047 k)/(ph(i,k)-ph(i,k+1)))) 1073 d_te(i, k) = dtimesub*(rre1(i)*omg(i,k)*sigmaw(i)*d_th1(i,k)/(ph(i,k)-ph(i,k+1)))*ppi(i, k) 1074 1075 d_qe(i, k) = dtimesub*(rre1(i)*omg(i,k)*sigmaw(i)*d_q1(i,k)/(ph(i,k)-ph(i,k+1))) 1048 1076 1049 1077 END IF … … 1067 1095 crep(i, k) = crep_sol*(ph(i,kupper(i))-ph(i,k))/ & 1068 1096 (ph(i,kupper(i))-ph(i,1)) 1069 crep(i, k) = crep(i, k) + crep_upper*(ph(i,1)-ph(i,k))/ (p(i,1)-ph(i&1070 ,kupper(i)))1097 crep(i, k) = crep(i, k) + crep_upper*(ph(i,1)-ph(i,k))/ & 1098 (p(i,1)-ph(i,kupper(i))) 1071 1099 1072 1100 … … 1091 1119 ! print*,'dtKE= ',dtKE(i,k),' dqKE= ',dqKE(i,k) 1092 1120 1093 !jyg<1094 !!1095 !!---------------------------------------------------------------1096 !! The change of delta_T due to PBL (vertical diffusion plus thermal plumes)1097 !! is accounted for by the PBL and the Thermals schemes. It is now set to zero1098 !! within the Wake scheme.1099 !!---------------------------------------------------------------1100 dtPBL(i,k) = 0.1101 dqPBL(i,k) = 0.1102 !1103 !! dtPBL(i,k)=wdtPBL(i,k) - udtPBL(i,k)1104 !! dqPBL(i,k)=wdqPBL(i,k) - udqPBL(i,k)1105 !1106 !! dtpbl(i, k) = (wdtpbl(i,k)/sigmaw(i)-udtpbl(i,k)/(1.-sigmaw(i)))1107 !! dqpbl(i, k) = (wdqpbl(i,k)/sigmaw(i)-udqpbl(i,k)/(1.-sigmaw(i)))1108 ! print*,'dtPBL= ',dtPBL(i,k),' dqPBL= ',dqPBL(i,k)1109 !>jyg1110 1121 ! 1111 1122 … … 1145 1156 1146 1157 IF (dtimesub*tgw(i,k)<1.E-10) THEN 1147 d_deltatw(i, k) = dtimesub*(ff(i)+dtke(i,k)+dtpbl(i,k) & ! cc 1148 ! $ 1149 ! -spread(i,k)*deltatw(i,k) 1150 -entr(i,k)*deltatw(i,k)/sigmaw(i)-(death_rate(i)*sigmaw( & 1151 i)+detr(i,k))*deltatw(i,k)/(1.-sigmaw(i)) & ! cc 1152 -tgw(i,k)*deltatw(i,k)) 1158 d_deltatw(i, k) = dtimesub*(ff(i)+dtke(i,k) - & 1159 entr(i,k)*deltatw(i,k)/sigmaw(i) - & 1160 (death_rate(i)*sigmaw(i)+detr(i,k))*deltatw(i,k)/(1.-sigmaw(i)) - & ! cc 1161 tgw(i,k)*deltatw(i,k) ) 1153 1162 ELSE 1154 d_deltatw(i, k) = 1/tgw(i, k)*(1-exp(-dtimesub*tgw(i, & 1155 k)))*(ff(i)+dtke(i,k)+dtpbl(i,k) & ! cc $ 1156 ! -spread(i,k)*deltatw(i,k) 1157 -entr(i,k)*deltatw(i,k)/sigmaw(i)-(death_rate(i)*sigmaw( & 1158 i)+detr(i,k))*deltatw(i,k)/(1.-sigmaw(i)) & ! cc 1159 -tgw(i,k)*deltatw(i,k)) 1163 d_deltatw(i, k) = 1/tgw(i, k)*(1-exp(-dtimesub*tgw(i,k)))* & 1164 (ff(i)+dtke(i,k) - & 1165 entr(i,k)*deltatw(i,k)/sigmaw(i) - & 1166 (death_rate(i)*sigmaw(i)+detr(i,k))*deltatw(i,k)/(1.-sigmaw(i)) - & 1167 tgw(i,k)*deltatw(i,k) ) 1160 1168 END IF 1161 1169 … … 1164 1172 gg(i) = d_deltaqw(i, k)/dtimesub 1165 1173 1166 d_deltaqw(i, k) = dtimesub*(gg(i)+dqke(i,k)+dqpbl(i,k) & ! cc $ 1167 ! -spread(i,k)*deltaqw(i,k)) 1168 -entr(i,k)*deltaqw(i,k)/sigmaw(i)-(death_rate(i)*sigmaw(i)+detr( & 1169 i,k))*deltaqw(i,k)/(1.-sigmaw(i))) 1174 d_deltaqw(i, k) = dtimesub*(gg(i)+dqke(i,k) - & 1175 entr(i,k)*deltaqw(i,k)/sigmaw(i) - & 1176 (death_rate(i)*sigmaw(i)+detr(i,k))*deltaqw(i,k)/(1.-sigmaw(i))) 1170 1177 ! cc 1171 1178 … … 1239 1246 IF (wk_adv(i)) THEN 1240 1247 sigmaw(i) = sigmaw(i) + d_sigmaw(i) 1248 !jyg< 1249 d_sigmaw2(i) = d_sigmaw2(i) + d_sigmaw(i) 1250 !>jyg 1241 1251 END IF 1242 1252 END DO … … 1258 1268 IF (wk_adv(i) .AND. ptop_provis(i)==ph(i,1) .AND. & 1259 1269 dth(i,k)>-delta_t_min .AND. dth(i,k-1)<-delta_t_min) THEN 1260 ptop_provis(i) = ((dth(i,k)+delta_t_min)*p(i,k-1) -(dth(i,&1261 k-1)+delta_t_min)*p(i,k))/(dth(i,k)-dth(i,k-1))1270 ptop_provis(i) = ((dth(i,k)+delta_t_min)*p(i,k-1) - & 1271 (dth(i,k-1)+delta_t_min)*p(i,k))/(dth(i,k)-dth(i,k-1)) 1262 1272 END IF 1263 1273 END DO … … 1331 1341 IF (wk_adv(i) .AND. k<=ktop(i) .AND. ptop_new(i)==ptop(i) .AND. & 1332 1342 dth(i,k)>-delta_t_min .AND. dth(i,k-1)<-delta_t_min) THEN 1333 ptop_new(i) = ((dth(i,k)+delta_t_min)*p(i,k-1) -(dth(i,&1334 k-1)+delta_t_min)*p(i,k))/(dth(i,k)-dth(i,k-1))1343 ptop_new(i) = ((dth(i,k)+delta_t_min)*p(i,k-1) - & 1344 (dth(i,k-1)+delta_t_min)*p(i,k))/(dth(i,k)-dth(i,k-1)) 1335 1345 END IF 1336 1346 END DO … … 1359 1369 deltatw(i, k) = 0. 1360 1370 deltaqw(i, k) = 0. 1371 d_deltatw2(i,k) = -deltatw0(i,k) 1372 d_deltaqw2(i,k) = -deltaqw0(i,k) 1361 1373 END IF 1362 1374 END DO … … 1449 1461 av_dqdwn(i) = sum_dqdwn(i)/hw0(i) 1450 1462 1451 wape(i) = -rg*hw0(i)*(av_dth(i)+epsim1*(av_thu(i)*av_dq(i) +av_dth(i)*&1452 av_qu(i)+av_dth(i)*av_dq(i)))/av_thvu(i)1463 wape(i) = -rg*hw0(i)*(av_dth(i)+epsim1*(av_thu(i)*av_dq(i) + & 1464 av_dth(i)*av_qu(i)+av_dth(i)*av_dq(i)))/av_thvu(i) 1453 1465 END IF 1454 1466 END DO … … 1463 1475 deltaqw(i, k) = 0. 1464 1476 dth(i, k) = 0. 1477 d_deltatw2(i,k) = -deltatw0(i,k) 1478 d_deltaqw2(i,k) = -deltaqw0(i,k) 1465 1479 END IF 1466 1480 END IF … … 1474 1488 cstar(i) = 0. 1475 1489 hw(i) = hwmin 1476 sigmaw(i) = max(sigmad, sigd_con(i)) 1490 !jyg< 1491 !! sigmaw(i) = max(sigmad, sigd_con(i)) 1492 sigmaw_targ = max(sigmad, sigd_con(i)) 1493 d_sigmaw2(i) = d_sigmaw2(i) + sigmaw_targ - sigmaw(i) 1494 sigmaw(i) = sigmaw_targ 1495 !>jyg 1477 1496 fip(i) = 0. 1478 1497 gwake(i) = .FALSE. … … 1486 1505 END DO ! end sub-timestep loop 1487 1506 1488 ! -----------------------------------------------------------------1489 ! Get back to tendencies per second1490 1491 DO k = 1, klev1492 DO i = 1, klon1493 1494 ! cc nrlmd IF ( wk_adv(i) .AND. k .LE. kupper(i)) THEN1495 IF (ok_qx_qw(i) .AND. k<=kupper(i)) THEN1496 ! cc1497 dtls(i, k) = dtls(i, k)/dtime1498 dqls(i, k) = dqls(i, k)/dtime1499 d_deltatw2(i, k) = d_deltatw2(i, k)/dtime1500 d_deltaqw2(i, k) = d_deltaqw2(i, k)/dtime1501 d_deltat_gw(i, k) = d_deltat_gw(i, k)/dtime1502 ! c print*,'k,dqls,omg,entr,detr',k,dqls(i,k),omg(i,k),entr(i,k)1503 ! c $ ,death_rate(i)*sigmaw(i)1504 END IF1505 END DO1506 END DO1507 1507 1508 1508 … … 1632 1632 av_dqdwn(i) = sum_dqdwn(i)/hw0(i) 1633 1633 1634 wape2(i) = -rg*hw0(i)*(av_dth(i)+epsim1*(av_thu(i)*av_dq(i) +av_dth(i)*&1635 av_qu(i)+av_dth(i)*av_dq(i)))/av_thvu(i)1634 wape2(i) = -rg*hw0(i)*(av_dth(i)+epsim1*(av_thu(i)*av_dq(i) + & 1635 av_dth(i)*av_qu(i)+av_dth(i)*av_dq(i)))/av_thvu(i) 1636 1636 END IF 1637 1637 END DO 1638 1639 1638 1640 1639 1641 ! Prognostic variable update … … 1650 1652 deltaqw(i, k) = 0. 1651 1653 dth(i, k) = 0. 1654 d_deltatw2(i,k) = -deltatw0(i,k) 1655 d_deltaqw2(i,k) = -deltaqw0(i,k) 1652 1656 END IF 1653 1657 END DO … … 1663 1667 cstar2(i) = 0. 1664 1668 hw(i) = hwmin 1665 sigmaw(i) = amax1(sigmad, sigd_con(i)) 1669 !jyg< 1670 !! sigmaw(i) = amax1(sigmad, sigd_con(i)) 1671 sigmaw_targ = max(sigmad, sigd_con(i)) 1672 d_sigmaw2(i) = d_sigmaw2(i) + sigmaw_targ - sigmaw(i) 1673 sigmaw(i) = sigmaw_targ 1674 !>jyg 1666 1675 fip(i) = 0. 1667 1676 gwake(i) = .FALSE. … … 1726 1735 deltatw(i, k) = 0. 1727 1736 deltaqw(i, k) = 0. 1737 d_deltatw2(i,k) = -deltatw0(i,k) 1738 d_deltaqw2(i,k) = -deltaqw0(i,k) 1728 1739 END IF 1729 1740 END DO … … 1734 1745 IF (((wape(i)>=wape2(i)) .AND. (wape2(i)<=1.0)) .OR. (ktopw(i)<=2) .OR. & 1735 1746 .NOT. ok_qx_qw(i)) THEN 1747 ktopw(i) = 0 1736 1748 wape(i) = 0. 1737 1749 cstar(i) = 0. … … 1749 1761 ! c $ wape(i),wape2(i),ktopw(i),OK_qx_qw(i) 1750 1762 END DO 1763 1764 ! ----------------------------------------------------------------- 1765 ! Get back to tendencies per second 1766 1767 DO k = 1, klev 1768 DO i = 1, klon 1769 1770 ! cc nrlmd IF ( wk_adv(i) .AND. k .LE. kupper(i)) THEN 1771 IF (ok_qx_qw(i) .AND. k<=kupper(i)) THEN 1772 ! cc 1773 dtls(i, k) = dtls(i, k)/dtime 1774 dqls(i, k) = dqls(i, k)/dtime 1775 d_deltatw2(i, k) = d_deltatw2(i, k)/dtime 1776 d_deltaqw2(i, k) = d_deltaqw2(i, k)/dtime 1777 d_deltat_gw(i, k) = d_deltat_gw(i, k)/dtime 1778 ! c print*,'k,dqls,omg,entr,detr',k,dqls(i,k),omg(i,k),entr(i,k) 1779 ! c $ ,death_rate(i)*sigmaw(i) 1780 END IF 1781 END DO 1782 END DO 1783 !jyg< 1784 DO i = 1, klon 1785 d_sigmaw2(i) = d_sigmaw2(i)/dtime 1786 d_wdens2(i) = d_wdens2(i)/dtime 1787 ENDDO 1788 !>jyg 1789 1751 1790 1752 1791 … … 1792 1831 IF (wk_adv(i)) THEN 1793 1832 x = qe(i, k) + (zeta(i,k)-sigmaw(i))*deltaqw(i, k) + d_qe(i, k) + & 1794 (zeta(i,k)-sigmaw(i))*d_deltaqw(i, k) - d_sigmaw(i) *(deltaqw(i,k)+&1795 d_deltaqw(i,k))1833 (zeta(i,k)-sigmaw(i))*d_deltaqw(i, k) - d_sigmaw(i) * & 1834 (deltaqw(i,k)+d_deltaqw(i,k)) 1796 1835 a = -d_sigmaw(i)*d_deltaqw(i, k) 1797 1836 b = d_qe(i, k) + (zeta(i,k)-sigmaw(i))*d_deltaqw(i, k) - & … … 1807 1846 ELSE 1808 1847 IF (a>0.) THEN 1809 alpha1(i) = 0.9*min( (2.*c)/(-b+sqrt(discrim)), (-b+sqrt(discrim&1810 ))/(2.*a))1848 alpha1(i) = 0.9*min( (2.*c)/(-b+sqrt(discrim)), & 1849 (-b+sqrt(discrim))/(2.*a) ) 1811 1850 ELSE IF (a==0.) THEN 1812 1851 alpha1(i) = 0.9*(-c/b) 1813 1852 ELSE 1814 1853 ! print*,'a,b,c discrim',a,b,c discrim 1815 alpha1(i) = 0.9*max( (2.*c)/(-b+sqrt(discrim)), (-b+sqrt(discrim&1816 ))/(2.*a))1854 alpha1(i) = 0.9*max( (2.*c)/(-b+sqrt(discrim)), & 1855 (-b+sqrt(discrim))/(2.*a)) 1817 1856 END IF 1818 1857 END IF … … 1827 1866 1828 1867 1868 1869 -
LMDZ5/branches/testing/libf/phymar/physiq_mod.F90
r2435 r2641 29 29 USE mod_phys_lmdz_para, only : jj_nb 30 30 USE phys_state_var_mod, only : phys_state_var_init 31 USE vertical_layers_mod, ONLY: ap, bp 31 32 ! Modules LMDZ utilisés pour LMDZ-MAR: 32 33 USE control_mod … … 52 53 #include "dimensions.h" 53 54 ! Include LMDZ utilisés ici pour MAR-LMDZ: 54 #include "comvert.h"55 55 #include "YOMCST.h" 56 56 -
LMDZ5/branches/testing/makelmdz
r2435 r2641 27 27 sisvat=false 28 28 rrtm=false 29 rrtm=false 30 dust=false 29 31 full="" 30 32 … … 110 112 [-sisvat true/false] : compile with/without sisvat package (default: false) 111 113 [-rrtm true/false] : compile with/without rrtm package (default: false) 114 [-dust true/false] : compile with/without the dust package from Boucher et al. (default: false) 112 115 [-parallel none/mpi/omp/mpi_omp] : parallelism (default: none) : mpi, openmp or mixted mpi_openmp 113 116 [-g GRI] : grid configuration in dyn3d/GRI_xy.h (default: reg, inclues a zoom) … … 173 176 "-rrtm") 174 177 rrtm="$2" ; shift ; shift ;; 178 179 "-dust") 180 dust="$2" ; shift ; shift ;; 175 181 176 182 "-mem") … … 447 453 CPP_KEY="$CPP_KEY CPP_RRTM" 448 454 src_dirs="$src_dirs phy${physique}/rrtm" 455 fi 456 457 if [[ "$dust" == "true" ]] 458 then 459 CPP_KEY="$CPP_KEY CPP_Dust" 460 src_dirs="$src_dirs phy${physique}/Dust" 449 461 fi 450 462 -
LMDZ5/branches/testing/makelmdz_fcm
r2435 r2641 25 25 sisvat=false 26 26 rrtm=false 27 dust=false 27 28 chimie=false 28 29 parallel=none … … 46 47 PHY_COMMON_PATH=$LMDGCM/.void_dir 47 48 RRTM_PATH=$LMDGCM/.void_dir 49 DUST_PATH=$LMDGCM/.void_dir 48 50 SISVAT_PATH=$LMDGCM/.void_dir 49 51 COSP_PATH=$LMDGCM/.void_dir … … 87 89 [-sisvat true/false] : compile with/without sisvat package (default: false) 88 90 [-rrtm true/false] : compile with/without rrtm package (default: false) 91 [-dust true/false] : compile with/without the dust package by Boucher and co (default: false) 89 92 [-parallel none/mpi/omp/mpi_omp] : parallelism (default: none) : mpi, openmp or mixted mpi_openmp 90 93 [-g GRI] : grid configuration in dyn3d/GRI_xy.h (default: reg, inclues a zoom) … … 138 141 "-rrtm") 139 142 rrtm="$2" ; shift ; shift ;; 143 144 "-dust") 145 dust="$2" ; shift ; shift ;; 140 146 141 147 "-chimie") … … 351 357 fi 352 358 359 if [[ "$dust" == "true" ]] 360 then 361 CPP_KEY="$CPP_KEY CPP_Dust" 362 DUST_PATH="$LIBFGCM/%PHYS/Dust" 363 fi 364 353 365 if [[ $io == ioipsl ]] 354 366 then … … 580 592 echo "%DYN_PHYS_SUB $DYN_PHYS_SUB_PATH" >> $config_fcm 581 593 echo "%RRTM $RRTM_PATH" >> $config_fcm 594 echo "%DUST $DUST_PATH" >> $config_fcm 582 595 echo "%SISVAT $SISVAT_PATH" >> $config_fcm 583 596 echo "%COSP $COSP_PATH" >> $config_fcm
Note: See TracChangeset
for help on using the changeset viewer.