Changeset 3198 for trunk/LMDZ.PLUTO
- Timestamp:
- Feb 2, 2024, 3:08:36 PM (10 months ago)
- Location:
- trunk/LMDZ.PLUTO/libf
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.PLUTO/libf/dynphy_lonlat/phypluto/lect_start_archive.F
r3195 r3198 2 2 & date,tsurf,tsoil,emis,q2, 3 3 & t,ucov,vcov,ps,h,phisold_newgrid, 4 & q,qsurf,surfith,nid ,5 & rnat,pctsrf_sic,!tslab,tsea_ice,sea_ice,6 & du_nonoro_gwd,dv_nonoro_gwd,east_gwstress,west_gwstress)4 & q,qsurf,surfith,nid) 5 ! & rnat,pctsrf_sic) !tslab,tsea_ice,sea_ice, 6 ! TB24 & du_nonoro_gwd,dv_nonoro_gwd,east_gwstress,west_gwstress) 7 7 8 8 USE comsoil_h, ONLY: nsoilmx, layer, mlayer, volcapa, inertiedat 9 USE tracer_h, ONLY: igcm_ haze9 USE tracer_h, ONLY: igcm_n2 10 10 USE infotrac, ONLY: tname, nqtot 11 11 ! USE slab_ice_h, ONLY: noceanmx … … 70 70 REAL,INTENT(OUT) :: q2(ngrid,llm+1),qsurf(ngrid,nqtot) 71 71 ! REAL,INTENT(OUT) :: tslab(ngrid,nslay) 72 REAL ,INTENT(OUT) ::rnat(ngrid),pctsrf_sic(ngrid)72 !REAL ,INTENT(OUT) ::rnat(ngrid),pctsrf_sic(ngrid) 73 73 ! REAL,INTENT(OUT) :: tsea_ice(ngrid),sea_ice(ngrid) 74 74 c REAL phisfi(ngrid) 75 REAL,INTENT(OUT):: du_nonoro_gwd(ngrid,llm) 76 REAL,INTENT(OUT):: dv_nonoro_gwd(ngrid,llm) 77 REAL,INTENT(OUT):: east_gwstress(ngrid,llm) 78 REAL,INTENT(OUT):: west_gwstress(ngrid,llm) 75 76 c TB24 77 c REAL,INTENT(OUT):: du_nonoro_gwd(ngrid,llm) 78 c REAL,INTENT(OUT):: dv_nonoro_gwd(ngrid,llm) 79 c REAL,INTENT(OUT):: east_gwstress(ngrid,llm) 80 c REAL,INTENT(OUT):: west_gwstress(ngrid,llm) 79 81 80 82 INTEGER i,j,l … … 100 102 REAL q2S(iip1,jjp1,llm+1),qsurfS(iip1,jjp1,nqtot) 101 103 ! real tslabS(iip1,jjp1,nslay) 102 real pctsrf_sicS(iip1,jjp1),tsea_iceS(iip1,jjp1) 103 real rnatS(iip1,jjp1), sea_iceS(iip1,jjp1) 104 real du_nonoro_gwdS(iip1,jjp1,llm),dv_nonoro_gwdS(iip1,jjp1,llm) 105 real east_gwstressS(iip1,jjp1,llm),west_gwstressS(iip1,jjp1,llm) 104 !real pctsrf_sicS(iip1,jjp1),tsea_iceS(iip1,jjp1) 105 !real rnatS(iip1,jjp1), sea_iceS(iip1,jjp1) 106 107 !TB24 108 ! real du_nonoro_gwdS(iip1,jjp1,llm),dv_nonoro_gwdS(iip1,jjp1,llm) 109 ! real east_gwstressS(iip1,jjp1,llm),west_gwstressS(iip1,jjp1,llm) 106 110 107 111 real ptotal, n2icetotal … … 133 137 real, dimension(:,:,:,:), allocatable :: qold 134 138 ! real, dimension(:,:,:), allocatable :: tslabold 135 real, dimension(:,:), allocatable :: rnatold,pctsrf_sicold 136 real, dimension(:,:), allocatable :: tsea_iceold,sea_iceold 137 real,allocatable :: du_nonoro_gwdold(:,:,:) 138 real,allocatable :: dv_nonoro_gwdold(:,:,:) 139 real,allocatable :: east_gwstressold(:,:,:) 140 real,allocatable :: west_gwstressold(:,:,:) 139 !real, dimension(:,:), allocatable :: rnatold,pctsrf_sicold 140 !real, dimension(:,:), allocatable :: tsea_iceold,sea_iceold 141 142 ! TB24 143 ! real,allocatable :: du_nonoro_gwdold(:,:,:) 144 ! real,allocatable :: dv_nonoro_gwdold(:,:,:) 145 ! real,allocatable :: east_gwstressold(:,:,:) 146 ! real,allocatable :: west_gwstressold(:,:,:) 141 147 142 148 real tab_cntrl(100) … … 289 295 allocate(qsurfold(imold+1,jmold+1,nqtot)) 290 296 ! allocate(tslabold(imold+1,jmold+1,nslay)) 291 allocate(rnatold(imold+1,jmold+1)) 292 allocate(pctsrf_sicold(imold+1,jmold+1)) 293 allocate(tsea_iceold(imold+1,jmold+1)) 294 allocate(sea_iceold(imold+1,jmold+1)) 295 296 allocate(du_nonoro_gwdold(imold+1,jmold+1,lmold)) 297 allocate(dv_nonoro_gwdold(imold+1,jmold+1,lmold)) 298 allocate(east_gwstressold(imold+1,jmold+1,lmold)) 299 allocate(west_gwstressold(imold+1,jmold+1,lmold)) 297 !allocate(rnatold(imold+1,jmold+1)) 298 !allocate(pctsrf_sicold(imold+1,jmold+1)) 299 !allocate(tsea_iceold(imold+1,jmold+1)) 300 !allocate(sea_iceold(imold+1,jmold+1)) 301 302 !TB24 303 ! allocate(du_nonoro_gwdold(imold+1,jmold+1,lmold)) 304 ! allocate(dv_nonoro_gwdold(imold+1,jmold+1,lmold)) 305 ! allocate(east_gwstressold(imold+1,jmold+1,lmold)) 306 ! allocate(west_gwstressold(imold+1,jmold+1,lmold)) 300 307 301 308 allocate(var (imold+1,jmold+1,llm)) … … 960 967 ENDDO ! of DO iq=1,nqtot 961 968 962 ! Non-orographic GWs: 963 write(*,*)"lect_start_archive: loading du_nonoro_gwd" 964 ierr = NF_INQ_VARID (nid,"du_nonoro_gwd", nvarid) 965 IF (ierr .NE. NF_NOERR) THEN 966 PRINT*, "lect_start_archive: Field <du_nonoro_gwd> not found" 967 PRINT*, "Setting it to zero" 968 du_nonoro_gwdold(:,:,:)=0 969 ELSE 970 #ifdef NC_DOUBLE 971 ierr=NF_GET_VARA_DOUBLE(nid,nvarid,start,count,du_nonoro_gwdold) 972 #else 973 ierr=NF_GET_VARA_REAL(nid,nvarid,start,count,du_nonoro_gwdold) 974 #endif 975 IF (ierr .NE. NF_NOERR) THEN 976 PRINT*, "lect_start_archive: Failed loading <du_nonoro_gwd>" 977 CALL abort 978 ENDIF 979 ENDIF 980 981 write(*,*)"lect_start_archive: loading dv_nonoro_gwd" 982 ierr = NF_INQ_VARID (nid,"dv_nonoro_gwd", nvarid) 983 IF (ierr .NE. NF_NOERR) THEN 984 PRINT*, "lect_start_archive: Field <dv_nonoro_gwd> not found" 985 PRINT*, "Setting it to zero" 986 dv_nonoro_gwdold(:,:,:)=0 987 ELSE 988 #ifdef NC_DOUBLE 989 ierr=NF_GET_VARA_DOUBLE(nid,nvarid,start,count,dv_nonoro_gwdold) 990 #else 991 ierr=NF_GET_VARA_REAL(nid,nvarid,start,count,dv_nonoro_gwdold) 992 #endif 993 IF (ierr .NE. NF_NOERR) THEN 994 PRINT*, "lect_start_archive: Failed loading <dv_nonoro_gwd>" 995 CALL abort 996 ENDIF 997 ENDIF 998 999 write(*,*)"lect_start_archive: loading east_gwstress" 1000 ierr = NF_INQ_VARID (nid,"east_gwstress", nvarid) 1001 IF (ierr .NE. NF_NOERR) THEN 1002 PRINT*, "lect_start_archive: Field <east_gwstress> not found" 1003 PRINT*, "Setting it to zero" 1004 east_gwstressold(:,:,:)=0 1005 ELSE 1006 #ifdef NC_DOUBLE 1007 ierr=NF_GET_VARA_DOUBLE(nid,nvarid,start,count,east_gwstressold) 1008 #else 1009 ierr=NF_GET_VARA_REAL(nid,nvarid,start,count,east_gwstressold) 1010 #endif 1011 IF (ierr .NE. NF_NOERR) THEN 1012 PRINT*, "lect_start_archive: Failed loading <east_gwstress>" 1013 CALL abort 1014 ENDIF 1015 ENDIF 1016 1017 write(*,*)"lect_start_archive: loading west_gwstress" 1018 ierr = NF_INQ_VARID (nid,"west_gwstress", nvarid) 1019 IF (ierr .NE. NF_NOERR) THEN 1020 PRINT*, "lect_start_archive: Field <west_gwstress> not found" 1021 PRINT*, "Setting it to zero" 1022 west_gwstressold(:,:,:)=0 1023 ELSE 1024 #ifdef NC_DOUBLE 1025 ierr=NF_GET_VARA_DOUBLE(nid,nvarid,start,count,west_gwstressold) 1026 #else 1027 ierr=NF_GET_VARA_REAL(nid,nvarid,start,count,west_gwstressold) 1028 #endif 1029 IF (ierr .NE. NF_NOERR) THEN 1030 PRINT*, "lect_start_archive: Failed loading <west_gwstress>" 1031 CALL abort 1032 ENDIF 1033 ENDIF 969 ! Non-orographic GWs: TB24 rm 970 971 ! write(*,*)"lect_start_archive: loading du_nonoro_gwd" 972 ! ierr = NF_INQ_VARID (nid,"du_nonoro_gwd", nvarid) 973 ! IF (ierr .NE. NF_NOERR) THEN 974 ! PRINT*, "lect_start_archive: Field <du_nonoro_gwd> not found" 975 ! PRINT*, "Setting it to zero" 976 ! du_nonoro_gwdold(:,:,:)=0 977 ! ELSE 978 !#ifdef NC_DOUBLE 979 ! ierr=NF_GET_VARA_DOUBLE(nid,nvarid,start,count,du_nonoro_gwdold) 980 !#else 981 ! ierr=NF_GET_VARA_REAL(nid,nvarid,start,count,du_nonoro_gwdold) 982 !#endif 983 ! IF (ierr .NE. NF_NOERR) THEN 984 ! PRINT*, "lect_start_archive: Failed loading <du_nonoro_gwd>" 985 ! CALL abort 986 ! ENDIF 987 ! ENDIF 988 989 ! write(*,*)"lect_start_archive: loading dv_nonoro_gwd" 990 ! ierr = NF_INQ_VARID (nid,"dv_nonoro_gwd", nvarid) 991 ! IF (ierr .NE. NF_NOERR) THEN 992 ! PRINT*, "lect_start_archive: Field <dv_nonoro_gwd> not found" 993 ! PRINT*, "Setting it to zero" 994 ! dv_nonoro_gwdold(:,:,:)=0 995 ! ELSE 996 !#ifdef NC_DOUBLE 997 ! ierr=NF_GET_VARA_DOUBLE(nid,nvarid,start,count,dv_nonoro_gwdold) 998 !#else 999 ! ierr=NF_GET_VARA_REAL(nid,nvarid,start,count,dv_nonoro_gwdold) 1000 !#endif 1001 ! IF (ierr .NE. NF_NOERR) THEN 1002 ! PRINT*, "lect_start_archive: Failed loading <dv_nonoro_gwd>" 1003 ! CALL abort 1004 ! ENDIF 1005 ! ENDIF 1006 1007 ! write(*,*)"lect_start_archive: loading east_gwstress" 1008 ! ierr = NF_INQ_VARID (nid,"east_gwstress", nvarid) 1009 ! IF (ierr .NE. NF_NOERR) THEN 1010 ! PRINT*, "lect_start_archive: Field <east_gwstress> not found" 1011 ! PRINT*, "Setting it to zero" 1012 ! east_gwstressold(:,:,:)=0 1013 ! ELSE 1014 !#ifdef NC_DOUBLE 1015 ! ierr=NF_GET_VARA_DOUBLE(nid,nvarid,start,count,east_gwstressold) 1016 !#else 1017 ! ierr=NF_GET_VARA_REAL(nid,nvarid,start,count,east_gwstressold) 1018 !#endif 1019 ! IF (ierr .NE. NF_NOERR) THEN 1020 ! PRINT*, "lect_start_archive: Failed loading <east_gwstress>" 1021 ! CALL abort 1022 ! ENDIF 1023 ! ENDIF 1024 1025 ! write(*,*)"lect_start_archive: loading west_gwstress" 1026 ! ierr = NF_INQ_VARID (nid,"west_gwstress", nvarid) 1027 ! IF (ierr .NE. NF_NOERR) THEN 1028 ! PRINT*, "lect_start_archive: Field <west_gwstress> not found" 1029 ! PRINT*, "Setting it to zero" 1030 ! west_gwstressold(:,:,:)=0 1031 ! ELSE 1032 !#ifdef NC_DOUBLE 1033 ! ierr=NF_GET_VARA_DOUBLE(nid,nvarid,start,count,west_gwstressold) 1034 !#else 1035 !! ierr=NF_GET_VARA_REAL(nid,nvarid,start,count,west_gwstressold) 1036 !#endif 1037 ! IF (ierr .NE. NF_NOERR) THEN 1038 ! PRINT*, "lect_start_archive: Failed loading <west_gwstress>" 1039 ! CALL abort 1040 ! ENDIF 1041 ! ENDIF 1034 1042 1035 1043 !======================================================================= … … 1052 1060 & rlonuold,rlatvold,rlonu,rlatv) 1053 1061 1054 ! N2 ice is now in qsurf(igcm_ haze)1062 ! N2 ice is now in qsurf(igcm_n2) 1055 1063 ! call interp_horiz (n2iceold,n2ices,imold,jmold,iim,jjm,1, 1056 1064 ! & rlonuold,rlatvold,rlonu,rlatv) … … 1097 1105 END DO 1098 1106 n2icetotal = 0. 1099 if (igcm_ haze.ne.0) then1107 if (igcm_n2.ne.0) then 1100 1108 ! recast surface N2 ice on new grid 1101 call interp_horiz(qsurfold(1,1,igcm_ haze),1102 & qsurfs(1,1,igcm_ haze),1109 call interp_horiz(qsurfold(1,1,igcm_n2), 1110 & qsurfs(1,1,igcm_n2), 1103 1111 & imold,jmold,iim,jjm,1, 1104 1112 & rlonuold,rlatvold,rlonu,rlatv) … … 1106 1114 DO i=1,iim 1107 1115 !n2icetotal = n2icetotal + n2iceS(i,j)*aire(i,j) 1108 n2icetotal=n2icetotal+qsurfS(i,j,igcm_ haze)*aire(i,j)1116 n2icetotal=n2icetotal+qsurfS(i,j,igcm_n2)*aire(i,j) 1109 1117 END DO 1110 1118 END DO … … 1315 1323 write (*,*) 'lect_start_archive: t ', t(1,jjp1,1) ! INFO 1316 1324 1317 ! Non-orographic GW 1318 call interp_vert1319 & (du_nonoro_gwdold,var,lmold,llm,apsold,bpsold,aps,bps,1320 & psold,(imold+1)*(jmold+1))1321 call interp_horiz(var,du_nonoro_gwdS,imold,jmold,iim,jjm,llm,1322 & rlonuold,rlatvold,rlonu,rlatv)1323 call gr_dyn_fi(llm,iim+1,jjm+1,ngrid,du_nonoro_gwdS,du_nonoro_gwd)1324 1325 call interp_vert1326 & (dv_nonoro_gwdold,var,lmold,llm,apsold,bpsold,aps,bps,1327 & psold,(imold+1)*(jmold+1))1328 call interp_horiz(var,dv_nonoro_gwdS,imold,jmold,iim,jjm,llm,1329 & rlonuold,rlatvold,rlonu,rlatv)1330 call gr_dyn_fi(llm,iim+1,jjm+1,ngrid,dv_nonoro_gwdS,dv_nonoro_gwd)1331 1332 call interp_vert1333 & (east_gwstressold,var,lmold,llm,apsold,bpsold,aps,bps,1334 & psold,(imold+1)*(jmold+1))1335 call interp_horiz(var,east_gwstressS,imold,jmold,iim,jjm,llm,1336 & rlonuold,rlatvold,rlonu,rlatv)1337 call gr_dyn_fi(llm,iim+1,jjm+1,ngrid,east_gwstressS,east_gwstress)1338 1339 call interp_vert1340 & (west_gwstressold,var,lmold,llm,apsold,bpsold,aps,bps,1341 & psold,(imold+1)*(jmold+1))1342 call interp_horiz(var,west_gwstressS,imold,jmold,iim,jjm,llm,1343 & rlonuold,rlatvold,rlonu,rlatv)1344 call gr_dyn_fi(llm,iim+1,jjm+1,ngrid,west_gwstressS,west_gwstress)1345 1325 ! Non-orographic GW TB24 rm 1326 ! call interp_vert 1327 ! & (du_nonoro_gwdold,var,lmold,llm,apsold,bpsold,aps,bps, 1328 ! & psold,(imold+1)*(jmold+1)) 1329 ! call interp_horiz(var,du_nonoro_gwdS,imold,jmold,iim,jjm,llm, 1330 ! & rlonuold,rlatvold,rlonu,rlatv) 1331 ! call gr_dyn_fi(llm,iim+1,jjm+1,ngrid,du_nonoro_gwdS,du_nonoro_gwd) 1332 1333 ! call interp_vert 1334 ! & (dv_nonoro_gwdold,var,lmold,llm,apsold,bpsold,aps,bps, 1335 ! & psold,(imold+1)*(jmold+1)) 1336 ! call interp_horiz(var,dv_nonoro_gwdS,imold,jmold,iim,jjm,llm, 1337 ! & rlonuold,rlatvold,rlonu,rlatv) 1338 ! call gr_dyn_fi(llm,iim+1,jjm+1,ngrid,dv_nonoro_gwdS,dv_nonoro_gwd) 1339 ! 1340 ! call interp_vert 1341 ! & (east_gwstressold,var,lmold,llm,apsold,bpsold,aps,bps, 1342 ! & psold,(imold+1)*(jmold+1)) 1343 ! call interp_horiz(var,east_gwstressS,imold,jmold,iim,jjm,llm, 1344 ! & rlonuold,rlatvold,rlonu,rlatv) 1345 ! call gr_dyn_fi(llm,iim+1,jjm+1,ngrid,east_gwstressS,east_gwstress) 1346 ! 1347 ! call interp_vert 1348 ! & (west_gwstressold,var,lmold,llm,apsold,bpsold,aps,bps, 1349 ! & psold,(imold+1)*(jmold+1)) 1350 ! call interp_horiz(var,west_gwstressS,imold,jmold,iim,jjm,llm, 1351 ! & rlonuold,rlatvold,rlonu,rlatv) 1352 ! call gr_dyn_fi(llm,iim+1,jjm+1,ngrid,west_gwstressS,west_gwstress) 1353 ! 1346 1354 c q2 : pbl wind variance 1347 1355 write (*,*) 'lect_start_archive: q2old ', q2old (1,2,1) ! INFO … … 1454 1462 1455 1463 ! call gr_dyn_fi (1,iim+1,jjm+1,ngrid,n2ices,n2ice) 1456 ! no need to transfer "n2ice" any more; it is in qsurf(igcm_ haze)1464 ! no need to transfer "n2ice" any more; it is in qsurf(igcm_n2) 1457 1465 1458 1466 endif !! if nqtot .ne. 0 … … 1501 1509 deallocate(var,varp1) 1502 1510 ! deallocate(tslabold) 1503 deallocate(rnatold)1504 deallocate(pctsrf_sicold)1511 !deallocate(rnatold) 1512 !deallocate(pctsrf_sicold) 1505 1513 ! deallocate(tsea_iceold) 1506 1514 ! deallocate(sea_iceold) -
trunk/LMDZ.PLUTO/libf/dynphy_lonlat/phypluto/newstart.F
r3184 r3198 19 19 & is_master 20 20 use infotrac, only: infotrac_init, nqtot, tname 21 USE tracer_h, ONLY: igcm_n2 _ice, igcm_h2o_vap, igcm_h2o_ice21 USE tracer_h, ONLY: igcm_n2 22 22 USE comsoil_h, ONLY: nsoilmx, layer, mlayer, inertiedat 23 23 USE surfdat_h, ONLY: phisfi, albedodat, 24 24 & zmea, zstd, zsig, zgam, zthe 25 USE nonoro_gwd_ran_mod, ONLY: du_nonoro_gwd, dv_nonoro_gwd,26 & east_gwstress, west_gwstress25 ! TB24 USE nonoro_gwd_ran_mod, ONLY: du_nonoro_gwd, dv_nonoro_gwd, 26 ! & east_gwstress, west_gwstress 27 27 use datafile_mod, only: datadir, surfdir 28 28 use ioipsl_getin_p_mod, only: getin_p … … 31 31 use iostart, only: open_startphy 32 32 ! use slab_ice_h, only:noceanmx 33 USE ocean_slab_mod, ONLY: nslay33 ! USE ocean_slab_mod, ONLY: nslay 34 34 use filtreg_mod, only: inifilr 35 35 USE mod_const_mpi, ONLY: COMM_LMDZ … … 180 180 ! real :: time_step,t_ops,t_wrt 181 181 ! CHARACTER*80 :: visu_file 182 !TB24 183 CALL conf_gcm( 99, .TRUE. ) 184 182 185 183 186 cpp = 0. … … 208 211 allocate(tsoil(ngridmx,nsoilmx)) 209 212 allocate(ith(iip1,jjp1,nsoilmx),ithfi(ngridmx,nsoilmx)) 210 allocate(tslab(ngridmx,nsoilmx))211 213 212 214 c======================================================================= … … 351 353 CALL phyetat0(.true.,ngridmx,llm,fichnom,tab0,Lmodif,nsoilmx, 352 354 . nqtot,day_ini,time, 353 . tsurf,tsoil,emis,q2,qsurf ,!) ! temporary modif by RDW354 . cloudfrac,totalfrac,hice,rnat,pctsrf_sic,tslab,tsea_ice,355 . sea_ice)355 . tsurf,tsoil,emis,q2,qsurf) !) ! temporary modif by RDW 356 ! . cloudfrac,totalfrac,hice,rnat,pctsrf_sic,tslab,tsea_ice, 357 ! . sea_ice) 356 358 357 359 ! copy albedo and soil thermal inertia on (local) physics grid … … 545 547 & date,tsurf,tsoil,emis,q2, 546 548 & t,ucov,vcov,ps,teta,phisold_newgrid,q,qsurf, 547 & surfith,nid, 548 & rnat,pctsrf_sic,tslab,tsea_ice,sea_ice, 549 & du_nonoro_gwd,dv_nonoro_gwd,east_gwstress,west_gwstress) 549 & surfith,nid) 550 551 ! & rnat,pctsrf_sic,tslab,tsea_ice,sea_ice) 552 ! TB24 & du_nonoro_gwd,dv_nonoro_gwd,east_gwstress,west_gwstress) 550 553 write(*,*) "OK, read start_archive file" 551 554 ! copy soil thermal inertia … … 576 579 write(*,*) 'flat : no topography ("aquaplanet")' 577 580 write(*,*) 'set_ps_to_preff : used if changing preff with topo' 578 write(*,*) 'nuketharsis : no Tharsis bulge'579 write(*,*) 'bilball : uniform albedo and thermal inertia'580 write(*,*) 'coldspole : cold subsurface and high albedo at S.pole'581 581 write(*,*) 'qname : change tracer name' 582 582 write(*,*) 't=profile : read temperature profile in profile.in' … … 585 585 write(*,*) 'qs=x : give a uniform value to a surface tracer' 586 586 write(*,*) 'q=profile : specify a profile for a tracer' 587 ! write(*,*) 'ini_q : tracers initialisation for chemistry, water an588 ! $d ice '589 ! write(*,*) 'ini_q-H2O : tracers initialisation for chemistry and590 ! $ice '591 ! write(*,*) 'ini_q-iceH2O : tracers initialisation for chemistry on592 ! $ly '593 write(*,*) 'noglacier : Remove tropical H2O ice if |lat|<45'594 write(*,*) 'watercapn : H20 ice on permanent N polar cap '595 write(*,*) 'watercaps : H20 ice on permanent S polar cap '596 write(*,*) 'noacglac : H2O ice across Noachis Terra'597 write(*,*) 'oborealis : H2O ice across Vastitas Borealis'598 write(*,*) 'iceball : Thick ice layer all over surface'599 write(*,*) 'supercontinent: Create a continent of given Ab and TI'600 write(*,*) 'wetstart : start with a wet atmosphere'601 write(*,*) 'isotherm : Isothermal Temperatures, wind set to zero'602 write(*,*) 'radequi : Earth-like radiative equilibrium temperature603 $ profile (lat-alt) and winds set to zero'604 write(*,*) 'coldstart : Start X K above the N2 frost point and605 $set wind to zero (assumes 100% N2)'606 write(*,*) 'n2ice=0 : remove N2 polar cap'607 write(*,*) 'ptot : change total pressure'608 write(*,*) 'emis : change surface emissivity'609 write(*,*) 'therm_ini_s : Set soil thermal inertia to reference sur610 &face values'611 write(*,*) 'slab_ocean_0 : initialisation of slab612 $ocean variables'613 write(*,*) 'chemistry_ini : initialisation of chemical profiles'614 587 615 588 write(*,*) … … 673 646 enddo 674 647 enddo 675 676 c 'nuketharsis : no tharsis bulge for Early Mars'677 c ---------------------------------------------678 else if (trim(modif) .eq. 'nuketharsis') then679 680 DO j=1,jjp1681 DO i=1,iim682 ig=1+(j-2)*iim +i683 if(j.eq.1) ig=1684 if(j.eq.jjp1) ig=ngridmx685 686 fact1=(((rlonv(i)*180./pi)+100)**2 +687 & (rlatu(j)*180./pi)**2)/65**2688 fact2=exp( -fact1**2.5 )689 690 phis(i,j) = phis(i,j) - (phis(i,j)+4000.*g)*fact2691 692 ! if(phis(i,j).gt.2500.*g)then693 ! if(rlatu(j)*180./pi.gt.-80.)then ! avoid chopping south polar cap694 ! phis(i,j)=2500.*g695 ! endif696 ! endif697 698 ENDDO699 ENDDO700 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,phis,phisfi)701 702 703 c bilball : uniform albedo, thermal inertia704 c -----------------------------------------705 else if (trim(modif) .eq. 'bilball') then706 write(*,*) 'constante albedo and iner.therm:'707 write(*,*) 'New value for albedo (ex: 0.25) ?'708 101 read(*,*,iostat=ierr) alb_bb709 if(ierr.ne.0) goto 101710 write(*,*)711 write(*,*) ' uniform albedo (new value):',alb_bb712 write(*,*)713 714 write(*,*) 'New value for thermal inertia (eg: 247) ?'715 102 read(*,*,iostat=ierr) ith_bb716 if(ierr.ne.0) goto 102717 write(*,*) 'uniform thermal inertia (new value):',ith_bb718 DO j=1,jjp1719 DO i=1,iip1720 alb(i,j) = alb_bb ! albedo721 do isoil=1,nsoilmx722 ith(i,j,isoil) = ith_bb ! thermal inertia723 enddo724 END DO725 END DO726 ! CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,ith,ithfi)727 CALL gr_dyn_fi(nsoilmx,iip1,jjp1,ngridmx,ith,ithfi)728 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,alb,albfi)729 730 c coldspole : sous-sol de la calotte sud toujours froid731 c -----------------------------------------------------732 else if (trim(modif) .eq. 'coldspole') then733 write(*,*)'new value for the subsurface temperature',734 & ' beneath the permanent southern polar cap ? (eg: 141 K)'735 103 read(*,*,iostat=ierr) tsud736 if(ierr.ne.0) goto 103737 write(*,*)738 write(*,*) ' new value of the subsurface temperature:',tsud739 c nouvelle temperature sous la calotte permanente740 do l=2,nsoilmx741 tsoil(ngridmx,l) = tsud742 end do743 744 745 write(*,*)'new value for the albedo',746 & 'of the permanent southern polar cap ? (eg: 0.75)'747 104 read(*,*,iostat=ierr) albsud748 if(ierr.ne.0) goto 104749 write(*,*)750 751 c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~752 c Option 1: only the albedo of the pole is modified :753 albfi(ngridmx)=albsud754 write(*,*) 'ig=',ngridmx,' albedo perennial cap ',755 & albfi(ngridmx)756 757 c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~758 c Option 2 A haute resolution : coordonnee de la vrai calotte ~759 c DO j=1,jjp1760 c DO i=1,iip1761 c ig=1+(j-2)*iim +i762 c if(j.eq.1) ig=1763 c if(j.eq.jjp1) ig=ngridmx764 c if ((rlatu(j)*180./pi.lt.-84.).and.765 c & (rlatu(j)*180./pi.gt.-91.).and.766 c & (rlonv(i)*180./pi.gt.-91.).and.767 c & (rlonv(i)*180./pi.lt.0.)) then768 cc albedo de la calotte permanente fixe a albsud769 c alb(i,j)=albsud770 c write(*,*) 'lat=',rlatu(j)*180./pi,771 c & ' lon=',rlonv(i)*180./pi772 cc fin de la condition sur les limites de la calotte permanente773 c end if774 c ENDDO775 c ENDDO776 c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~777 778 c CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,alb,albfi)779 780 781 c ptot : Modification of the total pressure: ice + current atmosphere782 c -------------------------------------------------------------------783 else if (trim(modif).eq.'ptot') then784 785 ! check if we have a n2_ice surface tracer:786 if (igcm_n2_ice.eq.0) then787 write(*,*) " No surface N2 ice !"788 write(*,*) " only atmospheric pressure will be considered!"789 endif790 c calcul de la pression totale glace + atm actuelle791 patm=0.792 airetot=0.793 pcap=0.794 DO j=1,jjp1795 DO i=1,iim796 ig=1+(j-2)*iim +i797 if(j.eq.1) ig=1798 if(j.eq.jjp1) ig=ngridmx799 patm = patm + ps(i,j)*aire(i,j)800 airetot= airetot + aire(i,j)801 if (igcm_n2_ice.ne.0) then802 !pcap = pcap + aire(i,j)*n2ice(ig)*g803 pcap = pcap + aire(i,j)*qsurf(ig,igcm_n2_ice)*g804 endif805 ENDDO806 ENDDO807 ptoto = pcap + patm808 809 print*,'Current total pressure at surface (n2 ice + atm) ',810 & ptoto/airetot811 812 print*,'new value?'813 read(*,*) ptotn814 ptotn=ptotn*airetot815 patmn=ptotn-pcap816 print*,'ptoto,patm,ptotn,patmn'817 print*,ptoto,patm,ptotn,patmn818 print*,'Mult. factor for pressure (atm only)', patmn/patm819 do j=1,jjp1820 do i=1,iip1821 ps(i,j)=ps(i,j)*patmn/patm822 enddo823 enddo824 825 826 827 c Correction pour la conservation des traceurs828 yes=' '829 do while ((yes.ne.'y').and.(yes.ne.'n'))830 write(*,*) 'Do you wish to conserve tracer total mass (y)',831 & ' or tracer mixing ratio (n) ?'832 read(*,fmt='(a)') yes833 end do834 835 if (yes.eq.'y') then836 write(*,*) 'OK : conservation of tracer total mass'837 DO iq =1, nqtot838 DO l=1,llm839 DO j=1,jjp1840 DO i=1,iip1841 q(i,j,l,iq)=q(i,j,l,iq)*patm/patmn842 ENDDO843 ENDDO844 ENDDO845 ENDDO846 else847 write(*,*) 'OK : conservation of tracer mixing ratio'848 end if849 850 c Correction pour la pression au niveau de la mer851 yes=' '852 do while ((yes.ne.'y').and.(yes.ne.'n'))853 write(*,*) 'Do you wish fix pressure at sea level (y)',854 & ' or not (n) ?'855 read(*,fmt='(a)') yes856 end do857 858 if (yes.eq.'y') then859 write(*,*) 'Value?'860 read(*,*,iostat=ierr) psea861 DO i=1,iip1862 DO j=1,jjp1863 ps(i,j)=psea864 865 ENDDO866 ENDDO867 write(*,*) 'psea=',psea868 else869 write(*,*) 'no'870 end if871 872 873 c emis : change surface emissivity (added by RW)874 c ----------------------------------------------875 else if (trim(modif).eq.'emis') then876 877 print*,'new value?'878 read(*,*) emisread879 880 do i=1,ngridmx881 emis(i)=emisread882 enddo883 648 884 649 c qname : change tracer name … … 1057 822 write(*,*)'No modifications to tracer ',trim(tname(iq)) 1058 823 endif 824 825 826 endif 1059 827 1060 1061 c wetstart : wet atmosphere with a north to south gradient1062 c --------------------------------------------------------1063 else if (trim(modif) .eq. 'wetstart') then1064 ! check that there is indeed a water vapor tracer1065 if (igcm_h2o_vap.eq.0) then1066 write(*,*) "No water vapour tracer! Can't use this option"1067 stop1068 endif1069 DO l=1,llm1070 DO j=1,jjp11071 DO i=1,iip11072 q(i,j,l,igcm_h2o_vap)=150.e-6 * (rlatu(j)+pi/2.) / pi1073 ENDDO1074 ENDDO1075 ENDDO1076 1077 write(*,*) 'Water mass mixing ratio at north pole='1078 * ,q(1,1,1,igcm_h2o_vap)1079 write(*,*) '---------------------------south pole='1080 * ,q(1,jjp1,1,igcm_h2o_vap)1081 1082 c noglacier : remove tropical water ice (to initialize high res sim)1083 c --------------------------------------------------1084 else if (trim(modif) .eq. 'noglacier') then1085 if (igcm_h2o_ice.eq.0) then1086 write(*,*) "No water ice tracer! Can't use this option"1087 stop1088 endif1089 do ig=1,ngridmx1090 j=(ig-2)/iim +21091 if(ig.eq.1) j=11092 write(*,*) 'OK: remove surface ice for |lat|<45'1093 if (abs(rlatu(j)*180./pi).lt.45.) then1094 qsurf(ig,igcm_h2o_ice)=0.1095 end if1096 end do1097 1098 1099 c watercapn : H20 ice on permanent northern cap1100 c --------------------------------------------------1101 else if (trim(modif) .eq. 'watercapn') then1102 if (igcm_h2o_ice.eq.0) then1103 write(*,*) "No water ice tracer! Can't use this option"1104 stop1105 endif1106 1107 DO j=1,jjp11108 DO i=1,iim1109 ig=1+(j-2)*iim +i1110 if(j.eq.1) ig=11111 if(j.eq.jjp1) ig=ngridmx1112 1113 if (rlatu(j)*180./pi.gt.80.) then1114 qsurf(ig,igcm_h2o_ice)=3.4e31115 !do isoil=1,nsoilmx1116 ! ith(i,j,isoil) = 18000. ! thermal inertia1117 !enddo1118 write(*,*)' ==> Ice mesh North boundary (deg)= ',1119 & rlatv(j-1)*180./pi1120 end if1121 ENDDO1122 ENDDO1123 CALL gr_dyn_fi(nsoilmx,iip1,jjp1,ngridmx,ith,ithfi)1124 1125 c watercaps : H20 ice on permanent southern cap1126 c -------------------------------------------------1127 else if (trim(modif) .eq. 'watercaps') then1128 if (igcm_h2o_ice.eq.0) then1129 write(*,*) "No water ice tracer! Can't use this option"1130 stop1131 endif1132 1133 DO j=1,jjp11134 DO i=1,iim1135 ig=1+(j-2)*iim +i1136 if(j.eq.1) ig=11137 if(j.eq.jjp1) ig=ngridmx1138 1139 if (rlatu(j)*180./pi.lt.-80.) then1140 qsurf(ig,igcm_h2o_ice)=3.4e31141 !do isoil=1,nsoilmx1142 ! ith(i,j,isoil) = 18000. ! thermal inertia1143 !enddo1144 write(*,*)' ==> Ice mesh South boundary (deg)= ',1145 & rlatv(j-1)*180./pi1146 end if1147 ENDDO1148 ENDDO1149 CALL gr_dyn_fi(nsoilmx,iip1,jjp1,ngridmx,ith,ithfi)1150 1151 1152 c noacglac : H2O ice across highest terrain1153 c --------------------------------------------1154 else if (trim(modif) .eq. 'noacglac') then1155 if (igcm_h2o_ice.eq.0) then1156 write(*,*) "No water ice tracer! Can't use this option"1157 stop1158 endif1159 DO j=1,jjp11160 DO i=1,iim1161 ig=1+(j-2)*iim +i1162 if(j.eq.1) ig=11163 if(j.eq.jjp1) ig=ngridmx1164 1165 if(phis(i,j).gt.1000.*g)then1166 alb(i,j) = 0.5 ! snow value1167 do isoil=1,nsoilmx1168 ith(i,j,isoil) = 18000. ! thermal inertia1169 ! this leads to rnat set to 'ocean' in physiq.F901170 ! actually no, because it is soil not surface1171 enddo1172 endif1173 ENDDO1174 ENDDO1175 CALL gr_dyn_fi(nsoilmx,iip1,jjp1,ngridmx,ith,ithfi)1176 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,alb,albfi)1177 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,phis,phisfi)1178 1179 1180 1181 c oborealis : H2O oceans across Vastitas Borealis1182 c -----------------------------------------------1183 else if (trim(modif) .eq. 'oborealis') then1184 if (igcm_h2o_ice.eq.0) then1185 write(*,*) "No water ice tracer! Can't use this option"1186 stop1187 endif1188 DO j=1,jjp11189 DO i=1,iim1190 ig=1+(j-2)*iim +i1191 if(j.eq.1) ig=11192 if(j.eq.jjp1) ig=ngridmx1193 1194 if(phis(i,j).lt.-4000.*g)then1195 ! if( (phis(i,j).lt.-4000.*g)1196 ! & .and. (rlatu(j)*180./pi.lt.0.) )then ! south hemisphere only1197 ! phis(i,j)=-8000.0*g ! proper ocean1198 phis(i,j)=-4000.0*g ! scanty ocean1199 1200 alb(i,j) = 0.07 ! oceanic value1201 do isoil=1,nsoilmx1202 ith(i,j,isoil) = 18000. ! thermal inertia1203 ! this leads to rnat set to 'ocean' in physiq.F901204 ! actually no, because it is soil not surface1205 enddo1206 endif1207 ENDDO1208 ENDDO1209 CALL gr_dyn_fi(nsoilmx,iip1,jjp1,ngridmx,ith,ithfi)1210 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,alb,albfi)1211 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,phis,phisfi)1212 1213 c iborealis : H2O ice in Northern plains1214 c --------------------------------------1215 else if (trim(modif) .eq. 'iborealis') then1216 if (igcm_h2o_ice.eq.0) then1217 write(*,*) "No water ice tracer! Can't use this option"1218 stop1219 endif1220 DO j=1,jjp11221 DO i=1,iim1222 ig=1+(j-2)*iim +i1223 if(j.eq.1) ig=11224 if(j.eq.jjp1) ig=ngridmx1225 1226 if(phis(i,j).lt.-4000.*g)then1227 !qsurf(ig,igcm_h2o_ice)=1.e31228 qsurf(ig,igcm_h2o_ice)=241.4 ! to make total 33 kg m^-21229 endif1230 ENDDO1231 ENDDO1232 CALL gr_dyn_fi(nsoilmx,iip1,jjp1,ngridmx,ith,ithfi)1233 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,alb,albfi)1234 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,phis,phisfi)1235 1236 1237 c oceanball : H2O liquid everywhere1238 c ----------------------------1239 else if (trim(modif) .eq. 'oceanball') then1240 if (igcm_h2o_ice.eq.0) then1241 write(*,*) "No water ice tracer! Can't use this option"1242 stop1243 endif1244 DO j=1,jjp11245 DO i=1,iim1246 ig=1+(j-2)*iim +i1247 if(j.eq.1) ig=11248 if(j.eq.jjp1) ig=ngridmx1249 1250 qsurf(ig,igcm_h2o_vap)=0.0 ! for ocean, this is infinite source1251 qsurf(ig,igcm_h2o_ice)=0.01252 alb(i,j) = 0.07 ! ocean value1253 1254 do isoil=1,nsoilmx1255 ith(i,j,isoil) = 18000. ! thermal inertia1256 !ith(i,j,isoil) = 50. ! extremely low for test1257 ! this leads to rnat set to 'ocean' in physiq.F901258 enddo1259 1260 ENDDO1261 ENDDO1262 CALL gr_dyn_fi(nsoilmx,iip1,jjp1,ngridmx,ith,ithfi)1263 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,alb,albfi)1264 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,phis,phisfi)1265 1266 c iceball : H2O ice everywhere1267 c ----------------------------1268 else if (trim(modif) .eq. 'iceball') then1269 if (igcm_h2o_ice.eq.0) then1270 write(*,*) "No water ice tracer! Can't use this option"1271 stop1272 endif1273 DO j=1,jjp11274 DO i=1,iim1275 ig=1+(j-2)*iim +i1276 if(j.eq.1) ig=11277 if(j.eq.jjp1) ig=ngridmx1278 1279 qsurf(ig,igcm_h2o_vap)=-50. ! for ocean, this is infinite source1280 qsurf(ig,igcm_h2o_ice)=50. ! == to 0.05 m of oceanic ice1281 alb(i,j) = 0.6 ! ice albedo value1282 1283 do isoil=1,nsoilmx1284 !ith(i,j,isoil) = 18000. ! thermal inertia1285 ! this leads to rnat set to 'ocean' in physiq.F901286 enddo1287 1288 ENDDO1289 ENDDO1290 CALL gr_dyn_fi(nsoilmx,iip1,jjp1,ngridmx,ith,ithfi)1291 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,alb,albfi)1292 1293 c supercontinent : H2O ice everywhere1294 c ----------------------------1295 else if (trim(modif) .eq. 'supercontinent') then1296 write(*,*) 'Minimum longitude (-180,180)'1297 read(*,*) val1298 write(*,*) 'Maximum longitude (-180,180)'1299 read(*,*) val21300 write(*,*) 'Minimum latitude (-90,90)'1301 read(*,*) val31302 write(*,*) 'Maximum latitude (-90,90)'1303 read(*,*) val41304 1305 do j=1,jjp11306 do i=1,iip11307 ig=1+(j-2)*iim +i1308 if(j.eq.1) ig=11309 if(j.eq.jjp1) ig=ngridmx1310 1311 c Supercontinent:1312 if (((rlatu(j)*180./pi.le.val4).and.1313 & (rlatu(j)*180./pi.ge.val3).and.1314 & (rlonv(i)*180./pi.le.val2).and.1315 & (rlonv(i)*180./pi.ge.val))) then1316 1317 rnat(ig)=1.1318 alb(i,j) = 0.31319 do isoil=1,nsoilmx1320 ith(i,j,isoil) = 2000.1321 enddo1322 c Ocean:1323 else1324 rnat(ig)=0.1325 alb(i,j) = 0.071326 do isoil=1,nsoilmx1327 ith(i,j,isoil) = 18000.1328 enddo1329 end if1330 1331 enddo1332 enddo1333 CALL gr_dyn_fi(nsoilmx,iip1,jjp1,ngridmx,ith,ithfi)1334 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,alb,albfi)1335 1336 c isotherm : Isothermal temperatures and no winds1337 c -----------------------------------------------1338 else if (trim(modif) .eq. 'isotherm') then1339 1340 write(*,*)'Isothermal temperature of the atmosphere,1341 & surface and subsurface'1342 write(*,*) 'Value of this temperature ? :'1343 203 read(*,*,iostat=ierr) Tiso1344 if(ierr.ne.0) goto 2031345 1346 tsurf(1:ngridmx)=Tiso1347 1348 tsoil(1:ngridmx,1:nsoilmx)=Tiso1349 1350 Tset(1:iip1,1:jjp1,1:llm)=Tiso1351 flagtset=.true.1352 1353 t(1:iip1,1:jjp1,1:llm)=Tiso1354 !! otherwise hydrost. integrations below1355 !! use the wrong temperature1356 !! -- NB: Tset might be useless1357 1358 ucov(1:iip1,1:jjp1,1:llm)=01359 vcov(1:iip1,1:jjm,1:llm)=01360 q2(1:ngridmx,1:llm+1)=01361 1362 c radequi : Radiative equilibrium profile of temperatures and no winds1363 c --------------------------------------------------------------------1364 else if (trim(modif) .eq. 'radequi') then1365 1366 write(*,*)'radiative equilibrium temperature profile'1367 1368 do ig=1, ngridmx1369 teque= 335.0-60.0*sin(latitude(ig))*sin(latitude(ig))-1370 & 10.0*cos(latitude(ig))*cos(latitude(ig))1371 tsurf(ig) = MAX(220.0,teque)1372 end do1373 do l=2,nsoilmx1374 do ig=1, ngridmx1375 tsoil(ig,l) = tsurf(ig)1376 end do1377 end do1378 DO j=1,jjp11379 DO i=1,iim1380 Do l=1,llm1381 teque=335.-60.0*sin(rlatu(j))*sin(rlatu(j))-1382 & 10.0*cos(rlatu(j))*cos(rlatu(j))1383 Tset(i,j,l)=MAX(220.0,teque)1384 end do1385 end do1386 end do1387 flagtset=.true.1388 ucov(1:iip1,1:jjp1,1:llm)=01389 vcov(1:iip1,1:jjm,1:llm)=01390 q2(1:ngridmx,1:llm+1)=01391 1392 c coldstart : T set 1K above N2 frost point and no winds1393 c ------------------------------------------------1394 else if (trim(modif) .eq. 'coldstart') then1395 1396 write(*,*)'set temperature of the atmosphere,'1397 &,'surface and subsurface how many degrees above N2 frost point?'1398 204 read(*,*,iostat=ierr) Tabove1399 if(ierr.ne.0) goto 2041400 1401 DO j=1,jjp11402 DO i=1,iim1403 ig=1+(j-2)*iim +i1404 if(j.eq.1) ig=11405 if(j.eq.jjp1) ig=ngridmx1406 tsurf(ig) = (-3167.8)/(log(.01*ps(i,j))-23.23)+Tabove1407 END DO1408 END DO1409 do l=1,nsoilmx1410 do ig=1, ngridmx1411 tsoil(ig,l) = tsurf(ig)1412 end do1413 end do1414 DO j=1,jjp11415 DO i=1,iim1416 Do l=1,llm1417 pp = aps(l) +bps(l)*ps(i,j)1418 Tset(i,j,l)=(-3167.8)/(log(.01*pp)-23.23)+Tabove1419 end do1420 end do1421 end do1422 1423 flagtset=.true.1424 ucov(1:iip1,1:jjp1,1:llm)=01425 vcov(1:iip1,1:jjm,1:llm)=01426 q2(1:ngridmx,1:llm+1)=01427 1428 1429 c n2ice=0 : remove N2 polar ice caps'1430 c ------------------------------------------------1431 else if (trim(modif) .eq. 'n2ice=0') then1432 ! check that there is indeed a n2_ice tracer ...1433 if (igcm_n2_ice.ne.0) then1434 do ig=1,ngridmx1435 !n2ice(ig)=01436 qsurf(ig,igcm_n2_ice)=01437 emis(ig)=emis(ngridmx/2)1438 end do1439 else1440 write(*,*) "Can't remove N2 ice!! (no n2_ice tracer)"1441 endif1442 1443 ! therm_ini_s: (re)-set soil thermal inertia to reference surface values1444 ! ----------------------------------------------------------------------1445 1446 else if (trim(modif) .eq. 'therm_ini_s') then1447 ! write(*,*)"surfithfi(1):",surfithfi(1)1448 do isoil=1,nsoilmx1449 inertiedat(1:ngridmx,isoil)=surfithfi(1:ngridmx)1450 enddo1451 write(*,*)'OK: Soil thermal inertia has been reset to referenc1452 &e surface values'1453 ! write(*,*)"inertiedat(1,1):",inertiedat(1,1)1454 ithfi(:,:)=inertiedat(:,:)1455 ! recast ithfi() onto ith()1456 call gr_fi_dyn(nsoilmx,ngridmx,iip1,jjp1,ithfi,ith)1457 ! Check:1458 ! do i=1,iip11459 ! do j=1,jjp11460 ! do isoil=1,nsoilmx1461 ! write(77,*) i,j,isoil," ",ith(i,j,isoil)1462 ! enddo1463 ! enddo1464 ! enddo1465 1466 1467 1468 c slab_ocean_initialisation1469 c ------------------------------------------------1470 else if (trim(modif) .eq. 'slab_ocean_0') then1471 write(*,*)'OK: initialisation of slab ocean'1472 1473 DO ig=1, ngridmx1474 rnat(ig)=1.1475 tslab(ig,1)=0.1476 tslab(ig,2)=0.1477 tsea_ice(ig)=0.1478 sea_ice(ig)=0.1479 pctsrf_sic(ig)=0.1480 1481 if(ithfi(ig,1).GT.10000.)then1482 rnat(ig)=0.1483 phisfi(ig)=0.1484 tsea_ice(ig)=273.15-1.81485 tslab(ig,1)=tsurf(ig)1486 tslab(ig,2)=tsurf(ig)!*2./3.+(273.15-1.8)/3.1487 endif1488 1489 ENDDO1490 CALL gr_fi_dyn(1,ngridmx,iip1,jjp1,phisfi,phis)1491 1492 1493 c chemistry_initialisation1494 c ------------------------------------------------1495 else if (trim(modif) .eq. 'chemistry_ini') then1496 write(*,*)'OK: initialisation of chemical profiles'1497 1498 1499 call inichim_newstart(ngridmx, nqtot, q, qsurf, ps,1500 & 1, 0)1501 1502 ! We want to have the very same value at lon -180 and lon 1801503 do l = 1,llm1504 do j = 1,jjp11505 do iq = 1,nqtot1506 q(iip1,j,l,iq) = q(1,j,l,iq)1507 end do1508 end do1509 end do1510 1511 1512 else1513 write(*,*) ' Unknown (misspelled?) option!!!'1514 end if ! of if (trim(modif) .eq. '...') elseif ...1515 1516 1517 1518 828 enddo ! of do ! infinite loop on liste of changes 1519 829 … … 1524 834 c Initialisation for cloud fraction and oceanic ice (added by BC 2010) 1525 835 c======================================================================= 1526 DO ig=1, ngridmx1527 totalfrac(ig)=0.51528 DO l=1,llm1529 cloudfrac(ig,l)=0.51530 ENDDO836 ! DO ig=1, ngridmx 837 ! totalfrac(ig)=0.5 838 ! DO l=1,llm 839 ! cloudfrac(ig,l)=0.5 840 ! ENDDO 1531 841 ! Ehouarn, march 2012: also add some initialisation for hice 1532 hice(ig)=0.01533 ENDDO842 ! hice(ig)=0.0 843 ! ENDDO 1534 844 1535 845 c======================================================== … … 1651 961 call physdem1("restartfi.nc",nsoilmx,ngridmx,llm,nqtot, 1652 962 & dtphys,real(day_ini), 1653 & tsurf,tsoil,emis,q2,qsurf ,1654 & cloudfrac,totalfrac,hice,1655 & rnat,pctsrf_sic,tslab,tsea_ice,sea_ice)963 & tsurf,tsoil,emis,q2,qsurf) 964 ! & cloudfrac,totalfrac,hice, 965 ! & rnat,pctsrf_sic,tslab,tsea_ice,sea_ice) 1656 966 1657 967 c======================================================================= -
trunk/LMDZ.PLUTO/libf/phypluto/physiq_mod.F90
r3197 r3198 920 920 print*,'and the surface albedo is taken equal to the first visible spectral value' 921 921 922 albedo_equivalent(1:ngrid)=albedo(1:ngrid,1) 922 923 fluxsurfabs_sw(1:ngrid) = fluxtop_dn(1:ngrid)*(1.-albedo(1:ngrid,1)) 924 ! TB24: 925 fluxabs_sw(1:ngrid)=fluxsurfabs_sw(1:ngrid) 923 926 fluxrad_sky(1:ngrid) = fluxsurfabs_sw(1:ngrid) 924 927 fluxtop_lw(1:ngrid) = emis(1:ngrid)*sigma*tsurf(1:ngrid)**4 … … 1662 1665 if(callrad)then 1663 1666 1664 !call writediagfi(ngrid,"ALB","Surface albedo"," ",2,albedo_equivalent)1667 call writediagfi(ngrid,"ALB","Surface albedo"," ",2,albedo_equivalent) 1665 1668 !call writediagfi(ngrid,"ALB_1st","First Band Surface albedo"," ",2,albedo(:,1)) 1666 1669 call writediagfi(ngrid,"ISR","incoming stellar rad.","W m-2",2,fluxtop_dn) -
trunk/LMDZ.PLUTO/libf/phypluto/surfini.F
r3195 r3198 44 44 ! Step 2 : We get the bare ground albedo from the start files. 45 45 DO ig=1,ngrid 46 albedo_bareground(ig)= albedodat(ig)46 albedo_bareground(ig)=0.1 ! TB24 albedodat(ig) 47 47 DO nw=1,L_NSPECTV 48 albedo(ig,nw)= albedo_bareground(ig)48 albedo(ig,nw)=0.1 !albedo_bareground(ig) 49 49 ENDDO 50 50 ENDDO -
trunk/LMDZ.PLUTO/libf/phypluto/turbdiff_mod.F90
r3197 r3198 138 138 139 139 IF (firstcall) THEN 140 ivap=1 !TB24 141 iliq=0 142 iliq_surf=0 143 iice_surf=0 ! simply to make the code legible 140 144 sensibFlux(:)=0. 141 145 firstcall=.false.
Note: See TracChangeset
for help on using the changeset viewer.