Changeset 1543 for trunk/LMDZ.VENUS/libf
- Timestamp:
- Apr 22, 2016, 9:02:11 AM (9 years ago)
- Location:
- trunk/LMDZ.VENUS/libf/phyvenus
- Files:
-
- 3 added
- 3 deleted
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.VENUS/libf/phyvenus/clmain.F
r1530 r1543 11 11 . paprs,pplay,ppk,radsol,albe, 12 12 . solsw, sollw, sollwdown, fder, 13 . rlon, rlat, cufi, cvfi,13 . rlon, rlat, dx, dy, 14 14 . debut, lafin, 15 15 . d_t,d_u,d_v,d_ts, … … 52 52 c radsol---input-R- flux radiatif net (positif vers le sol) en W/m**2 53 53 c rlat-----input-R- latitude en degree 54 c cufi-----input-R- resolution des mailles en x (m)55 c cvfi-----input-R- resolution des mailles en y (m)54 c dx-----input-R- resolution des mailles en x (m) 55 c dy-----input-R- resolution des mailles en y (m) 56 56 c 57 57 c d_t------output-R- le changement pour "t" … … 80 80 ! ADAPTATION GCM POUR CP(T) 81 81 real ppk(klon,klev) 82 REAL rlon(klon), rlat(klon), cufi(klon), cvfi(klon)82 REAL rlon(klon), rlat(klon), dx(klon), dy(klon) 83 83 REAL d_t(klon, klev) 84 84 REAL d_u(klon, klev), d_v(klon, klev) … … 398 398 ! ADAPTATION GCM POUR CP(T) 399 399 CALL clqh(dtime, itap, debut,lafin, 400 e rlon, rlat, cufi, cvfi,400 e rlon, rlat, dx, dy, 401 401 e knon, 402 402 e soil_model, ytsoil, … … 465 465 466 466 SUBROUTINE clqh(dtime,itime, debut,lafin, 467 e rlon, rlat, cufi, cvfi,467 e rlon, rlat, dx, dy, 468 468 e knon, 469 469 $ soil_model,tsoil, … … 510 510 REAL albedo(klon) ! albedo de la surface 511 511 real rmu0(klon) ! cosinus de l'angle solaire zenithal 512 real rlon(klon), rlat(klon), cufi(klon), cvfi(klon)512 real rlon(klon), rlat(klon), dx(klon), dy(klon) 513 513 c 514 514 REAL d_t(klon,klev) ! incrementation de "t" … … 686 686 CALL interfsurf_hq(itime, dtime, rmu0, 687 687 e klon, nbp_lon, nbp_lat-1, knon, 688 e rlon, rlat, cufi, cvfi,688 e rlon, rlat, dx, dy, 689 689 e debut, lafin, soil_model, nsoilmx,tsoil, 690 690 e zlev1, u1lay, v1lay, temp_air, epot_air, -
trunk/LMDZ.VENUS/libf/phyvenus/dyn1d/rcm1d.F
r1525 r1543 3 3 USE infotrac 4 4 use control_mod, only: planet_type, day_step 5 use comgeomphy6 5 USE phys_state_var_mod 7 6 use chemparam_mod … … 14 13 use conc, only: rho 15 14 USE iniphysiq_mod, ONLY: iniphysiq 16 15 USE mod_const_mpi, ONLY: comm_lmdz 17 16 IMPLICIT NONE 18 17 … … 199 198 c --------------------------------- 200 199 201 CALL init_phys_lmdz(iim,jjm,llm,1,(/1/))200 ! CALL init_phys_lmdz(iim,jjm,llm,1,(/1/)) 202 201 203 202 c la surface de chaque maille est inutile en 1D ---> … … 210 209 c e.g. for cell boundaries, which are meaningless in 1D; so pad these 211 210 c with '0.' when necessary 212 CALL iniphysiq(1,1,llm,daysec,day0,dtphys, 211 CALL iniphysiq(1,1,llm, 212 & 1,comm_lmdz, 213 & daysec,day0,dtphys, 213 214 & (/lati(1),0./),(/0./), 214 215 & (/0.,0./),(/long(1),0./), -
trunk/LMDZ.VENUS/libf/phyvenus/new_cloud_sedim.F
r1530 r1543 7 7 USE infotrac 8 8 USE dimphy 9 USE comgeomphy10 9 USE chemparam_mod 11 10 IMPLICIT NONE -
trunk/LMDZ.VENUS/libf/phyvenus/nirco2abs.F
r1530 r1543 3 3 4 4 use dimphy 5 use comgeomphy, only: rlatd, rlond5 use geometry_mod, only: longitude, latitude 6 6 use chemparam_mod, only: i_co2, i_o 7 7 c use compo_hedin83_mod2 … … 236 236 zday_int = (n-1)/float(nstep) 237 237 238 CALL zenang(0.,zday_int,RDAY/nstep, rlatd,rlond,238 CALL zenang(0.,zday_int,RDAY/nstep,latitude,longitude, 239 239 s mu0_int,fract_int) 240 240 -
trunk/LMDZ.VENUS/libf/phyvenus/phyetat0.F90
r1530 r1543 13 13 USE iostart 14 14 USE infotrac 15 USE comgeomphy, only: rlatd,rlond15 use geometry_mod, only: longitude, latitude 16 16 USE time_phylmdz_mod, only: itau_phy, raz_date 17 17 … … 65 65 66 66 ! read latitudes 67 call get_field("latitude", rlatd,found)67 call get_field("latitude",latitude,found) 68 68 IF (.not.found) THEN 69 69 PRINT*, 'phyetat0: Le champ <latitude> est absent' … … 72 72 73 73 ! read longitudes 74 call get_field("longitude", rlond,found)74 call get_field("longitude",longitude,found) 75 75 IF (.not.found) THEN 76 76 PRINT*, 'phyetat0: Le champ <longitude> est absent' … … 344 344 345 345 ! do some more initializations 346 call init_iophy_new( rlatd,rlond)346 call init_iophy_new(latitude,longitude) 347 347 348 348 end subroutine phyetat0 -
trunk/LMDZ.VENUS/libf/phyvenus/phyredem.F90
r1530 r1543 12 12 put_var,put_field 13 13 USE infotrac 14 USE comgeomphy, only: rlatd,rlond14 use geometry_mod, only: longitude, latitude 15 15 USE time_phylmdz_mod, only: day_end, annee_ref, itau_phy, raz_date 16 16 … … 62 62 63 63 CALL put_field("longitude", & 64 "Longitudes de la grille physique", rlond)64 "Longitudes de la grille physique",longitude) 65 65 66 CALL put_field("latitude","Latitudes de la grille physique",rlatd) 66 CALL put_field("latitude", & 67 "Latitudes de la grille physique",latitude) 67 68 68 69 ! variables -
trunk/LMDZ.VENUS/libf/phyvenus/physiq.F
r1530 r1543 58 58 USE infotrac 59 59 use dimphy 60 USE comgeomphy60 USE geometry_mod, only: longitude, latitude, cell_area, dx, dy 61 61 USE mod_phys_lmdz_para, only : is_parallel,jj_nb 62 62 USE phys_state_var_mod ! Variables sauvegardees de la physique … … 665 665 DO k = 1, klev 666 666 DO i = 1, klon 667 ilat=( rlatd(i)/5.625) + 17.667 ilat=(latitude(i)/5.625) + 17. 668 668 delta_temp(i,k)=mat_dtemp(INT(ilat),k) 669 669 ENDDO … … 719 719 IF (if_ebil.ge.1) THEN 720 720 ztit='after dynamic' 721 CALL diagetpq( airephy,ztit,ip_ebil,1,1,dtime721 CALL diagetpq(cell_area,ztit,ip_ebil,1,1,dtime 722 722 e , t_seri,zero_v2,zero_v2,zero_v2,u_seri,v_seri,paprs,pplay 723 723 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) … … 726 726 C est egale a la variation de la physique au pas de temps precedent. 727 727 C Donc la somme de ces 2 variations devrait etre nulle. 728 call diagphy( airephy,ztit,ip_ebil728 call diagphy(cell_area,ztit,ip_ebil 729 729 e , zero_v, zero_v, zero_v, zero_v, zero_v 730 730 e , zero_v, zero_v, zero_v, ztsol … … 767 767 DO k = 1, klev 768 768 DO i = 1, klon 769 omega(i,k) = RG*flxmw(i,k) / airephy(i)769 omega(i,k) = RG*flxmw(i,k) / cell_area(i) 770 770 END DO 771 771 END DO … … 832 832 IF (cycle_diurne) THEN 833 833 zdtime=dtime*REAL(radpas) ! pas de temps du rayonnement (s) 834 CALL zenang(zlongi,gmtime,zdtime, rlatd,rlond,rmu0,fract)834 CALL zenang(zlongi,gmtime,zdtime,latitude,longitude,rmu0,fract) 835 835 ELSE 836 call mucorr(klon,zlongi, rlatd,rmu0,fract)836 call mucorr(klon,zlongi,latitude,rmu0,fract) 837 837 ENDIF 838 838 … … 859 859 I debut,lafin,nqmax, 860 860 I nlon,nlev,dtime,paprs, 861 I rlatd,rlond,861 I latitude,longitude, 862 862 O tr_seri) 863 863 … … 869 869 DO k = 1, klev 870 870 DO i = 1, klon 871 ilat=( rlatd(i)/5.625) + 17.872 ! PRINT*,INT(ilat), rlatd(i),mat_dtemp(INT(ilat),k)871 ilat=(latitude(i)/5.625) + 17. 872 ! PRINT*,INT(ilat),latitude(i),mat_dtemp(INT(ilat),k) 873 873 delta_temp(i,k)=mat_dtemp(INT(ilat),k) 874 874 ENDDO … … 888 888 I nqmax, 889 889 I klon, 890 I rlatd,891 I rlond,890 I latitude, 891 I longitude, 892 892 I nlev, 893 893 I dtime, … … 902 902 I nqmax, 903 903 I klon, 904 I rlatd,905 I rlond,904 I latitude, 905 I longitude, 906 906 I nlev, 907 907 I dtime, … … 926 926 CALL new_cloud_sedim( 927 927 I klon, 928 I 929 I 928 I nlev, 929 I dtime, 930 930 I pplay, 931 I 932 I 931 I paprs, 932 I t_seri+delta_temp, 933 933 I tr_seri, 934 O 935 O 936 I 934 O d_tr_sed, 935 O d_tr_ssed, 936 I nqmax, 937 937 O Fsedim) 938 938 else … … 940 940 CALL new_cloud_sedim( 941 941 I klon, 942 I 943 I 942 I nlev, 943 I dtime, 944 944 I pplay, 945 I 946 I 945 I paprs, 946 I t_seri, 947 947 I tr_seri, 948 O 949 O 950 I 948 O d_tr_sed, 949 O d_tr_ssed, 950 I nqmax, 951 951 O Fsedim) 952 952 … … 1032 1032 $ paprs,pplay,ppk,radsol,falbe, 1033 1033 e solsw, sollw, sollwdown, fder, 1034 e rlond, rlatd, cuphy, cvphy,1034 e longitude, latitude, dx, dy, 1035 1035 e debut, lafin, 1036 1036 s d_t_vdf,d_u_vdf,d_v_vdf,d_ts, … … 1082 1082 IF (if_ebil.ge.2) THEN 1083 1083 ztit='after clmain' 1084 CALL diagetpq( airephy,ztit,ip_ebil,2,1,dtime1084 CALL diagetpq(cell_area,ztit,ip_ebil,2,1,dtime 1085 1085 e , t_seri,zero_v2,zero_v2,zero_v2,u_seri,v_seri,paprs,pplay 1086 1086 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 1087 call diagphy( airephy,ztit,ip_ebil1087 call diagphy(cell_area,ztit,ip_ebil 1088 1088 e , zero_v, zero_v, zero_v, zero_v, sens 1089 1089 e , zero_v, zero_v, zero_v, ztsol … … 1175 1175 IF (if_ebil.ge.2) THEN 1176 1176 ztit='after dry_adjust' 1177 CALL diagetpq( airephy,ztit,ip_ebil,2,2,dtime1177 CALL diagetpq(cell_area,ztit,ip_ebil,2,2,dtime 1178 1178 e , t_seri,zero_v2,zero_v2,zero_v2,u_seri,v_seri,paprs,pplay 1179 1179 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 1180 call diagphy( airephy,ztit,ip_ebil1180 call diagphy(cell_area,ztit,ip_ebil 1181 1181 e , zero_v, zero_v, zero_v, zero_v, sens 1182 1182 e , zero_v, zero_v, zero_v, ztsol … … 1215 1215 IF(callnlte.or.callthermos) THEN 1216 1216 call compo_hedin83_mod(pplay,rmu0, 1217 & 1217 & co2vmr_gcm,covmr_gcm,ovmr_gcm,n2vmr_gcm,nvmr_gcm) 1218 1218 1219 1219 IF(ok_chem) then … … 1234 1234 ENDIF 1235 1235 1236 ENDIF 1236 ENDIF 1237 1237 1238 1238 c … … 1261 1261 d_t_nlte(:,:)=0. 1262 1262 1263 ENDIF 1263 ENDIF 1264 1264 1265 1265 c Find number of layers for LTE radiation calculations … … 1293 1293 & cool, d_t_nirco2,d_t_nlte, dtsw, dtlw) 1294 1294 ELSE 1295 1296 1297 1295 dtsw(:,:)=heat(:,:) 1296 dtlw(:,:)=-1*cool(:,:) 1297 ENDIF 1298 1298 1299 1299 DO k=1,klev … … 1319 1319 $ rmu0,pdtphys,gmtime,rjourvrai, 1320 1320 $ tr_seri, d_tr, d_t_euv ) 1321 1321 1322 1322 DO k=1,klev 1323 1323 DO ig=1,klon … … 1405 1405 IF (if_ebil.ge.2) THEN 1406 1406 ztit='after rad' 1407 CALL diagetpq( airephy,ztit,ip_ebil,2,2,dtime1407 CALL diagetpq(cell_area,ztit,ip_ebil,2,2,dtime 1408 1408 e , t_seri,zero_v2,zero_v2,zero_v2,u_seri,v_seri,paprs,pplay 1409 1409 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 1410 call diagphy( airephy,ztit,ip_ebil1410 call diagphy(cell_area,ztit,ip_ebil 1411 1411 e , topsw, toplw, solsw, sollw, zero_v 1412 1412 e , zero_v, zero_v, zero_v, ztsol … … 1424 1424 do i=1,klon 1425 1425 do k=2,klev 1426 1427 1428 1426 ztlev(i,k) = (t_seri(i,k)+t_seri(i,k-1))/2. 1427 zpklev(i,k) = sqrt(ppk(i,k)*ppk(i,k-1)) 1428 enddo 1429 1429 enddo 1430 1430 call t2tpot(klon*klev,ztlev, ztetalev,zpklev) … … 1432 1432 do i=1,klon 1433 1433 do k=2,klev 1434 1435 1434 zdtetalev(i,k) = ztetalay(i,k)-ztetalay(i,k-1) 1435 zdzlev(i,k) = (zphi(i,k)-zphi(i,k-1))/RG 1436 1436 zn2(i,k) = RG*zdtetalev(i,k)/(ztetalev(i,k)*zdzlev(i,k)) 1437 1437 zn2(i,k) = max(zn2(i,k),1.e-12) ! securite 1438 1438 enddo 1439 1439 zn2(i,1) = 1.e-12 ! securite 1440 1440 enddo … … 1479 1479 d_u_oro = 0. 1480 1480 d_v_oro = 0. 1481 1482 1481 zustrdr = 0. 1482 zvstrdr = 0. 1483 1483 c 1484 1484 ENDIF ! fin de test sur ok_orodr … … 1508 1508 c A ADAPTER POUR VENUS!!! 1509 1509 c CALL lift_noro(klon,klev,dtime,paprs,pplay, 1510 c e rlatd,zmea,zstd,zpic,zgam,zthe,zpic,zval,1510 c e latitude,zmea,zstd,zpic,zgam,zthe,zpic,zval, 1511 1511 c e igwd,idx,itest, 1512 1512 c e t_seri, u_seri, v_seri, … … 1567 1567 c==================================================================== 1568 1568 if (ballons.eq.1) then 1569 CALL ballon(30,pdtphys,rjourvrai,gmtime*RDAY,rlatd,rlond,1570 c C 1571 C 1569 CALL ballon(30,pdtphys,rjourvrai,gmtime*RDAY,latitude,longitude, 1570 c C t,pplay,u,v,pphi) ! alt above surface (smoothed for GCM) 1571 C t,pplay,u,v,zphi) ! alt above planet average radius 1572 1572 endif !ballons 1573 1573 … … 1601 1601 CALL aaam_bud (27,klon,klev,rjourvrai,gmtime*RDAY, 1602 1602 C ra,rg,romega, 1603 C rlatd,rlond,pphis,1603 C latitude,longitude,pphis, 1604 1604 C zustrdr,zustrli,zustrcl, 1605 1605 C zvstrdr,zvstrli,zvstrcl, … … 1641 1641 IF (if_ebil.ge.1) THEN 1642 1642 ztit='after physic' 1643 CALL diagetpq( airephy,ztit,ip_ebil,1,1,dtime1643 CALL diagetpq(cell_area,ztit,ip_ebil,1,1,dtime 1644 1644 e , t_seri,zero_v2,zero_v2,zero_v2,u_seri,v_seri,paprs,pplay 1645 1645 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) … … 1648 1648 C est egale a la variation de la physique au pas de temps precedent. 1649 1649 C Donc la somme de ces 2 variations devrait etre nulle. 1650 call diagphy( airephy,ztit,ip_ebil1650 call diagphy(cell_area,ztit,ip_ebil 1651 1651 e , topsw, toplw, solsw, sollw, sens 1652 1652 e , zero_v, zero_v, zero_v, ztsol … … 1687 1687 c DO k = 1, klev 1688 1688 c DO i = 1, klon 1689 c mang(i,k) = RA*cos( rlatd(i)*RPI/180.)1690 c . *(u_seri(i,k)+RA*cos( rlatd(i)*RPI/180.)*ROMEGA)1691 c . * airephy(i)*(paprs(i,k)-paprs(i,k+1))/RG1689 c mang(i,k) = RA*cos(latitude(i)*RPI/180.) 1690 c . *(u_seri(i,k)+RA*cos(latitude(i)*RPI/180.)*ROMEGA) 1691 c . *cell_area(i)*(paprs(i,k)-paprs(i,k+1))/RG 1692 1692 c mangtot=mangtot+mang(i,k) 1693 1693 c ENDDO -
trunk/LMDZ.VENUS/libf/phyvenus/phytrac_emiss.F
r1530 r1543 30 30 USE infotrac 31 31 use dimphy 32 USE comgeomphy32 USE geometry_mod, only: cell_area 33 33 USE chemparam_mod,only:M_tr 34 34 USE mod_grid_phy_lmdz, ONLY: nbp_lon, nbp_lat … … 139 139 & .and.((xlon(i)+deltalon).gt.lon_volcan(ilon)) ) then 140 140 ig_volcan(ilat,ilon)= i 141 area_emiss(ilat,ilon) = airephy(i)141 area_emiss(ilat,ilon) = cell_area(i) 142 142 print*,"Lat,lon=",ilat,ilon," OK" 143 143 end if -
trunk/LMDZ.VENUS/libf/phyvenus/phytrac_relax.F
r1530 r1543 27 27 USE infotrac 28 28 use dimphy 29 USE comgeomphy30 29 USE chemparam_mod,only:M_tr 31 30 IMPLICIT none -
trunk/LMDZ.VENUS/libf/phyvenus/radlwsw.F
r1530 r1543 27 27 c====================================================================== 28 28 use dimphy 29 USE comgeomphy29 USE geometry_mod, ONLY: latitude 30 30 USE phys_state_var_mod, only: heat,cool,radsol, 31 31 . topsw,toplw,solsw,sollw,sollwdown,lwnet,swnet … … 164 164 lat=1 165 165 else 166 if (abs( rlatd(j)).le.50.) then166 if (abs(latitude(j)).le.50.) then 167 167 lat=1 168 elseif (abs( rlatd(j)).le.60.) then168 elseif (abs(latitude(j)).le.60.) then 169 169 lat=2 170 elseif (abs( rlatd(j)).le.70.) then170 elseif (abs(latitude(j)).le.70.) then 171 171 lat=3 172 elseif (abs( rlatd(j)).le.80.) then172 elseif (abs(latitude(j)).le.80.) then 173 173 lat=4 174 174 else -
trunk/LMDZ.VENUS/libf/phyvenus/radlwsw.NewtonCool
r1530 r1543 24 24 c====================================================================== 25 25 use dimphy 26 USE comgeomphy26 USE geometry_mod, ONLY: latitude 27 27 USE phys_state_var_mod, only: heat,cool,radsol, 28 28 . topsw,toplw,solsw,sollw,sollwdown,lwnet,swnet … … 98 98 ztemp = tempCLee(level)*(1-fact)+tempCLee(level+1)*fact 99 99 zdt = dt_epCLee(level)*(1-fact)+dt_epCLee(level+1)*fact 100 c zt_eq(i,k) = ztemp + zdt*(cos( rlatd(i)*RPI/180.)-2./RPI)101 zt_eq(i,k) = ztemp + zdt*(cos( rlatd(i)*RPI/180.)-RPI/4.)100 c zt_eq(i,k) = ztemp + zdt*(cos(latitude(i)*RPI/180.)-2./RPI) 101 zt_eq(i,k) = ztemp + zdt*(cos(latitude(i)*RPI/180.)-RPI/4.) 102 102 103 103 enddo -
trunk/LMDZ.VENUS/libf/phyvenus/write_histday.h
r1310 r1543 12 12 13 13 call histwrite_phy(nid_day,.false.,"phis",itau_w,pphis) 14 call histwrite_phy(nid_day,.false.,"aire",itau_w, airephy)14 call histwrite_phy(nid_day,.false.,"aire",itau_w,cell_area) 15 15 call histwrite_phy(nid_day,.false.,"tsol",itau_w,ftsol) 16 16 call histwrite_phy(nid_day,.false.,"psol",itau_w,paprs(:,1)) -
trunk/LMDZ.VENUS/libf/phyvenus/write_histins.h
r1453 r1543 12 12 13 13 call histwrite_phy(nid_ins,.false.,"phis",itau_w,pphis) 14 call histwrite_phy(nid_ins,.false.,"aire",itau_w, airephy)14 call histwrite_phy(nid_ins,.false.,"aire",itau_w,cell_area) 15 15 call histwrite_phy(nid_ins,.false.,"tsol",itau_w,ftsol) 16 16 call histwrite_phy(nid_ins,.false.,"psol",itau_w,paprs(:,1)) -
trunk/LMDZ.VENUS/libf/phyvenus/write_histmth.h
r1518 r1543 12 12 13 13 call histwrite_phy(nid_mth,.false.,"phis",itau_w,pphis) 14 call histwrite_phy(nid_mth,.false.,"aire",itau_w, airephy)14 call histwrite_phy(nid_mth,.false.,"aire",itau_w,cell_area) 15 15 call histwrite_phy(nid_mth,.false.,"tsol",itau_w,ftsol) 16 16 call histwrite_phy(nid_mth,.false.,"psol",itau_w,paprs(:,1))
Note: See TracChangeset
for help on using the changeset viewer.