Changeset 1621 for trunk/LMDZ.GENERIC
- Timestamp:
- Oct 25, 2016, 9:23:21 AM (8 years ago)
- Location:
- trunk/LMDZ.GENERIC
- Files:
-
- 1 added
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.GENERIC/README
r1600 r1621 1262 1262 should not return the maximum index (leads to out-of-bounds index use in 1263 1263 the caller). 1264 1265 == 25/10/2016 == EM 1266 Updates for full physics/dynamics separation: 1267 - introduced module vertical_layers_mod.F90 in phy_common to store information 1268 about the vertical grid to be used in the physics. Routines in the physics 1269 should "use vertical_layers_mod" and not "use comvert_mod". 1270 - added nqtot to tracer_h.F90. Always "use tracer_h" in physics instead of 1271 infotrac (which is in the dynamics). 1272 - removed some purely dynamics-related outputs (etot0, zoom parameters, etc.) 1273 from diagfi.nc and stats.nc outputs as these informations are not available 1274 in the physics. 1275 - added scalheight (atmospheric scale height) in comvert_mod. 1276 -
trunk/LMDZ.GENERIC/libf/dyn3d/comvert_mod.F90
r1422 r1621 10 10 ! Mars Ce qui suit vient de gcm 11 11 REAL sig(llm+1),ds(llm),aps(llm),bps(llm),pseudoalt(llm) 12 REAL scaleheight ! atmospheric scale height (km) 12 13 13 14 END MODULE comvert_mod -
trunk/LMDZ.GENERIC/libf/dyn3d/disvert.F
r1422 r1621 5 5 USE callkeys_mod, ONLY: kastprof,pceil 6 6 USE comvert_mod, ONLY: ap,bp,sig,nivsigs,nivsig,pa,preff, 7 . aps,bps,presnivs,pseudoalt 7 . aps,bps,presnivs,pseudoalt,scaleheight 8 8 9 9 c Auteur : F. Forget Y. Wanherdrick, P. Levan … … 31 31 INTEGER l,ll 32 32 REAL snorm 33 REAL alpha,beta,gama,delta,deltaz, h,quoi,quand33 REAL alpha,beta,gama,delta,deltaz,quoi,quand 34 34 REAL zsig(llm) 35 35 INTEGER np,ierr … … 108 108 PRINT*,'****************************' 109 109 110 READ(99,*) h110 READ(99,*) scaleheight 111 111 do l=1,llm 112 112 read(99,*) zsig(l) … … 117 117 if(autozlevs)then 118 118 open(91,file="z2sig.def",form='formatted') 119 read(91,*) h119 read(91,*) scaleheight 120 120 DO l=1,llm-2 121 121 read(91,*) Hmax … … 126 126 print*,'Auto-shifting h in disvert.F to:' 127 127 ! h = Hmax / log(psurf/100.0) 128 h= Hmax / log(psurf/pceil)129 print*,'h = ', h,' km'128 scaleheight = Hmax / log(psurf/pceil) 129 print*,'h = ',scaleheight,' km' 130 130 endif 131 131 132 132 sig(1)=1 133 133 do l=2,llm 134 sig(l) = 0.5 * ( exp(-zsig(l)/h) + exp(-zsig(l-1)/h) ) 134 sig(l) = 0.5 * ( exp(-zsig(l)/scaleheight) + 135 & exp(-zsig(l-1)/scaleheight) ) 135 136 end do 136 137 sig(llm+1)=0 … … 223 224 DO l = 1, llm 224 225 presnivs(l) = aps(l)+bps(l)*preff 225 pseudoalt(l) = - h*log(presnivs(l)/preff)226 pseudoalt(l) = -scaleheight*log(presnivs(l)/preff) 226 227 ENDDO 227 228 -
trunk/LMDZ.GENERIC/libf/dynphy_lonlat/inigeomphy_mod.F90
r1573 r1621 21 21 USE mod_interface_dyn_phys, ONLY : init_interface_dyn_phys 22 22 USE nrtype, ONLY: pi 23 USE comvert_mod, ONLY: preff, ap, bp, aps, bps, presnivs, & 24 scaleheight, pseudoalt 25 USE vertical_layers_mod, ONLY: init_vertical_layers 23 26 IMPLICIT NONE 24 27 … … 213 216 airefi,cufi,cvfi) 214 217 218 ! copy over preff , ap(), bp(), etc 219 CALL init_vertical_layers(nlayer,preff,scaleheight, & 220 ap,bp,aps,bps,presnivs,pseudoalt) 221 215 222 !$OMP END PARALLEL 216 223 -
trunk/LMDZ.GENERIC/libf/phystd/dyn1d/rcm1d.F
r1576 r1621 24 24 use callkeys_mod, only: tracer,check_cpp_match,rings_shadow, 25 25 & specOLR,water,pceil,ok_slab_ocean 26 USE comvert_mod, ONLY: ap,bp,aps,bps,pa,preff 26 USE comvert_mod, ONLY: ap,bp,aps,bps,pa,preff, sig, 27 & presnivs,pseudoalt,scaleheight 28 USE vertical_layers_mod, ONLY: init_vertical_layers 27 29 USE logic_mod, ONLY: hybrid,autozlevs 28 30 use regular_lonlat_mod, only: init_regular_lonlat … … 502 504 & (/0.,0.,0.,0./),(/0.,0.,0.,0./), 503 505 & cell_area) 506 ! Ehouarn: init_vertial_layers called later (because disvert not called yet) 507 ! call init_vertical_layers(nlayer,preff,scaleheight, 508 ! & ap,bp,aps,bps,presnivs,pseudoalt) 504 509 call init_dimphy(1,nlayer) ! Initialize dimphy module 505 510 call ini_planete_mod(nlayer,preff,ap,bp) … … 734 739 735 740 call disvert 741 ! now that disvert has been called, initialize module vertical_layers_mod 742 call init_vertical_layers(nlayer,preff,scaleheight, 743 & ap,bp,aps,bps,presnivs,pseudoalt) 736 744 737 745 if(.not.autozlevs)then -
trunk/LMDZ.GENERIC/libf/phystd/inistats.F
r1531 r1621 3 3 use statto_mod, only: istats,istime 4 4 use mod_phys_lmdz_para, only : is_master 5 USE comvert_mod, ONLY: ap,bp,aps,bps,preff,pseudoalt,presnivs 6 USE comconst_mod, ONLY: pi 5 USE vertical_layers_mod, ONLY: ap,bp,aps,bps,preff, 6 & pseudoalt,presnivs 7 USE nrtype, ONLY: pi 7 8 USE time_phylmdz_mod, ONLY: daysec,dtphys 8 9 USE regular_lonlat_mod, ONLY: lon_reg, lat_reg -
trunk/LMDZ.GENERIC/libf/phystd/initracer.F
r1542 r1621 46 46 c----------------------------------------------------------------------- 47 47 48 nqtot=nq 48 49 !! we allocate once for all arrays in common in tracer_h.F90 49 50 !! (supposedly those are not used before call to initracer) -
trunk/LMDZ.GENERIC/libf/phystd/iniwrite.F
r1531 r1621 3 3 use comsoil_h, only: mlayer, nsoilmx 4 4 USE comcstfi_mod, only: g, mugaz, omeg, rad, rcp, pi 5 USE comvert_mod, ONLY: ap,bp,aps,bps,pseudoalt6 USE logic_mod, ONLY: fxyhypb,ysinus7 USE serre_mod, ONLY: clon,clat,grossismx,grossismy,dzoomx,dzoomy5 USE vertical_layers_mod, ONLY: ap,bp,aps,bps,pseudoalt 6 ! USE logic_mod, ONLY: fxyhypb,ysinus 7 ! USE serre_mod, ONLY: clon,clat,grossismx,grossismy,dzoomx,dzoomy 8 8 USE time_phylmdz_mod, ONLY: daysec, dtphys 9 USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang09 ! USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang0 10 10 USE regular_lonlat_mod, ONLY: lon_reg, lat_reg 11 11 USE mod_grid_phy_lmdz, ONLY: nbp_lon, nbp_lat, nbp_lev … … 75 75 tab_cntrl(10) = daysec 76 76 tab_cntrl(11) = dtphys 77 tab_cntrl(12) = etot078 tab_cntrl(13) = ptot079 tab_cntrl(14) = ztot080 tab_cntrl(15) = stot081 tab_cntrl(16) = ang077 ! tab_cntrl(12) = etot0 78 ! tab_cntrl(13) = ptot0 79 ! tab_cntrl(14) = ztot0 80 ! tab_cntrl(15) = stot0 81 ! tab_cntrl(16) = ang0 82 82 c 83 83 c .......... P.Le Van ( ajout le 8/04/96 ) ......... 84 84 c ..... parametres pour le zoom ...... 85 tab_cntrl(17) = clon86 tab_cntrl(18) = clat87 tab_cntrl(19) = grossismx88 tab_cntrl(20) = grossismy85 ! tab_cntrl(17) = clon 86 ! tab_cntrl(18) = clat 87 ! tab_cntrl(19) = grossismx 88 ! tab_cntrl(20) = grossismy 89 89 c 90 90 c ..... ajout le 6/05/97 et le 15/10/97 ....... 91 91 c 92 IF ( fxyhypb ) THEN93 tab_cntrl(21) = 1.94 tab_cntrl(22) = dzoomx95 tab_cntrl(23) = dzoomy96 ELSE97 tab_cntrl(21) = 0.98 tab_cntrl(22) = dzoomx99 tab_cntrl(23) = dzoomy100 tab_cntrl(24) = 0.101 IF( ysinus ) tab_cntrl(24) = 1.102 ENDIF92 ! IF ( fxyhypb ) THEN 93 ! tab_cntrl(21) = 1. 94 ! tab_cntrl(22) = dzoomx 95 ! tab_cntrl(23) = dzoomy 96 ! ELSE 97 ! tab_cntrl(21) = 0. 98 ! tab_cntrl(22) = dzoomx 99 ! tab_cntrl(23) = dzoomy 100 ! tab_cntrl(24) = 0. 101 ! IF( ysinus ) tab_cntrl(24) = 1. 102 ! ENDIF 103 103 104 104 c ......................................................... -
trunk/LMDZ.GENERIC/libf/phystd/iniwrite_specIR.F
r1531 r1621 5 5 use comcstfi_mod, only: rad, omeg, g, mugaz, rcp, pi 6 6 use time_phylmdz_mod, only: daysec, dtphys 7 USE logic_mod, ONLY: fxyhypb,ysinus8 USE serre_mod, ONLY: clon,clat,grossismx,grossismy,dzoomx,dzoomy9 USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang07 ! USE logic_mod, ONLY: fxyhypb,ysinus 8 ! USE serre_mod, ONLY: clon,clat,grossismx,grossismy,dzoomx,dzoomy 9 ! USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang0 10 10 USE regular_lonlat_mod, ONLY: lon_reg, lat_reg 11 11 USE mod_grid_phy_lmdz, ONLY: nbp_lon, nbp_lat, nbp_lev … … 77 77 tab_cntrl(10) = daysec 78 78 tab_cntrl(11) = dtphys 79 tab_cntrl(12) = etot080 tab_cntrl(13) = ptot081 tab_cntrl(14) = ztot082 tab_cntrl(15) = stot083 tab_cntrl(16) = ang079 ! tab_cntrl(12) = etot0 80 ! tab_cntrl(13) = ptot0 81 ! tab_cntrl(14) = ztot0 82 ! tab_cntrl(15) = stot0 83 ! tab_cntrl(16) = ang0 84 84 c 85 85 c .......... P.Le Van ( ajout le 8/04/96 ) ......... 86 86 c ..... parametres pour le zoom ...... 87 tab_cntrl(17) = clon88 tab_cntrl(18) = clat89 tab_cntrl(19) = grossismx90 tab_cntrl(20) = grossismy87 ! tab_cntrl(17) = clon 88 ! tab_cntrl(18) = clat 89 ! tab_cntrl(19) = grossismx 90 ! tab_cntrl(20) = grossismy 91 91 c 92 92 c ..... ajout le 6/05/97 et le 15/10/97 ....... 93 93 c 94 IF ( fxyhypb ) THEN95 tab_cntrl(21) = 1.96 tab_cntrl(22) = dzoomx97 tab_cntrl(23) = dzoomy98 ELSE99 tab_cntrl(21) = 0.100 tab_cntrl(22) = dzoomx101 tab_cntrl(23) = dzoomy102 tab_cntrl(24) = 0.103 IF( ysinus ) tab_cntrl(24) = 1.104 ENDIF94 ! IF ( fxyhypb ) THEN 95 ! tab_cntrl(21) = 1. 96 ! tab_cntrl(22) = dzoomx 97 ! tab_cntrl(23) = dzoomy 98 ! ELSE 99 ! tab_cntrl(21) = 0. 100 ! tab_cntrl(22) = dzoomx 101 ! tab_cntrl(23) = dzoomy 102 ! tab_cntrl(24) = 0. 103 ! IF( ysinus ) tab_cntrl(24) = 1. 104 ! ENDIF 105 105 106 106 c ......................................................... -
trunk/LMDZ.GENERIC/libf/phystd/iniwrite_specVI.F
r1531 r1621 5 5 use comcstfi_mod, only: rad, omeg, g, mugaz, rcp, pi 6 6 use time_phylmdz_mod, only: daysec, dtphys 7 USE logic_mod, ONLY: fxyhypb,ysinus8 USE serre_mod, ONLY: clon,clat,grossismx,grossismy,dzoomx,dzoomy9 USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang07 ! USE logic_mod, ONLY: fxyhypb,ysinus 8 ! USE serre_mod, ONLY: clon,clat,grossismx,grossismy,dzoomx,dzoomy 9 ! USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang0 10 10 USE regular_lonlat_mod, ONLY: lon_reg, lat_reg 11 11 USE mod_grid_phy_lmdz, ONLY: nbp_lon, nbp_lat, nbp_lev … … 77 77 tab_cntrl(10) = daysec 78 78 tab_cntrl(11) = dtphys 79 tab_cntrl(12) = etot080 tab_cntrl(13) = ptot081 tab_cntrl(14) = ztot082 tab_cntrl(15) = stot083 tab_cntrl(16) = ang079 ! tab_cntrl(12) = etot0 80 ! tab_cntrl(13) = ptot0 81 ! tab_cntrl(14) = ztot0 82 ! tab_cntrl(15) = stot0 83 ! tab_cntrl(16) = ang0 84 84 c 85 85 c .......... P.Le Van ( ajout le 8/04/96 ) ......... 86 86 c ..... parametres pour le zoom ...... 87 tab_cntrl(17) = clon88 tab_cntrl(18) = clat89 tab_cntrl(19) = grossismx90 tab_cntrl(20) = grossismy87 ! tab_cntrl(17) = clon 88 ! tab_cntrl(18) = clat 89 ! tab_cntrl(19) = grossismx 90 ! tab_cntrl(20) = grossismy 91 91 c 92 92 c ..... ajout le 6/05/97 et le 15/10/97 ....... 93 93 c 94 IF ( fxyhypb ) THEN95 tab_cntrl(21) = 1.96 tab_cntrl(22) = dzoomx97 tab_cntrl(23) = dzoomy98 ELSE99 tab_cntrl(21) = 0.100 tab_cntrl(22) = dzoomx101 tab_cntrl(23) = dzoomy102 tab_cntrl(24) = 0.103 IF( ysinus ) tab_cntrl(24) = 1.104 ENDIF94 ! IF ( fxyhypb ) THEN 95 ! tab_cntrl(21) = 1. 96 ! tab_cntrl(22) = dzoomx 97 ! tab_cntrl(23) = dzoomy 98 ! ELSE 99 ! tab_cntrl(21) = 0. 100 ! tab_cntrl(22) = dzoomx 101 ! tab_cntrl(23) = dzoomy 102 ! tab_cntrl(24) = 0. 103 ! IF( ysinus ) tab_cntrl(24) = 1. 104 ! ENDIF 105 105 106 106 c ......................................................... -
trunk/LMDZ.GENERIC/libf/phystd/iostart.F90
r1315 r1621 467 467 USE mod_grid_phy_lmdz, only: klon_glo 468 468 USE dimphy, only: klev, klevp1 469 USE infotrac, only: nqtot469 USE tracer_h, only: nqtot 470 470 USE comsoil_h, only: nsoilmx 471 471 USE slab_ice_h, only: noceanmx -
trunk/LMDZ.GENERIC/libf/phystd/phyetat0.F90
r1493 r1621 5 5 6 6 7 USE infotrac, ONLY: tname7 USE tracer_h, ONLY: noms 8 8 USE surfdat_h, only: phisfi, albedodat, zmea, zstd, zsig, zgam, zthe 9 9 use iostart, only: nid_start, open_startphy, close_startphy, & … … 375 375 if (nq.ge.1) then 376 376 do iq=1,nq 377 txt= tname(iq)377 txt=noms(iq) 378 378 379 379 !! There was a bug here. MT2015. -
trunk/LMDZ.GENERIC/libf/phystd/phyredem.F90
r1543 r1621 141 141 use iostart, only : open_restartphy, close_restartphy, & 142 142 put_var, put_field 143 use infotrac, only: tname143 use tracer_h, only: noms 144 144 use slab_ice_h, only: noceanmx 145 145 use callkeys_mod, only: ok_slab_ocean … … 207 207 if (nq>0) then 208 208 do iq=1,nq 209 call put_field( tname(iq),"tracer on surface",qsurf(:,iq))209 call put_field(noms(iq),"tracer on surface",qsurf(:,iq)) 210 210 enddo 211 211 endif ! of if (nq>0) -
trunk/LMDZ.GENERIC/libf/phystd/tracer_h.F90
r1315 r1621 3 3 4 4 implicit none 5 6 ! nqtot : total number of tracers 7 INTEGER, SAVE :: nqtot 8 !$OMP THREADPRIVATE(nqtot) 5 9 6 10 character*20, DIMENSION(:), ALLOCATABLE :: noms ! name of the tracer
Note: See TracChangeset
for help on using the changeset viewer.