Changeset 1647 for trunk/LMDZ.TITAN/libf/dynphy_lonlat/phytitan/newstart.F
- Timestamp:
- Jan 11, 2017, 3:33:51 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.TITAN/libf/dynphy_lonlat/phytitan/newstart.F
r1644 r1647 19 19 & is_master 20 20 use infotrac, only: infotrac_init, nqtot, tname 21 USE tracer_h, ONLY: igcm_co2_ice, igcm_h2o_vap, igcm_h2o_ice22 21 USE comsoil_h, ONLY: nsoilmx, layer, mlayer, inertiedat 23 22 USE surfdat_h, ONLY: phisfi, albedodat, … … 28 27 use phyredem, only: physdem0, physdem1 29 28 use iostart, only: open_startphy 30 use slab_ice_h, only:noceanmx31 29 use filtreg_mod, only: inifilr 32 30 USE mod_const_mpi, ONLY: COMM_LMDZ … … 95 93 REAL tsurf(ngridmx) ! surface temperature 96 94 REAL,ALLOCATABLE :: tsoil(:,:) ! soil temperature 97 ! REAL co2ice(ngridmx) ! CO2 ice layer98 95 REAL emis(ngridmx) ! surface emissivity 99 96 real emisread ! added by RW … … 109 106 real mugaz ! molar mass of the atmosphere 110 107 111 integer ierr 112 113 REAL rnat(ngridmx) 114 REAL,ALLOCATABLE :: tslab(:,:) ! slab ocean temperature 115 REAL pctsrf_sic(ngridmx) ! sea ice cover 116 REAL tsea_ice(ngridmx) ! temperature sea_ice 117 REAL sea_ice(ngridmx) ! mass of sea ice (kg/m2) 108 integer ierr 118 109 119 110 c Variables on the new grid along scalar points … … 153 144 logical :: flagtset=.false. , flagps0=.false. 154 145 real val, val2, val3, val4 ! to store temporary variables 155 real :: iceith=2000 ! thermal inertia of subterranean ice156 146 157 147 INTEGER :: itau … … 165 155 ! added by BC for equilibrium temperature startup 166 156 real teque 167 168 ! added by BC for cloud fraction setup169 REAL hice(ngridmx),cloudfrac(ngridmx,llm)170 REAL totalfrac(ngridmx)171 172 157 173 158 ! added by RW for nuketharsis … … 209 194 allocate(tsoil(ngridmx,nsoilmx)) 210 195 allocate(ith(iip1,jjp1,nsoilmx),ithfi(ngridmx,nsoilmx)) 211 allocate(tslab(ngridmx,nsoilmx))212 196 213 197 c======================================================================= … … 355 339 CALL phyetat0 (ngridmx,llm,fichnom,tab0,Lmodif,nsoilmx, 356 340 . nqtot,day_ini,time, 357 . tsurf,tsoil,emis,q2,qsurf, !) ! temporary modif by RDW 358 . cloudfrac,totalfrac,hice,rnat,pctsrf_sic,tslab,tsea_ice, 359 . sea_ice) 341 . tsurf,tsoil,emis,q2,qsurf) 360 342 361 343 ! copy albedo and soil thermal inertia on (local) physics grid … … 549 531 & date,tsurf,tsoil,emis,q2, 550 532 & t,ucov,vcov,ps,teta,phisold_newgrid,q,qsurf, 551 & surfith,nid, 552 & rnat,pctsrf_sic,tslab,tsea_ice,sea_ice) 533 & surfith,nid) 553 534 write(*,*) "OK, read start_archive file" 554 535 ! copy soil thermal inertia … … 784 765 else if (trim(modif).eq.'ptot') then 785 766 786 ! check if we have a co2_ice surface tracer:787 if (igcm_co2_ice.eq.0) then788 write(*,*) " No surface CO2 ice !"789 write(*,*) " only atmospheric pressure will be considered!"790 endif791 767 c calcul de la pression totale glace + atm actuelle 792 768 patm=0. … … 800 776 patm = patm + ps(i,j)*aire(i,j) 801 777 airetot= airetot + aire(i,j) 802 if (igcm_co2_ice.ne.0) then803 !pcap = pcap + aire(i,j)*co2ice(ig)*g804 pcap = pcap + aire(i,j)*qsurf(ig,igcm_co2_ice)*g805 endif806 778 ENDDO 807 779 ENDDO 808 780 ptoto = pcap + patm 809 781 810 print*,'Current total pressure at surface ( co2 ice +atm) ',782 print*,'Current total pressure at surface (atm) ', 811 783 & ptoto/airetot 812 784 … … 1048 1020 else if (trim(modif) .eq. 'wetstart') then 1049 1021 ! check that there is indeed a water vapor tracer 1050 if (igcm_h2o_vap.eq.0) then 1022 1051 1023 write(*,*) "No water vapour tracer! Can't use this option" 1052 1024 stop 1053 endif1054 DO l=1,llm1055 DO j=1,jjp11056 DO i=1,iip11057 q(i,j,l,igcm_h2o_vap)=150.e-6 * (rlatu(j)+pi/2.) / pi1058 ENDDO1059 ENDDO1060 ENDDO1061 1062 write(*,*) 'Water mass mixing ratio at north pole='1063 * ,q(1,1,1,igcm_h2o_vap)1064 write(*,*) '---------------------------south pole='1065 * ,q(1,jjp1,1,igcm_h2o_vap)1066 1025 1067 1026 c noglacier : remove tropical water ice (to initialize high res sim) 1068 1027 c -------------------------------------------------- 1069 1028 else if (trim(modif) .eq. 'noglacier') then 1070 if (igcm_h2o_ice.eq.0) then1029 1071 1030 write(*,*) "No water ice tracer! Can't use this option" 1072 1031 stop 1073 endif 1074 do ig=1,ngridmx 1075 j=(ig-2)/iim +2 1076 if(ig.eq.1) j=1 1077 write(*,*) 'OK: remove surface ice for |lat|<45' 1078 if (abs(rlatu(j)*180./pi).lt.45.) then 1079 qsurf(ig,igcm_h2o_ice)=0. 1080 end if 1081 end do 1032 1082 1033 1083 1034 … … 1085 1036 c -------------------------------------------------- 1086 1037 else if (trim(modif) .eq. 'watercapn') then 1087 if (igcm_h2o_ice.eq.0) then1038 1088 1039 write(*,*) "No water ice tracer! Can't use this option" 1089 1040 stop 1090 endif1091 1092 DO j=1,jjp11093 DO i=1,iim1094 ig=1+(j-2)*iim +i1095 if(j.eq.1) ig=11096 if(j.eq.jjp1) ig=ngridmx1097 1098 if (rlatu(j)*180./pi.gt.80.) then1099 qsurf(ig,igcm_h2o_ice)=3.4e31100 !do isoil=1,nsoilmx1101 ! ith(i,j,isoil) = 18000. ! thermal inertia1102 !enddo1103 write(*,*)' ==> Ice mesh North boundary (deg)= ',1104 & rlatv(j-1)*180./pi1105 end if1106 ENDDO1107 ENDDO1108 CALL gr_dyn_fi(nsoilmx,iip1,jjp1,ngridmx,ith,ithfi)1109 1110 c$$$ do ig=1,ngridmx1111 c$$$ j=(ig-2)/iim +21112 c$$$ if(ig.eq.1) j=11113 c$$$ if (rlatu(j)*180./pi.gt.80.) then1114 c$$$1115 c$$$ qsurf(ig,igcm_h2o_ice)=1.e51116 c$$$ qsurf(ig,igcm_h2o_vap)=0.0!1.e51117 c$$$1118 c$$$ write(*,*) 'ig=',ig,' H2O ice mass (kg/m2)= ',1119 c$$$ & qsurf(ig,igcm_h2o_ice)1120 c$$$1121 c$$$ write(*,*)' ==> Ice mesh South boundary (deg)= ',1122 c$$$ & rlatv(j)*180./pi1123 c$$$ end if1124 c$$$ enddo1125 1041 1126 1042 c watercaps : H20 ice on permanent southern cap 1127 1043 c ------------------------------------------------- 1128 1044 else if (trim(modif) .eq. 'watercaps') then 1129 if (igcm_h2o_ice.eq.0) then 1045 1130 1046 write(*,*) "No water ice tracer! Can't use this option" 1131 1047 stop 1132 endif1133 1134 DO j=1,jjp11135 DO i=1,iim1136 ig=1+(j-2)*iim +i1137 if(j.eq.1) ig=11138 if(j.eq.jjp1) ig=ngridmx1139 1140 if (rlatu(j)*180./pi.lt.-80.) then1141 qsurf(ig,igcm_h2o_ice)=3.4e31142 !do isoil=1,nsoilmx1143 ! ith(i,j,isoil) = 18000. ! thermal inertia1144 !enddo1145 write(*,*)' ==> Ice mesh South boundary (deg)= ',1146 & rlatv(j-1)*180./pi1147 end if1148 ENDDO1149 ENDDO1150 CALL gr_dyn_fi(nsoilmx,iip1,jjp1,ngridmx,ith,ithfi)1151 1152 c$$$ do ig=1,ngridmx1153 c$$$ j=(ig-2)/iim +21154 c$$$ if(ig.eq.1) j=11155 c$$$ if (rlatu(j)*180./pi.lt.-80.) then1156 c$$$ qsurf(ig,igcm_h2o_ice)=1.e51157 c$$$ qsurf(ig,igcm_h2o_vap)=0.0 !1.e51158 c$$$1159 c$$$ write(*,*) 'ig=',ig,' H2O ice mass (kg/m2)= ',1160 c$$$ & qsurf(ig,igcm_h2o_ice)1161 c$$$ write(*,*)' ==> Ice mesh North boundary (deg)= ',1162 c$$$ & rlatv(j-1)*180./pi1163 c$$$ end if1164 c$$$ enddo1165 1166 1048 1167 1049 c noacglac : H2O ice across highest terrain 1168 1050 c -------------------------------------------- 1169 1051 else if (trim(modif) .eq. 'noacglac') then 1170 if (igcm_h2o_ice.eq.0) then 1052 1171 1053 write(*,*) "No water ice tracer! Can't use this option" 1172 1054 stop 1173 endif1174 DO j=1,jjp11175 DO i=1,iim1176 ig=1+(j-2)*iim +i1177 if(j.eq.1) ig=11178 if(j.eq.jjp1) ig=ngridmx1179 1180 if(phis(i,j).gt.1000.*g)then1181 alb(i,j) = 0.5 ! snow value1182 do isoil=1,nsoilmx1183 ith(i,j,isoil) = 18000. ! thermal inertia1184 ! this leads to rnat set to 'ocean' in physiq.F901185 ! actually no, because it is soil not surface1186 enddo1187 endif1188 ENDDO1189 ENDDO1190 CALL gr_dyn_fi(nsoilmx,iip1,jjp1,ngridmx,ith,ithfi)1191 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,alb,albfi)1192 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,phis,phisfi)1193 1194 1195 1055 1196 1056 c oborealis : H2O oceans across Vastitas Borealis 1197 1057 c ----------------------------------------------- 1198 1058 else if (trim(modif) .eq. 'oborealis') then 1199 if (igcm_h2o_ice.eq.0) then 1059 1200 1060 write(*,*) "No water ice tracer! Can't use this option" 1201 1061 stop 1202 endif 1203 DO j=1,jjp1 1204 DO i=1,iim 1205 ig=1+(j-2)*iim +i 1206 if(j.eq.1) ig=1 1207 if(j.eq.jjp1) ig=ngridmx 1208 1209 if(phis(i,j).lt.-4000.*g)then 1210 ! if( (phis(i,j).lt.-4000.*g) 1211 ! & .and. (rlatu(j)*180./pi.lt.0.) )then ! south hemisphere only 1212 ! phis(i,j)=-8000.0*g ! proper ocean 1213 phis(i,j)=-4000.0*g ! scanty ocean 1214 1215 alb(i,j) = 0.07 ! oceanic value 1216 do isoil=1,nsoilmx 1217 ith(i,j,isoil) = 18000. ! thermal inertia 1218 ! this leads to rnat set to 'ocean' in physiq.F90 1219 ! actually no, because it is soil not surface 1220 enddo 1221 endif 1222 ENDDO 1223 ENDDO 1224 CALL gr_dyn_fi(nsoilmx,iip1,jjp1,ngridmx,ith,ithfi) 1225 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,alb,albfi) 1226 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,phis,phisfi) 1227 1062 1228 1063 c iborealis : H2O ice in Northern plains 1229 1064 c -------------------------------------- 1230 1065 else if (trim(modif) .eq. 'iborealis') then 1231 if (igcm_h2o_ice.eq.0) then 1066 1232 1067 write(*,*) "No water ice tracer! Can't use this option" 1233 1068 stop 1234 endif1235 DO j=1,jjp11236 DO i=1,iim1237 ig=1+(j-2)*iim +i1238 if(j.eq.1) ig=11239 if(j.eq.jjp1) ig=ngridmx1240 1241 if(phis(i,j).lt.-4000.*g)then1242 !qsurf(ig,igcm_h2o_ice)=1.e31243 qsurf(ig,igcm_h2o_ice)=241.4 ! to make total 33 kg m^-21244 endif1245 ENDDO1246 ENDDO1247 CALL gr_dyn_fi(nsoilmx,iip1,jjp1,ngridmx,ith,ithfi)1248 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,alb,albfi)1249 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,phis,phisfi)1250 1251 1069 1252 1070 c oceanball : H2O liquid everywhere 1253 1071 c ---------------------------- 1254 1072 else if (trim(modif) .eq. 'oceanball') then 1255 if (igcm_h2o_ice.eq.0) then 1073 1256 1074 write(*,*) "No water ice tracer! Can't use this option" 1257 1075 stop 1258 endif1259 DO j=1,jjp11260 DO i=1,iim1261 ig=1+(j-2)*iim +i1262 if(j.eq.1) ig=11263 if(j.eq.jjp1) ig=ngridmx1264 1265 qsurf(ig,igcm_h2o_vap)=0.0 ! for ocean, this is infinite source1266 qsurf(ig,igcm_h2o_ice)=0.01267 alb(i,j) = 0.07 ! ocean value1268 1269 do isoil=1,nsoilmx1270 ith(i,j,isoil) = 18000. ! thermal inertia1271 !ith(i,j,isoil) = 50. ! extremely low for test1272 ! this leads to rnat set to 'ocean' in physiq.F901273 enddo1274 1275 ENDDO1276 ENDDO1277 CALL gr_dyn_fi(nsoilmx,iip1,jjp1,ngridmx,ith,ithfi)1278 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,alb,albfi)1279 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,phis,phisfi)1280 1076 1281 1077 c iceball : H2O ice everywhere 1282 1078 c ---------------------------- 1283 1079 else if (trim(modif) .eq. 'iceball') then 1284 if (igcm_h2o_ice.eq.0) then 1080 1285 1081 write(*,*) "No water ice tracer! Can't use this option" 1286 1082 stop 1287 endif1288 DO j=1,jjp11289 DO i=1,iim1290 ig=1+(j-2)*iim +i1291 if(j.eq.1) ig=11292 if(j.eq.jjp1) ig=ngridmx1293 1294 qsurf(ig,igcm_h2o_vap)=-50. ! for ocean, this is infinite source1295 qsurf(ig,igcm_h2o_ice)=50. ! == to 0.05 m of oceanic ice1296 alb(i,j) = 0.6 ! ice albedo value1297 1298 do isoil=1,nsoilmx1299 !ith(i,j,isoil) = 18000. ! thermal inertia1300 ! this leads to rnat set to 'ocean' in physiq.F901301 enddo1302 1303 ENDDO1304 ENDDO1305 CALL gr_dyn_fi(nsoilmx,iip1,jjp1,ngridmx,ith,ithfi)1306 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,alb,albfi)1307 1083 1308 1084 c supercontinent : H2O ice everywhere 1309 1085 c ---------------------------- 1310 1086 else if (trim(modif) .eq. 'supercontinent') then 1311 write(*,*) 'Minimum longitude (-180,180)' 1312 read(*,*) val 1313 write(*,*) 'Maximum longitude (-180,180)' 1314 read(*,*) val2 1315 write(*,*) 'Minimum latitude (-90,90)' 1316 read(*,*) val3 1317 write(*,*) 'Maximum latitude (-90,90)' 1318 read(*,*) val4 1319 1320 do j=1,jjp1 1321 do i=1,iip1 1322 ig=1+(j-2)*iim +i 1323 if(j.eq.1) ig=1 1324 if(j.eq.jjp1) ig=ngridmx 1325 1326 c Supercontinent: 1327 if (((rlatu(j)*180./pi.le.val4).and. 1328 & (rlatu(j)*180./pi.ge.val3).and. 1329 & (rlonv(i)*180./pi.le.val2).and. 1330 & (rlonv(i)*180./pi.ge.val))) then 1331 1332 rnat(ig)=1. 1333 alb(i,j) = 0.3 1334 do isoil=1,nsoilmx 1335 ith(i,j,isoil) = 2000. 1336 enddo 1337 c Ocean: 1338 else 1339 rnat(ig)=0. 1340 alb(i,j) = 0.07 1341 do isoil=1,nsoilmx 1342 ith(i,j,isoil) = 18000. 1343 enddo 1344 end if 1345 1346 enddo 1347 enddo 1348 CALL gr_dyn_fi(nsoilmx,iip1,jjp1,ngridmx,ith,ithfi) 1349 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,alb,albfi) 1087 1088 write(*,*) "No water ice tracer! Can't use this option" 1089 stop 1350 1090 1351 1091 c isotherm : Isothermal temperatures and no winds … … 1445 1185 c ------------------------------------------------ 1446 1186 else if (trim(modif) .eq. 'co2ice=0') then 1447 ! check that there is indeed a co2_ice tracer ...1448 if (igcm_co2_ice.ne.0) then1449 do ig=1,ngridmx1450 !co2ice(ig)=01451 qsurf(ig,igcm_co2_ice)=01452 emis(ig)=emis(ngridmx/2)1453 end do1454 else1455 1187 write(*,*) "Can't remove CO2 ice!! (no co2_ice tracer)" 1456 endif1188 1457 1189 1458 1190 ! therm_ini_s: (re)-set soil thermal inertia to reference surface values … … 1484 1216 c ------------------------------------------------ 1485 1217 else if (trim(modif) .eq. 'slab_ocean_0') then 1486 write(*,*)'OK: initialisation of slab ocean' 1487 1488 DO ig=1, ngridmx 1489 rnat(ig)=1. 1490 tslab(ig,1)=0. 1491 tslab(ig,2)=0. 1492 tsea_ice(ig)=0. 1493 sea_ice(ig)=0. 1494 pctsrf_sic(ig)=0. 1495 1496 if(ithfi(ig,1).GT.10000.)then 1497 rnat(ig)=0. 1498 phisfi(ig)=0. 1499 tsea_ice(ig)=273.15-1.8 1500 tslab(ig,1)=tsurf(ig) 1501 tslab(ig,2)=tsurf(ig)!*2./3.+(273.15-1.8)/3. 1502 endif 1503 1504 ENDDO 1505 CALL gr_fi_dyn(1,ngridmx,iip1,jjp1,phisfi,phis) 1506 1507 1218 1219 write(*,*) "No ocean yet on Titan ! Can't use this option" 1220 stop 1508 1221 1509 1222 else … … 1517 1230 999 continue 1518 1231 1519 1520 c=======================================================================1521 c Initialisation for cloud fraction and oceanic ice (added by BC 2010)1522 c=======================================================================1523 DO ig=1, ngridmx1524 totalfrac(ig)=0.51525 DO l=1,llm1526 cloudfrac(ig,l)=0.51527 ENDDO1528 ! Ehouarn, march 2012: also add some initialisation for hice1529 hice(ig)=0.01530 ENDDO1531 1232 1532 c========================================================1533 1534 ! DO ig=1,ngridmx1535 ! IF(tsurf(ig) .LT. 273.16-1.8) THEN1536 ! hice(ig)=(273.16-1.8-tsurf(ig))/(273.16-1.8-240)*1.1537 ! hice(ig)=min(hice(ig),1.0)1538 ! ENDIF1539 ! ENDDO1540 1541 1542 1543 1233 1544 1234 c======================================================================= … … 1647 1337 call physdem1("restartfi.nc",nsoilmx,ngridmx,llm,nqtot, 1648 1338 & dtphys,real(day_ini), 1649 & tsurf,tsoil,emis,q2,qsurf, 1650 & cloudfrac,totalfrac,hice, 1651 & rnat,pctsrf_sic,tslab,tsea_ice,sea_ice) 1339 & tsurf,tsoil,emis,q2,qsurf) 1652 1340 1653 1341 c=======================================================================
Note: See TracChangeset
for help on using the changeset viewer.