Changeset 1452 for trunk/LMDZ.VENUS/libf
- Timestamp:
- Jun 16, 2015, 1:26:46 PM (10 years ago)
- Location:
- trunk/LMDZ.VENUS/libf/phyvenus
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.VENUS/libf/phyvenus/conc.F90
r1310 r1452 6 6 REAL, ALLOCATABLE, SAVE :: mmean(:,:) 7 7 !$OMP THREADPRIVATE(mmean) 8 REAL, ALLOCATABLE, SAVE :: rho(:,:) 9 !$OMP THREADPRIVATE(rho) 8 10 REAL, ALLOCATABLE, SAVE :: Akknew(:,:) 9 11 !$OMP THREADPRIVATE(Akknew) … … 70 72 #include"param.h" 71 73 72 ALLOCATE(mmean(klon,klev)) 74 ALLOCATE(mmean(klon,klev)) 75 ALLOCATE(rho(klon,klev)) 73 76 ALLOCATE(Akknew(klon,klev)) 74 77 ALLOCATE(rnew(klon,klev)) … … 102 105 103 106 end module conc 104 107 -
trunk/LMDZ.VENUS/libf/phyvenus/concentrations2.F
r1442 r1452 1 SUBROUTINE concentrations2(pplay,t_seri,pdt,tr_seri, nqmx, 2 $ ptimestep) 1 SUBROUTINE concentrations2(pplay,t_seri,pdt,tr_seri, nqmx) 3 2 4 3 use dimphy 5 use conc, only: mmean, Akknew, rnew, cpnew4 use conc, only: mmean, rho, Akknew, rnew, cpnew 6 5 use cpdet_mod, only: cpdet 7 6 USE chemparam_mod … … 213 212 214 213 ! mmean : mean molecular mass 214 ! rho : mass density [kg/m3] 215 215 ! rnew : specific gas constant 216 216 217 217 mmean(:,:) = 0. 218 rho(:,:) = 0. 218 219 219 220 do l = 1,klev 220 221 do ig = 1,klon 221 222 do i = 1,nqmx 222 iq = niq(i)223 c iq = niq(i) 223 224 mmean(ig,l) = mmean(ig,l) + zq(ig,l,i)/M_tr(i) 224 225 end do 225 c mmean(ig,l) = RMD226 226 mmean(ig,l) = 1./mmean(ig,l) 227 227 rnew(ig,l) = 8.314/mmean(ig,l)*1.e3 ! J/kg K 228 228 229 c write(*,*),'Mmean: ',ig, l, mmean( 0,l)229 c write(*,*),'Mmean: ',ig, l, mmean(ig,l) 230 230 end do 231 231 end do … … 241 241 242 242 ntot = pplay(ig,l)/(RKBOL*zt(ig,l))*1.e-6 ! in #/cm3 243 rho(ig,l) = (ntot * mmean(ig,l))/RNAVO*1.e3 ! in kg/m3 244 245 c write(*,*),'Air density: ',ig, l, rho(0,l) 243 246 244 247 !!! --- INSERT N2 values ---- -
trunk/LMDZ.VENUS/libf/phyvenus/ini_histins.h
r1442 r1452 101 101 c . "ins(X)", zsto,zout) 102 102 c 103 c plusieurs traceurs 104 if (ok_chem) THEN 103 CALL histdef(nid_mth, "mmean", "Mean molecular mass", "g/mol", 104 . iim,jj_nb,nhori, klev,1,klev,nvert, 32, 105 . "ave(X)", zsto,zout) 106 107 CALL histdef(nid_mth, "rho", "Air density [mass/Vol]", "kg/m3", 108 . iim,jj_nb,nhori, klev,1,klev,nvert, 32, 109 . "ave(X)", zsto,zout) 110 111 112 c plusieurs traceurs !!!outputs in [vmr] 113 IF (iflag_trac.eq.1) THEN 105 114 DO iq=1,nqmax 106 c DO iq=1,10107 115 IF (iq.LE.99) THEN 108 116 WRITE(str2,'(i2.2)') iq … … 115 123 ENDIF 116 124 ENDDO 125 ENDIF 126 127 IF (callthermos .and. ok_chem) THEN 117 128 CALL histdef(nid_mth, "d_qmoldif CO2", "Dif molec" , "kg/kg", 118 129 . iim,jj_nb,nhori, klev,1,klev,nvert, 32, … … 124 135 . iim,jj_nb,nhori, klev,1,klev,nvert, 32, 125 136 . "ave(X)", zsto,zout) 126 127 endif 137 ENDIF 128 138 c 129 139 CALL histdef(nid_ins, "tops", "Solar rad. at TOA", "W/m2", -
trunk/LMDZ.VENUS/libf/phyvenus/ini_histmth.h
r1301 r1452 101 101 c . "ave(X)", zsto,zout) 102 102 c 103 c plusieurs traceurs 104 if (iflag_trac.eq.1) THEN 103 CALL histdef(nid_mth, "mmean", "Mean molecular mass", "g/mol", 104 . iim,jj_nb,nhori, klev,1,klev,nvert, 32, 105 . "ave(X)", zsto,zout) 106 107 CALL histdef(nid_mth, "rho", "Air density [mass/Vol]", "kg/m3", 108 . iim,jj_nb,nhori, klev,1,klev,nvert, 32, 109 . "ave(X)", zsto,zout) 110 111 112 c plusieurs traceurs !!!outputs in [vmr] 113 IF (iflag_trac.eq.1) THEN 105 114 DO iq=1,nqmax 106 115 IF (iq.LE.99) THEN 107 116 WRITE(str2,'(i2.2)') iq 108 CALL histdef(nid_mth, tname(iq), ttext(iq), " ppm",117 CALL histdef(nid_mth, tname(iq), ttext(iq), "mol/mol", 109 118 . iim,jj_nb,nhori, klev,1,klev,nvert, 32, 110 119 . "ave(X)", zsto,zout) … … 114 123 ENDIF 115 124 ENDDO 116 endif 125 ENDIF 126 127 IF (callthermos .and. ok_chem) THEN 128 CALL histdef(nid_mth, "d_qmoldifCO2", "Dif molec" , "kg/kg", 129 . iim,jj_nb,nhori, klev,1,klev,nvert, 32, 130 . "ave(X)", zsto,zout) 131 CALL histdef(nid_mth, "d_qmoldifO3p", "Dif molec" , "kg/kg", 132 . iim,jj_nb,nhori, klev,1,klev,nvert, 32, 133 . "ave(X)", zsto,zout) 134 CALL histdef(nid_mth, "d_qmoldifN2", "Dif molec" , "kg/kg", 135 . iim,jj_nb,nhori, klev,1,klev,nvert, 32, 136 . "ave(X)", zsto,zout) 137 ENDIF 117 138 c 118 139 CALL histdef(nid_mth, "tops", "Solar rad. at TOA", "W/m2", … … 192 213 . "ave(X)", zsto,zout) 193 214 c 194 CALL histdef(nid_mth, "dtlwr", "LW radiation dT", "K/s", 195 . iim,jj_nb,nhori, klev,1,klev,nvert, 32, 196 . "ave(X)", zsto,zout) 215 CALL histdef(nid_mth,"dtswrNLTE", "SWNLTE radiation dT", 216 . "K/s", iim,jj_nb,nhori, klev,1,klev,nvert, 32, 217 . "ave(X)", zsto,zout) 218 c 219 CALL histdef(nid_mth,"dtswrDCrisp","SWDCrisp radiation dT", 220 . "K/s", iim,jj_nb,nhori, klev,1,klev,nvert, 32, 221 . "ave(X)", zsto,zout) 222 c 223 CALL histdef(nid_mth, "dtlwr", "LW radiation dT", "K/s", 224 . iim,jj_nb,nhori, klev,1,klev,nvert, 32, 225 . "ave(X)", zsto,zout) 226 c 227 CALL histdef(nid_mth,"dtlwrNLTE", "LWNLTE radiation dT", 228 . "K/s", iim,jj_nb,nhori, klev,1,klev,nvert, 32, 229 . "ave(X)", zsto,zout) 230 c 231 CALL histdef(nid_mth,"dtlwrLTE","LW_LTE radiation dT", 232 . "K/s", iim,jj_nb,nhori, klev,1,klev,nvert, 32, 233 . "ave(X)", zsto,zout) 234 c 235 CALL histdef(nid_mth, "dteuv", "UV radiation dT", "K/s", 236 . iim,jj_nb,nhori, klev,1,klev,nvert, 32, 237 . "ave(X)", zsto,zout) 238 CALL histdef(nid_mth, "dtcond", "Therm conduction", "K/s", 239 . iim,jj_nb,nhori, klev,1,klev,nvert, 32, 240 . "ave(X)", zsto,zout) 241 CALL histdef(nid_mth, "dumolvis", "molec viscosity (u)" 242 . ,"m/s2", iim,jj_nb,nhori, klev,1,klev,nvert, 32, 243 . "ave(X)", zsto,zout) 244 CALL histdef(nid_mth, "dvmolvis", "molec viscosity (v)", 245 . "m/s2", iim,jj_nb,nhori, klev,1,klev,nvert, 32, 246 . "ave(X)", zsto,zout) 247 197 248 c 198 249 c CALL histdef(nid_mth, "dtec", "Cinetic dissip dT", "K/s", … … 211 262 . iim,jj_nb,nhori, klev,1,klev,nvert, 32, 212 263 . "ave(X)", zsto,zout) 264 265 c CALL histdef(nid_mth, "co2_vmr", "volume mixture ratio co2", 266 c . "cm-3",iim,jj_nb,nhori, klev,1,klev,nvert, 32, 267 c . "ave(X)", zsto,zout) 268 269 c CALL histdef(nid_mth, "o_vmr", "volume mixture ratio o", 270 c . "cm-3", iim,jj_nb,nhori, klev,1,klev,nvert, 32, 271 c . "ave(X)", zsto,zout) 272 c CALL histdef(nid_mth, "co_vmr", "volume mixture ratio co", 273 c . "cm-3",iim,jj_nb,nhori, klev,1,klev,nvert, 32, 274 c . "ave(X)", zsto,zout) 275 276 c CALL histdef(nid_mth, "n2_vmr", "volume mixture ratio n2", 277 c . "cm-3", iim,jj_nb,nhori, klev,1,klev,nvert, 32, 278 c . "ave(X)", zsto,zout) 213 279 c 214 280 c CALL histdef(nid_mth, "dvvdf", "Boundary-layer dV", "m/s2", … … 246 312 247 313 ENDIF ! fin de test sur ok_mensuel 314 -
trunk/LMDZ.VENUS/libf/phyvenus/new_photochemistry_venus.F90
r1442 r1452 2 2 ! Reprise du modèle de photochimie 1D de Frank Lefèvre. 3 3 ! Couplage avec le LMDZ_VENUS 4 SUBROUTINE new_photochemistry_venus(nz, n_lon, ptimestep, p, t ,tr, sza_input, nesp)4 SUBROUTINE new_photochemistry_venus(nz, n_lon, ptimestep, p, t ,tr, mumean, sza_input, nesp) 5 5 6 6 ! USE ioipsl 7 ! USE infotrac8 7 ! USE control_mod 9 8 ! USE dimphy … … 21 20 22 21 real, dimension(nz) :: conc 22 real, dimension(nz) :: mumean ! [g/mol] 23 23 real, dimension(nz) :: surfice1d, surfdust1d 24 24 … … 90 90 ! ctimestep : pas de temps chimique nominal (s) 91 91 92 phychemrat = 392 phychemrat = 1 93 93 ctimestep = ptimestep/real(phychemrat) 94 94 … … 138 138 ! PRINT*,'sza_input avant phot: ',sza_input 139 139 140 call phot(nj, nztable, nsza, nso2, sza_input, dist_sol, tr(:,i_co2), tr(:,i_so2), &140 call phot(nj, nztable, nsza, nso2, sza_input, dist_sol, mumean,tr(:,i_co2), tr(:,i_so2), & 141 141 jphot, table_colair, table_colso2, table_sza, nz, nb_phot_max, t, p, v_phot) 142 142 … … 436 436 end do 437 437 end do 438 print*, "sza_input = ", table_sza(isza)438 ! print*, "sza_input = ", table_sza(isza) 439 439 end do 440 440 end do … … 2423 2423 !=========================================================== 2424 2424 2425 subroutine phot(nj, nztable, nsza, nso2, sza_input, dist_sol, rmco2, rmso2, &2425 subroutine phot(nj, nztable, nsza, nso2, sza_input, dist_sol, mumean, rmco2, rmso2, & 2426 2426 jphot, table_colair, table_colso2, table_sza, nz, nb_phot_max, t, p, v_phot) 2427 2427 … … 2434 2434 2435 2435 real, INTENT(IN), dimension(nz) :: t, p 2436 real, INTENT(IN), dimension(nz) :: mumean ! [g/mol] 2436 2437 real, INTENT(IN), dimension(nso2,nsza,nztable,nj) :: jphot 2437 2438 real, INTENT(IN), dimension(nso2,nztable) :: table_colso2 … … 2442 2443 2443 2444 real, dimension(nz,nj) :: j 2444 real, dimension(nz) :: co l, colso22445 real, dimension(nz) :: coef, col, colso2 2445 2446 real, dimension(nso2) :: colref 2446 2447 real, dimension(2,2,2) :: poids 2447 2448 real :: cicol, cisza, ciso2 2448 real :: mugaz, avogadro, gvenus, coef, dp2449 real :: avogadro, gvenus, dp 2449 2450 2450 2451 integer :: indcol, indsza, indso2 … … 2454 2455 real, dimension(nz,nb_phot_max), INTENT(INOUT) :: v_phot 2455 2456 2456 mugaz = 43.44E-32457 !mugaz = 43.44E-3 2457 2458 avogadro = 6.022E+23 2458 2459 gvenus = 8.87 2459 2460 coef = avogadro/(gvenus*mugaz)*1.E-42461 2460 2462 2461 ! day/night test … … 2483 2482 ! co2 and so2 columns 2484 2483 2485 col(nz) = coef*rmco2(nz)*p(nz)*100. 2486 colso2(nz) = coef*rmso2(nz)*p(nz)*100. 2484 coef(nz) = avogadro/(gvenus*mumean(nz)*1.E-3)*1.E-4 2485 col(nz) = coef(nz)*rmco2(nz)*p(nz)*100. 2486 colso2(nz) = coef(nz)*rmso2(nz)*p(nz)*100. 2487 2487 2488 2488 do iz = nz-1, 1, -1 2489 ! print*,"L2490 new_photochemistry", iz,mumean(iz) 2489 2490 dp = (p(iz) - p(iz+1))*100. 2490 col(iz) = col(iz+1) + coef*(rmco2(iz+1) + rmco2(iz))*0.5*dp 2491 coef(iz) = avogadro/(gvenus*mumean(iz)*1.E-3)*1.E-4 2492 col(iz) = col(iz+1) + coef(iz)*(rmco2(iz+1) + rmco2(iz))*0.5*dp 2491 2493 col(iz) = min(col(iz), table_colair(1)) 2492 colso2(iz) = colso2(iz+1) + coef *(rmso2(iz+1) + rmso2(iz))*0.5*dp2494 colso2(iz) = colso2(iz+1) + coef(iz)*(rmso2(iz+1) + rmso2(iz))*0.5*dp 2493 2495 colso2(iz) = min(colso2(iz), table_colso2(nso2,1)) 2494 2496 end do -
trunk/LMDZ.VENUS/libf/phyvenus/param_read.F
r1310 r1452 1 1 subroutine param_read 2 2 3 4 3 use dimphy 4 use conc 5 5 implicit none 6 6 … … 18 18 integer ierr 19 19 real nada 20 c character (len=100) :: datafile="/u/forget/WWW/datagcm/datafile" 21 character (len=100) :: 22 $ datafile="/san/home/ggilmd/COMMON/LMDZ.MARS/datafile" 20 character (len=100) :: datafile="HIGHATM" 23 21 24 22 c*************************+PROGRAM STARTS************************** -
trunk/LMDZ.VENUS/libf/phyvenus/physiq.F
r1443 r1452 881 881 endif 882 882 883 ! Pas appel concentrations car BUG ... comprend pas 884 ! valeur de mmean trop hautes 5,25E+29 885 ! call concentrations2(pplay,t_seri,d_t,tr_seri, nqmax) 886 883 887 if (ok_deltatemp) then 884 888 ! Utilisation du champ de temperature modifie … … 1224 1228 1225 1229 if(callthermos) then 1226 call concentrations2(pplay,t_seri,d_t,tr_seri, nqmax, 1227 & pdtphys) 1230 call concentrations2(pplay,t_seri,d_t,tr_seri, nqmax) 1228 1231 1229 1232 endif -
trunk/LMDZ.VENUS/libf/phyvenus/phytrac_chimie.F
r1442 r1452 272 272 e temp(ilon,:), 273 273 e trac(ilon,:,:), 274 e mmean(ilon,:), 274 275 e sza_local, nqmax) 275 276 c ============================================================= -
trunk/LMDZ.VENUS/libf/phyvenus/write_histins.h
r1442 r1452 41 41 c call histwrite_phy(nid_ins,.false.,"mang",itau_w,mang) 42 42 c call histwrite_phy(nid_ins,.false.,"Kz",itau_w,ycoefh) 43 call histwrite_phy(nid_mth,.false.,"mmean",itau_w,mmean) 44 call histwrite_phy(nid_mth,.false.,"rho",itau_w,rho) 43 45 44 46 c plusieurs traceurs !!!outputs in [vmr] 45 IF ( ok_chem) THEN47 IF (iflag_trac.eq.1) THEN 46 48 DO iq=1,nqmax 47 49 call histwrite_phy(nid_ins,.false.,tname(iq),itau_w,qx(:,:,iq)* 48 50 & mmean(:,:)/M_tr(iq)) 49 51 ENDDO 52 ENDIF 53 54 IF (callthermos .and. ok_chem) THEN 55 call histwrite_phy(nid_mth,.false.,"d_qmoldifCO2",itau_w, 56 . d_q_moldif(:,:,i_co2)) 57 call histwrite_phy(nid_mth,.false.,"d_qmoldifO3p",itau_w, 58 . d_q_moldif(:,:,i_o)) 59 call histwrite_phy(nid_mth,.false.,"d_qmoldifN2",itau_w, 60 . d_q_moldif(:,:,i_n2)) 50 61 ENDIF 51 62 -
trunk/LMDZ.VENUS/libf/phyvenus/write_histmth.h
r1310 r1452 16 16 call histwrite_phy(nid_mth,.false.,"psol",itau_w,paprs(:,1)) 17 17 c call histwrite_phy(nid_mth,.false.,"ue",itau_w,ue) 18 c VENUS: regardee a l 'envers!!!!!!!!!!!!!!!18 c VENUS: regardee a l envers!!!!!!!!!!!!!!! 19 19 c call histwrite_phy(nid_mth,.false.,"ve",itau_w,-1.*ve) 20 20 c call histwrite_phy(nid_mth,.false.,"cdragh",itau_w,cdragh) … … 32 32 call histwrite_phy(nid_mth,.false.,"geop",itau_w,zphi) 33 33 call histwrite_phy(nid_mth,.false.,"vitu",itau_w,u_seri) 34 c VENUS: regardee a l 'envers!!!!!!!!!!!!!!!34 c VENUS: regardee a l envers!!!!!!!!!!!!!!! 35 35 call histwrite_phy(nid_mth,.false.,"vitv",itau_w,-1.*v_seri) 36 36 call histwrite_phy(nid_mth,.false.,"vitw",itau_w,omega) … … 41 41 c call histwrite_phy(nid_mth,.false.,"mang",itau_w,mang) 42 42 c call histwrite_phy(nid_mth,.false.,"Kz",itau_w,ycoefh) 43 call histwrite_phy(nid_mth,.false.,"mmean",itau_w,mmean) 44 call histwrite_phy(nid_mth,.false.,"rho",itau_w,rho) 43 45 44 c plusieurs traceurs 46 c plusieurs traceurs !!!outputs in [vmr] 45 47 IF (iflag_trac.eq.1) THEN 46 48 DO iq=1,nqmax 47 call histwrite_phy(nid_mth,.false.,tname(iq),itau_w,qx(:,:,iq)) 49 call histwrite_phy(nid_mth,.false.,tname(iq),itau_w,qx(:,:,iq) 50 & *mmean(:,:)/M_tr(iq)) 48 51 ENDDO 52 ENDIF 53 54 IF (callthermos .and. ok_chem) THEN 55 call histwrite_phy(nid_mth,.false.,"d_qmoldifCO2",itau_w, 56 . d_q_moldif(:,:,i_co2)) 57 call histwrite_phy(nid_mth,.false.,"d_qmoldifO3p",itau_w, 58 . d_q_moldif(:,:,i_o)) 59 call histwrite_phy(nid_mth,.false.,"d_qmoldifN2",itau_w, 60 . d_q_moldif(:,:,i_n2)) 49 61 ENDIF 50 62 … … 88 100 c en K/s 89 101 call histwrite_phy(nid_mth,.false.,"dtswr",itau_w,dtsw) 102 call histwrite_phy(nid_mth,.false.,"dtswrNLTE",itau_w,d_t_nirco2) 103 call histwrite_phy(nid_mth,.false.,"dtswrDCrisp",itau_w,heat) 90 104 c en K/s 91 105 call histwrite_phy(nid_mth,.false.,"dtlwr",itau_w,dtlw) 92 106 c en K/s 107 call histwrite_phy(nid_mth,.false.,"dtlwrNLTE",itau_w,d_t_nlte) 108 call histwrite_phy(nid_mth,.false.,"dtlwrLTE",itau_w,-1.*cool) 109 call histwrite_phy(nid_mth,.false.,"dteuv",itau_w,d_t_euv) 110 call histwrite_phy(nid_mth,.false.,"dtcond",itau_w,d_t_conduc) 111 call histwrite_phy(nid_mth,.false.,"dumolvis",itau_w,d_u_molvis) 112 call histwrite_phy(nid_mth,.false.,"dvmolvis",itau_w,d_v_molvis) 113 93 114 c call histwrite_phy(nid_mth,.false.,"dtec",itau_w,d_t_ec) 94 115 c en (m/s)/s … … 99 120 call histwrite_phy(nid_mth,.false.,"dugwno",itau_w,d_u_hin) 100 121 c en (m/s)/s 101 c VENUS: regardee a l'envers!!!!!!!!!!!!!!! 122 123 124 c VENUS: regardee a l envers!!!!!!!!!!!!!!! 102 125 c call histwrite_phy(nid_mth,.false.,"dvvdf",itau_w,-1.*d_v_vdf) 103 126 … … 120 143 121 144 ENDIF 145
Note: See TracChangeset
for help on using the changeset viewer.