Changeset 1310
- Timestamp:
- Jul 10, 2014, 5:59:16 PM (10 years ago)
- Location:
- trunk/LMDZ.VENUS
- Files:
-
- 29 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.VENUS/deftank/physiq.def
r1305 r1310 2 2 # 3 3 # PARAMETRES ANCIENNEMENT DANS gcm.def 4 ##~~~~~~~~~~~~~~~~~~~~~~~~~ 4 5 ## Cycle diurne ou non 5 6 cycle_diurne=y … … 21 22 # 22 23 # Parametres fichiers de sortie 24 ##~~~~~~~~~~~~~~~~~~~~~~~~~ 23 25 # 24 26 ### OK_journe= y sortir fichier journalier histday.nc, =n pas de fichier histday.nc … … 49 51 # 50 52 # parametres climatiques 53 ##~~~~~~~~~~~~~~~~~~~~~~~~~ 51 54 # 52 55 # VENUS ## … … 60 63 # 61 64 # parameters for the tracers 65 ##~~~~~~~~~~~~~~~~~~~~~~~~~ 62 66 # 63 67 # 0: nothing (passive tracers) … … 68 72 # 69 73 # parameters for chemistry and microphysics 74 ##~~~~~~~~~~~~~~~~~~~~~~~~~ 70 75 # 71 76 reinit_trac=n … … 75 80 # 76 81 # parametres boundary layer 82 ##~~~~~~~~~~~~~~~~~~~~~~~~~ 77 83 # 78 84 iflag_pbl=8 … … 85 91 # 86 92 # parametre convection seche 93 ##~~~~~~~~~~~~~~~~~~~~~~~~~ 87 94 # 88 95 iflag_ajs = 1 96 # 97 # parametres nlte 98 ##~~~~~~~~~~~~~~~~~~~~~~~~~ 99 # 100 ##Pour avoir acces a tmoy 101 moyzon_ch=y 102 ##Physique non-LTE ou non 103 callnlte=n 104 ## choix pour profil des especes 105 nltemodel=2 106 ##Absorption IR du CO2 ou non 107 callnirco2=n 108 ##Choix modele absorption IR du CO2 109 nircorr=0 110 ##Thermosphere ou non 111 callthermos=n 89 112 113 ## Thermospheric options 114 ##~~~~~~~~~~~~~~~~~~~~~~~~~ 115 #Method to include solar variability? 116 #0-> Old method 1-> Variability with E10.7 as observed 117 solvarmod=0 118 119 ## (Solar min=1996.4 ave=1993.4 max=1990.6) ; Only used if solvarmod=0 120 solarcondate = 1993.4 121 122 # value for the UV heating efficiency 123 ##(experimental values between 0.19 and 0.23, lower values may 124 ## be used to compensate for low 15 um cooling) 125 euveff = 0.21 126 -
trunk/LMDZ.VENUS/libf/phyvenus/clesphys.h
r1305 r1310 1 1 ! 2 2 ! ATTENTION!!!!: ce fichier include est compatible format fixe/format libre 3 ! veillez n 'utiliser que des ! pour les commentaires3 ! veillez n utiliser que des ! pour les commentaires 4 4 ! et bien positionner les & des lignes de continuation 5 5 ! (les placer en colonne 6 et en colonne 73) … … 11 11 LOGICAL ok_orodr,ok_orolf,ok_gw_nonoro 12 12 LOGICAL ok_kzmin 13 LOGICAL callnlte,callnirco2,callthermos 13 14 LOGICAL ok_cloud, ok_chem, reinit_trac, ok_sedim 14 15 INTEGER nbapp_rad, nbapp_chim, iflag_con, iflag_ajs 15 16 INTEGER lev_histins, lev_histday, lev_histmth 16 17 INTEGER tr_scheme 18 INTEGER nircorr, nltemodel, solvarmod 17 19 REAL ecriphy 18 20 REAL solaire 19 21 REAL z0, lmixmin 20 22 REAL ksta, inertie 23 REAL euveff, solarcondate 21 24 22 25 COMMON/clesphys_l/ cycle_diurne, soil_model, & 23 26 & ok_orodr, ok_orolf, ok_gw_nonoro, ok_kzmin, & 27 & callnlte,callnirco2,callthermos, & 24 28 & ok_cloud, ok_chem, reinit_trac, ok_sedim 25 29 26 30 COMMON/clesphys_i/ nbapp_rad, nbapp_chim, & 27 31 & iflag_con, iflag_ajs, & 28 & lev_histins, lev_histday, lev_histmth, tr_scheme 32 & lev_histins, lev_histday, lev_histmth, tr_scheme, & 33 & nircorr, nltemodel, solvarmod 29 34 30 35 COMMON/clesphys_r/ ecriphy, solaire, z0, lmixmin, & 31 & ksta, inertie 36 & ksta, inertie, euveff, solarcondate 32 37 -
trunk/LMDZ.VENUS/libf/phyvenus/conf_phys.F90
r1305 r1310 362 362 call getin('ok_sedim',ok_sedim) 363 363 364 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 365 ! PARAMETER FOR NLTE PHYSICS 366 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 367 368 ! 369 !Config Key = callnlte 370 !Config Desc = 371 !Config Def = .false. 372 !Config Help = 373 ! 374 callnlte = .false. 375 call getin('callnlte',callnlte) 376 377 ! 378 !Config Key = callnirco2 379 !Config Desc = 380 !Config Def = .false. 381 ! 382 callnirco2 = .false. 383 call getin('callnirco2',callnirco2) 384 385 ! 386 !Config Key = nircorr 387 !Config Desc = 388 !Config Def = 0 389 !Config Help = 390 ! 391 nircorr = 0 392 call getin('nircorr',nircorr) 393 394 ! 395 !Config Key = callthermos 396 !Config Desc = 397 !Config Def = .false. 398 !Config Help = 399 ! 400 callthermos = .false. 401 call getin('callthermos',callthermos) 402 403 ! 404 !Config Key = nltemodel 405 !Config Desc = 406 !Config Def = 0 407 !Config Help = 408 ! 409 nltemodel = 0 410 call getin('nltemodel',nltemodel) 411 412 ! 413 !Config Key = solvarmod 414 !Config Desc = 415 !Config Def = 1 416 !Config Help = 417 ! 418 solvarmod = 1 419 call getin('solvarmod',solvarmod) 420 421 ! 422 !Config Key = solarcondate 423 !Config Desc = 424 !Config Def = 1993.4 425 !Config Help = 426 ! 427 solarcondate = 1993.4 428 call getin('solarcondate',solarcondate) 429 430 ! 431 !Config Key = euveff 432 !Config Desc = 433 !Config Def = 0.21 434 !Config Help = 435 ! 436 euveff = 0.21 437 call getin('euveff',euveff) 438 364 439 ! 365 440 ! … … 409 484 write(numout,*)' ok_chem = ',ok_chem 410 485 write(numout,*)' ok_sedim = ',ok_sedim 486 write(numout,*)' callnlte = ',callnlte 487 write(numout,*)' nltemodel = ',nltemodel 488 write(numout,*)' callnirco2 = ',callnirco2 489 write(numout,*)' nircorr = ',nircorr 490 write(numout,*)' callthermos = ',callthermos 491 write(numout,*)' solvarmod = ',solvarmod 492 write(numout,*)' solarcondate = ',solarcondate 493 write(numout,*)' euveff = ',euveff 411 494 412 495 return -
trunk/LMDZ.VENUS/libf/phyvenus/phys_state_var_mod.F90
r973 r1310 43 43 !$OMP THREADPRIVATE(zuthe,zvthe) 44 44 ! 45 ! composition for upper atmosphere 46 REAL,ALLOCATABLE,SAVE :: co2vmr_gcm(:,:) 47 !$OMP THREADPRIVATE(co2vmr_gcm) 48 REAL,ALLOCATABLE,SAVE :: ovmr_gcm(:,:) 49 !$OMP THREADPRIVATE(ovmr_gcm) 50 REAL,ALLOCATABLE,SAVE :: n2vmr_gcm(:,:) 51 !$OMP THREADPRIVATE(n2vmr_gcm) 52 REAL,ALLOCATABLE,SAVE :: nvmr_gcm(:,:) 53 !$OMP THREADPRIVATE(nvmr_gcm) 54 REAL,ALLOCATABLE,SAVE :: covmr_gcm(:,:) 55 !$OMP THREADPRIVATE(covmr_gcm) 56 57 ! Tendencies due to radiative scheme [K/s] 45 58 ! heat : chauffage solaire 46 59 ! heat0: chauffage solaire ciel clair 47 60 ! cool : refroidissement infrarouge 48 61 ! cool0 : refroidissement infrarouge ciel clair 62 REAL,ALLOCATABLE,SAVE :: heat(:,:) 63 !$OMP THREADPRIVATE(heat) 64 REAL,ALLOCATABLE,SAVE :: heat0(:,:) 65 !$OMP THREADPRIVATE(heat0) 66 REAL,ALLOCATABLE,SAVE :: cool(:,:) 67 !$OMP THREADPRIVATE(cool) 68 REAL,ALLOCATABLE,SAVE :: cool0(:,:) 69 !$OMP THREADPRIVATE(cool0) 70 REAL,ALLOCATABLE,SAVE :: dtsw(:,:) 71 !$OMP THREADPRIVATE(dtsw) 72 REAL,ALLOCATABLE,SAVE :: dtlw(:,:) 73 !$OMP THREADPRIVATE(dtlw) 74 REAL,ALLOCATABLE,SAVE :: d_t_rad(:,:),d_t_euv(:,:) 75 !$OMP THREADPRIVATE(d_t_rad,d_t_euv) 76 REAL,ALLOCATABLE,SAVE :: d_t_nirco2(:,:),d_t_nlte(:,:) 77 !$OMP THREADPRIVATE(d_t_nirco2,d_t_nlte) 78 79 ! Fluxes (W/m2) 49 80 ! sollwdown : downward LW flux at surface 50 81 ! sollwdownclr : downward CS LW flux at surface … … 55 86 REAL,ALLOCATABLE,SAVE :: lwnet(:,:) 56 87 !$OMP THREADPRIVATE(lwnet) 57 REAL,ALLOCATABLE,SAVE :: heat(:,:)58 !$OMP THREADPRIVATE(heat)59 REAL,ALLOCATABLE,SAVE :: heat0(:,:)60 !$OMP THREADPRIVATE(heat0)61 REAL,ALLOCATABLE,SAVE :: cool(:,:)62 !$OMP THREADPRIVATE(cool)63 REAL,ALLOCATABLE,SAVE :: cool0(:,:)64 !$OMP THREADPRIVATE(cool0)65 REAL,ALLOCATABLE,SAVE :: dtrad(:,:)66 !$OMP THREADPRIVATE(dtrad)67 88 REAL,ALLOCATABLE,SAVE :: topsw(:), toplw(:) 68 89 !$OMP THREADPRIVATE(topsw,toplw) … … 117 138 ALLOCATE(zuthe(klon),zvthe(klon)) 118 139 ! 119 ALLOCATE(swnet(klon,klev+1), lwnet(klon,klev+1))120 140 ALLOCATE(heat(klon,klev), heat0(klon,klev)) 121 141 ALLOCATE(cool(klon,klev), cool0(klon,klev)) 122 ALLOCATE(dtrad(klon,klev)) 142 ALLOCATE(dtlw(klon,klev),dtsw(klon,klev)) 143 ALLOCATE(d_t_rad(klon,klev),d_t_euv(klon,klev)) 144 ALLOCATE(d_t_nirco2(klon,klev),d_t_nlte(klon,klev)) 145 146 ALLOCATE(swnet(klon,klev+1), lwnet(klon,klev+1)) 123 147 ALLOCATE(topsw(klon), toplw(klon)) 124 148 ALLOCATE(solsw(klon), sollw(klon)) … … 143 167 deallocate( u_ancien, v_ancien) 144 168 deallocate(zuthe, zvthe) 145 deallocate(swnet, lwnet) 169 146 170 deallocate(heat, heat0) 147 171 deallocate(cool, cool0) 148 deallocate(dtrad) 172 deallocate(dtlw,dtsw) 173 deallocate(d_t_rad,d_t_euv) 174 deallocate(d_t_nirco2,d_t_nlte) 175 176 deallocate(swnet, lwnet) 149 177 deallocate(solsw, sollw, radsol) 150 178 deallocate(topsw, toplw) -
trunk/LMDZ.VENUS/libf/phyvenus/physiq.F
r1306 r1310 56 56 USE ioipsl 57 57 ! USE histcom ! not needed; histcom is included in ioipsl 58 USE chemparam_mod59 58 USE infotrac 60 59 USE control_mod … … 66 65 USE iophy 67 66 use cpdet_mod, only: cpdet, t2tpot 67 USE chemparam_mod 68 USE conc 69 USE compo_hedin83_mod2 70 use moyzon_mod, only: tmoy 68 71 use ieee_arithmetic 69 72 IMPLICIT none … … 86 89 #include "logic.h" 87 90 #include "tabcontrol.h" 91 #include "nirdata.h" 92 #include "hedin.h" 88 93 c====================================================================== 89 94 LOGICAL ok_journe ! sortir le fichier journalier … … 223 228 EXTERNAL mucorr 224 229 EXTERNAL phytrac 230 EXTERNAL nirco2abs 231 EXTERNAL nir_leedat 232 EXTERNAL nltecool 233 EXTERNAL nlte_tcool 234 EXTERNAL nlte_setup 235 EXTERNAL blendrad 236 EXTERNAL nlthermeq 237 EXTERNAL euvheat 238 EXTERNAL param_read 239 EXTERNAL param_read_e107 240 EXTERNAL conduction 241 EXTERNAL molvis 225 242 c 226 243 c Variables locales … … 247 264 REAL zphi(klon,klev) 248 265 REAL zzlev(klon,klev+1),zzlay(klon,klev),z1,z2 266 real tsurf(klon) 267 268 c va avec nlte_tcool 269 INTEGER ierr_nlte 270 REAL varerr 249 271 250 272 c Variables du changement … … 268 290 REAL d_u_hin(klon,klev), d_v_hin(klon,klev) 269 291 REAL d_t_hin(klon,klev) 292 293 c Tendencies due to radiative scheme [K/s] 294 c d_t_rad,dtsw,dtlw,d_t_nirco2,d_t_nlte,d_t_euv 295 c are not computed at each physical timestep 296 c therefore, they are defined and saved in phys_state_var_mod 297 298 c Tendencies due to molecular viscosity and conduction 299 real d_t_conduc(klon,klev) ! [K/s] 300 real d_u_molvis(klon,klev) ! (m/s) /s 301 real d_v_molvis(klon,klev) ! (m/s) /s 270 302 271 303 c … … 386 418 call phys_state_var_init 387 419 c 420 c Initialising Hedin model for upper atm 421 c (to be revised when coupled to chemistry) : 422 call conc_init 423 c 388 424 c Initialiser les compteurs: 389 425 c … … 458 494 C source dans couche limite 459 495 source = 0.0 ! pas de source, pour l'instant 460 C461 496 c--------- 497 498 c--------- 499 c INITIALIZE THERMOSPHERIC PARAMETERS 500 c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 501 502 if (callthermos) then 503 if(solvarmod.eq.0) call param_read 504 if(solvarmod.eq.1) call param_read_e107 505 endif 506 507 c Initialisation (recomputed in concentration2) 508 do ig=1,klon 509 do j=1,klev 510 rnew(ig,j)=R 511 cpnew(ig,j)=cpdet(tmoy(j)) 512 c print*, ' physique l503' 513 c print*, j, cpdet(tmoy(j)) 514 mmean(ig,j)=RMD 515 akknew(ig,j)=1.e-4 516 enddo 517 c stop 518 519 enddo 520 521 IF(callthermos.or.callnlte.or.callnirco2) THEN 522 call compo_hedin83_init2 523 ENDIF 524 if (callnlte) call nlte_setup 525 if(callnirco2.and.(nircorr.eq.1)) call nir_leedat 526 c--------- 527 462 528 c 463 529 c Verifications: … … 684 750 DO k=1,klev 685 751 DO i=1,klon 686 zzlay(i,k)=zphi(i,k)/RG 752 zzlay(i,k)=zphi(i,k)/RG ! [m] 687 753 ENDDO 688 754 ENDDO 689 755 DO i=1,klon 690 zzlev(i,1)=pphis(i)/RG 756 zzlev(i,1)=pphis(i)/RG ! [m] 691 757 ENDDO 692 758 DO k=2,klev … … 1042 1108 c==================================================================== 1043 1109 1110 c----------------------------------------------------------------------- 1111 c . Compute radiative tendencies : 1112 c------------------------------------ 1113 c==================================================================== 1044 1114 IF (MOD(itaprad,radpas).EQ.0) THEN 1045 c print*,'RAYONNEMENT ', 1046 c $ ' (itaprad=',itaprad,'/radpas=',radpas,')' 1115 c==================================================================== 1047 1116 1048 1117 dtimerad = dtime*REAL(radpas) ! pas de temps du rayonnement (s) 1049 1118 c PRINT*,'dtimerad,dtime,radpas',dtimerad,dtime,radpas 1050 1119 1120 c Calcul pour Cp rnew et mmean avec traceurs (Cp independant de T !! ) 1121 IF(callnlte.or.callthermos) THEN 1122 call compo_hedin83_mod(pplay,rmu0, 1123 & co2vmr_gcm,covmr_gcm,ovmr_gcm,n2vmr_gcm,nvmr_gcm) 1124 ENDIF 1125 1126 if(callthermos) then 1127 call concentrations2(pplay,t_seri,d_t,co2vmr_gcm, n2vmr_gcm, 1128 & covmr_gcm, ovmr_gcm,nvmr_gcm,pdtphys) 1129 endif 1130 1131 1132 c NLTE cooling from CO2 emission 1133 c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1134 1135 IF(callnlte) THEN 1136 if(nltemodel.eq.0.or.nltemodel.eq.1) then 1137 CALL nltecool(klon, klev, pplay*9.869e-6, t_seri, 1138 $ co2vmr_gcm,n2vmr_gcm, covmr_gcm, ovmr_gcm, 1139 $ d_t_nlte) 1140 else if(nltemodel.eq.2) then 1141 CALL nlte_tcool(klon,klev,pplay*9.869e-6, 1142 $ t_seri,zzlay,co2vmr_gcm, n2vmr_gcm, covmr_gcm, 1143 $ ovmr_gcm,d_t_nlte,ierr_nlte,varerr ) 1144 if(ierr_nlte.gt.0) then 1145 write(*,*) 1146 $ 'WARNING: nlte_tcool output with error message', 1147 $ 'ierr_nlte=',ierr_nlte,'varerr=',varerr 1148 write(*,*)'I will continue anyway' 1149 endif 1150 1151 endif 1152 1153 ELSE 1154 1155 d_t_nlte(:,:)=0. 1156 1157 ENDIF 1158 1159 c Find number of layers for LTE radiation calculations 1160 1161 IF(callnlte .or. callnirco2) 1162 $ CALL nlthermeq(klon, klev, paprs, pplay) 1163 1164 1165 c LTE radiative transfert / solar / IR matrix 1166 c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1167 1051 1168 CALL radlwsw 1052 1169 e (dist, rmu0, fract, zzlev, 1053 e paprs, pplay,ftsol, t_seri, 1054 s heat,cool,radsol, 1055 s topsw,toplw,solsw,sollw, 1056 s sollwdown, 1057 s lwnet, swnet) 1058 1059 itaprad = 0 1170 e paprs, pplay,ftsol, t_seri) 1171 1172 1173 c CO2 near infrared absorption 1174 c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1175 1176 d_t_nirco2(:,:)=0. 1177 if (callnirco2) then 1178 call nirco2abs (klon, klev, pplay, dist, nqmax, qx, 1179 . rmu0, fract, d_t_nirco2, 1180 . co2vmr_gcm, ovmr_gcm) 1181 endif 1182 1183 1184 c Net atmospheric radiative heating rate (K.s-1) 1185 c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1186 1187 IF(callnlte.or.callnirco2) THEN 1188 CALL blendrad(klon, klev, pplay,heat, 1189 & cool, d_t_nirco2,d_t_nlte, dtsw, dtlw) 1190 ELSE 1191 dtsw(:,:)=heat(:,:) 1192 dtlw(:,:)=-1*cool(:,:) 1193 ENDIF 1194 1195 DO k=1,klev 1196 DO i=1,klon 1197 d_t_rad(i,k) = dtsw(i,k) + dtlw(i,k) ! K/s 1198 ENDDO 1199 ENDDO 1200 1201 1202 cc--------------------------------------------- 1203 1204 c EUV heating rate (K.s-1) 1205 c ~~~~~~~~~~~~~~~~~~~~~~~~ 1206 1207 d_t_euv(:,:)=0. 1208 1209 IF (callthermos) THEN 1210 1211 c call thermosphere(zplev,zplay,dist_sol, 1212 c $ mu0,ptimestep,ptime,zday,tsurf,zzlev,zzlay, 1213 c & pt,pq,pu,pv,pdt,pdq, 1214 c $ zdteuv,zdtconduc,zdumolvis,zdvmolvis,zdqmoldiff) 1215 1216 call euvheat(klon, klev, t_seri,paprs,pplay,zzlay, 1217 $ rmu0,pdtphys,gmtime,rjourvrai, 1218 C $ pq,pdq,zdteuv) 1219 $ co2vmr_gcm, n2vmr_gcm, covmr_gcm, 1220 $ ovmr_gcm,nvmr_gcm,d_t_euv ) 1221 1222 DO k=1,klev 1223 DO ig=1,klon 1224 d_t_rad(ig,k)=d_t_rad(ig,k)+d_t_euv(ig,k) 1225 1226 ENDDO 1227 ENDDO 1228 1229 ENDIF ! callthermos 1230 1231 c==================================================================== 1232 itaprad = 0 1233 ENDIF ! radpas 1234 c==================================================================== 1235 c 1236 c Ajouter la tendance des rayonnements (tous les pas) 1237 c 1060 1238 DO k = 1, klev 1061 1239 DO i = 1, klon 1062 dtrad(i,k) = heat(i,k)-cool(i,k) !K/s 1063 ENDDO 1064 ENDDO 1065 1066 ENDIF 1067 itaprad = itaprad + 1 1068 c==================================================================== 1069 c 1070 c Ajouter la tendance des rayonnements (tous les pas) 1071 c 1072 DO k = 1, klev 1073 DO i = 1, klon 1074 t_seri(i,k) = t_seri(i,k) + dtrad(i,k) * dtime 1075 ENDDO 1076 ENDDO 1077 1240 t_seri(i,k) = t_seri(i,k) + d_t_rad(i,k) * dtime 1241 ENDDO 1242 ENDDO 1243 1244 ! CONDUCTION and MOLECULAR VISCOSITY 1245 c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1246 1247 d_t_conduc(:,:)=0. 1248 d_u_molvis(:,:)=0. 1249 d_v_molvis(:,:)=0. 1250 1251 IF (callthermos) THEN 1252 1253 tsurf(:)=t_seri(:,1) 1254 call conduction(klon, klev,pdtphys, 1255 $ pplay,paprs,t_seri, 1256 $ tsurf,zzlev,zzlay,d_t_conduc) 1257 1258 call molvis(klon, klev,pdtphys, 1259 $ pplay,paprs,t_seri, 1260 $ u,tsurf,zzlev,zzlay,d_u_molvis) 1261 1262 call molvis(klon, klev, pdtphys, 1263 $ pplay,paprs,t_seri, 1264 $ v,tsurf,zzlev,zzlay,d_u_molvis) 1265 1266 DO k=1,klev 1267 DO ig=1,klon 1268 t_seri(ig,k)= t_seri(ig,k)+ d_t_conduc(ig,k)*dtime ! [K] 1269 u_seri(ig,k)= u_seri(ig,k)+ d_u_molvis(ig,k)*dtime ! m/s 1270 v_seri(ig,k)= v_seri(ig,k)+ d_v_molvis(ig,k)*dtime ! m/s 1271 ENDDO 1272 ENDDO 1273 1274 ENDIF ! callthermos 1275 1276 c==================================================================== 1078 1277 ! tests: output tendencies 1079 1278 ! call writefield_phy('physiq_dtrad',dtrad,klev) -
trunk/LMDZ.VENUS/libf/phyvenus/radlwsw.F
r1301 r1310 3 3 ! 4 4 SUBROUTINE radlwsw(dist, rmu0, fract, zzlev, 5 . paprs, pplay,tsol, t, 6 . heat,cool,radsol, 7 . topsw,toplw,solsw,sollw, 8 . sollwdown, 9 . lwnet, swnet) 5 . paprs, pplay,tsol, t) 10 6 c 11 7 c====================================================================== … … 16 12 c rmu0-----input-R- cosinus de l'angle zenithal 17 13 c fract----input-R- duree d'ensoleillement normalisee 18 c solaire--input-R- constante solaire (W/m**2) (dans clesphys.h)19 14 c zzlev----input-R- altitude a inter-couche (m) 20 15 c paprs----input-R- pression a inter-couche (Pa) … … 22 17 c tsol-----input-R- temperature du sol (en K) 23 18 c t--------input-R- temperature (K) 24 c heat-----output-R- echauffement atmospherique (visible) (K/s)25 c cool-----output-R- refroidissement dans l'IR (K/s)26 c radsol---output-R- bilan radiatif net au sol (W/m**2) (+ vers le bas)27 c topsw----output-R- flux solaire net au sommet de l'atm. (+ vers le bas)28 c toplw----output-R- ray. IR net au sommet de l'atmosphere (+ vers le haut)29 c solsw----output-R- flux solaire net a la surface (+ vers le bas)30 c sollw----output-R- ray. IR net a la surface (+ vers le bas)31 c sollwdown-output-R- ray. IR descendant a la surface (+ vers le bas)32 c lwnet____output-R- flux IR net (+ vers le haut)33 c swnet____output-R- flux solaire net (+ vers le bas)34 c35 19 36 20 c MODIFS pour multimatrices ksi SPECIFIQUE VENUS … … 39 23 c New ksi matrix: possibility of different cloud model fct of lat 05/2014 40 24 25 c With extension NLTE (G. Gilli, 2014) 26 41 27 c====================================================================== 42 28 use dimphy 43 29 USE comgeomphy 30 USE phys_state_var_mod, only: heat,cool,radsol, 31 . topsw,toplw,solsw,sollw,sollwdown,lwnet,swnet 44 32 use write_field_phy 45 33 IMPLICIT none … … 48 36 #include "clesphys.h" 49 37 #include "comcstVE.h" 38 #include "nlteparams.h" 50 39 51 40 !=========== … … 58 47 real tsol(klon) 59 48 real t(klon,klev) 60 real heat(klon,klev), cool(klon,klev)61 real radsol(klon), topsw(klon), toplw(klon)62 real solsw(klon), sollw(klon)63 real sollwdown(klon)64 REAL swnet(klon,klev+1),lwnet(klon,klev+1)65 49 66 50 !=========== … … 293 277 ENDDO 294 278 295 DO k = 1, klev296 heat (j,k) = zheat(k)297 cool (j,k) = zcool(k)298 ENDDO299 279 c 280 C heat/cool with upper atmosphere 281 C 282 IF(callnlte) THEN 283 DO k = 1,nlaylte 284 heat(j,k) = zheat(k) 285 cool(j,k) = zcool(k) 286 ENDDO 287 c Zero tendencies for any remaining layers between nlaylte and klev 288 if (klev.gt.nlaylte) then 289 do k = nlaylte+1, klev 290 heat(j,k) = 0. 291 cool(j,k) = 0. 292 enddo 293 endif 294 ELSE 295 DO k = 1, klev 296 heat(j,k) = zheat(k) 297 cool(j,k) = zcool(k) 298 ENDDO 299 ENDIF ! callnlte 300 300 301 ENDDO ! of DO j = 1, klon 301 302 c+++++++ FIN BOUCLE SUR LA GRILLE +++++++++++++++++++++++++ 303 302 304 ! for tests: write output fields... 303 305 ! call writefield_phy('radlwsw_heat',heat,klev) -
trunk/LMDZ.VENUS/libf/phyvenus/radlwsw.NewtonCool
r1301 r1310 3 3 ! 4 4 SUBROUTINE radlwsw(dist, rmu0, fract, zzlev, 5 . paprs, pplay,tsol, pt , nq, nmicro, pq,qaer)5 . paprs, pplay,tsol, pt) 6 6 7 7 c====================================================================== … … 25 25 use dimphy 26 26 USE comgeomphy 27 USE phys_state_var_mod, only: falbe,heat,cool,radsol,27 USE phys_state_var_mod, only: heat,cool,radsol, 28 28 . topsw,toplw,solsw,sollw,sollwdown,lwnet,swnet 29 29 USE write_field_phy … … 34 34 35 35 c ARGUMENTS 36 INTEGER nq,nmicro37 36 real rmu0(klon), fract(klon), dist 38 37 … … 40 39 real tsol(klon) 41 40 real pt(klon,klev) 42 real pq(klon,klev,nq)43 REAL qaer(klon,klev,nq)44 41 45 42 c LOCAL VARIABLES -
trunk/LMDZ.VENUS/libf/phyvenus/sw_venus_dc.F
r1301 r1310 1 SUBROUTINE SW_venus_dc( 1 SUBROUTINE SW_venus_dc(PRMU0, PFRAC, 2 2 S PPB, pt, 3 3 S PHEAT, … … 27 27 C -------------- 28 28 C ORIGINAL : 27/07/2005 29 c L.Salmi : june 2013 astuce to reduce the excess of NIR 30 c in the transition region LTE/LTE 31 c 32 c G.Gilli : feb 2014 29 33 C ------------------------------------------------------------------ 30 34 C … … 64 68 real zldn ! downward IR flux (W/m**2) ? 65 69 real zlup ! upward IR flux (W/m**2) ? 66 real zsolnet(nldc )! for testing mean net solar flux in DC70 real zsolnet(nldc+1) ! for testing mean net solar flux in DC 67 71 character*22 nullchar 68 72 real sza0,factsza,factflux -
trunk/LMDZ.VENUS/libf/phyvenus/write_histday.h
r1301 r1310 87 87 call histwrite_phy(nid_day,.false.,"dtajs",itau_w,d_t_ajs) 88 88 c en K/s 89 call histwrite_phy(nid_day,.false.,"dtswr",itau_w, heat)89 call histwrite_phy(nid_day,.false.,"dtswr",itau_w,dtsw) 90 90 c en K/s 91 call histwrite_phy(nid_day,.false.,"dtlwr",itau_w, -1.*cool)91 call histwrite_phy(nid_day,.false.,"dtlwr",itau_w,dtlw) 92 92 c en K/s 93 93 c call histwrite_phy(nid_day,.false.,"dtec",itau_w,d_t_ec) -
trunk/LMDZ.VENUS/libf/phyvenus/write_histins.h
r1305 r1310 104 104 call histwrite_phy(nid_ins,.false.,"dtajs",itau_w,d_t_ajs) 105 105 c en K/s 106 call histwrite_phy(nid_ins,.false.,"dtswr",itau_w, heat)106 call histwrite_phy(nid_ins,.false.,"dtswr",itau_w,dtsw) 107 107 c en K/s 108 call histwrite_phy(nid_ins,.false.,"dtlwr",itau_w, -1.*cool)108 call histwrite_phy(nid_ins,.false.,"dtlwr",itau_w,dtlw) 109 109 c en K/s 110 110 c call histwrite_phy(nid_ins,.false.,"dtec",itau_w,d_t_ec) -
trunk/LMDZ.VENUS/libf/phyvenus/write_histmth.h
r1301 r1310 87 87 call histwrite_phy(nid_mth,.false.,"dtajs",itau_w,d_t_ajs) 88 88 c en K/s 89 call histwrite_phy(nid_mth,.false.,"dtswr",itau_w, heat)89 call histwrite_phy(nid_mth,.false.,"dtswr",itau_w,dtsw) 90 90 c en K/s 91 call histwrite_phy(nid_mth,.false.,"dtlwr",itau_w, -1.*cool)91 call histwrite_phy(nid_mth,.false.,"dtlwr",itau_w,dtlw) 92 92 c en K/s 93 93 c call histwrite_phy(nid_mth,.false.,"dtec",itau_w,d_t_ec)
Note: See TracChangeset
for help on using the changeset viewer.