Changeset 2893
- Timestamp:
- Feb 10, 2023, 12:14:50 PM (23 months ago)
- Location:
- trunk
- Files:
-
- 1 deleted
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.COMMON/libf/evolution/comsoil_h_PEM.F90
r2888 r2893 42 42 allocate(inertiedat_PEM(ngrid,nsoilmx_PEM)) 43 43 allocate(water_reservoir(ngrid)) 44 allocate(water_reservoir(ngrid))45 44 end subroutine ini_comsoil_h_PEM 46 45 -
trunk/LMDZ.COMMON/libf/evolution/conf_pem.F90
r2888 r2893 14 14 #endif 15 15 16 USE temps_mod_evol, ONLY: year_bp_ini, dt_pem, ice_criterion, ps_criterion, &16 USE temps_mod_evol, ONLY: year_bp_ini, dt_pem, water_ice_criterion, co2_ice_criterion, ps_criterion, & 17 17 Max_iter_pem, evol_orbit_pem 18 18 USE comsoil_h_pem, only: soil_pem,fluxgeo,water_reservoir_nom 19 19 USE adsorption_mod,only: adsorption_pem 20 20 CHARACTER(len=20),parameter :: modname ='conf_pem' 21 21 22 !PEM parameter 23 22 24 year_bp_ini=0. 23 25 CALL getin('year_bp_ini', year_bp_ini) … … 26 28 CALL getin('dt_pem', dt_pem) 27 29 28 ice_criterion=0.2 29 CALL getin('ice_criterion', ice_criterion) 30 water_ice_criterion=0.2 31 CALL getin('water_ice_criterion', water_ice_criterion) 32 33 co2_ice_criterion=0.2 34 CALL getin('co2_ice_criterion', co2_ice_criterion) 30 35 31 36 ps_criterion = 0.15 … … 51 56 print*,'Adsorption must be used when soil_pem = T' 52 57 call abort_physic(modname,"Adsorption must be used when soil_pem = T",1) 53 58 endif 54 59 55 56 60 if ((not(soil_pem)).and.fluxgeo.gt.0.) then 57 61 print*,'Soil is not activated but Flux Geo > 0.' 58 62 call abort_physic(modname,"Soil is not activated but Flux Geo > 0.'",1) 59 63 endif 60 64 61 62 65 water_reservoir_nom = 1e4 63 66 CALL getin('water_reservoir_nom',water_reservoir_nom) -
trunk/LMDZ.COMMON/libf/evolution/criterion_pem_stop_mod.F90
r2888 r2893 15 15 SUBROUTINE criterion_waterice_stop(cell_area,ini_surf,qsurf,STOPPING,ngrid,initial_h2o_ice) 16 16 17 USE temps_mod_evol, ONLY: ice_criterion17 USE temps_mod_evol, ONLY: water_ice_criterion 18 18 use comslope_mod, ONLY: subslope_dist,nslope 19 19 … … 32 32 INTEGER, intent(in) :: ngrid ! # of grid physical grid points 33 33 REAL, intent(in) :: cell_area(ngrid) ! physical point field : Area of the cells 34 REAL, intent(in) :: 34 REAL, intent(in) :: qsurf(ngrid,nslope) ! physical point field : Actual density of water ice 35 35 REAL, intent(in) :: ini_surf 36 36 REAL, intent(in) :: initial_h2o_ice(ngrid,nslope) … … 60 60 61 61 ! check of the criterion 62 if(present_surf.LT.ini_surf*(1- ice_criterion) .OR. &63 present_surf.GT.ini_surf*(1+ ice_criterion)) then62 if(present_surf.LT.ini_surf*(1-water_ice_criterion) .OR. & 63 present_surf.GT.ini_surf*(1+water_ice_criterion)) then 64 64 STOPPING=.TRUE. 65 65 print *, "Reason of stopping : The surface of water ice sublimating reach the threshold:" 66 66 print *, "Current surface of water ice sublimating=", present_surf 67 67 print *, "Initial surface of water ice sublimating=", ini_surf 68 print *, "Percentage of change accepted=", ice_criterion*10069 print *, "present_surf<ini_surf*(1- ice_criterion)", (present_surf.LT.ini_surf*(1-ice_criterion))68 print *, "Percentage of change accepted=", water_ice_criterion*100 69 print *, "present_surf<ini_surf*(1-water_ice_criterion)", (present_surf.LT.ini_surf*(1-water_ice_criterion)) 70 70 endif 71 71 … … 80 80 SUBROUTINE criterion_co2_stop(cell_area,ini_surf,qsurf,STOPPING_ice,STOPPING_ps,ngrid,initial_h2o_ice,global_ave_press_GCM,global_ave_press_new,nslope) 81 81 82 USE temps_mod_evol, ONLY: ice_criterion,ps_criterion82 USE temps_mod_evol, ONLY: co2_ice_criterion,ps_criterion 83 83 use comslope_mod, ONLY: subslope_dist 84 84 … … 127 127 128 128 ! check of the criterion 129 if(present_surf.LT.ini_surf*(1- ice_criterion) .OR. &130 present_surf.GT.ini_surf*(1+ ice_criterion)) then129 if(present_surf.LT.ini_surf*(1-co2_ice_criterion) .OR. & 130 present_surf.GT.ini_surf*(1+co2_ice_criterion)) then 131 131 STOPPING_ice=.TRUE. 132 132 print *, "Reason of stopping : The surface of co2 ice sublimating reach the threshold:" 133 133 print *, "Current surface of co2 ice sublimating=", present_surf 134 134 print *, "Initial surface of co2 ice sublimating=", ini_surf 135 print *, "Percentage of change accepted=", ice_criterion*100136 print *, "present_surf<ini_surf*(1- ice_criterion)", (present_surf.LT.ini_surf*(1-ice_criterion))135 print *, "Percentage of change accepted=", co2_ice_criterion*100 136 print *, "present_surf<ini_surf*(1-co2_ice_criterion)", (present_surf.LT.ini_surf*(1-co2_ice_criterion)) 137 137 endif 138 138 … … 155 155 156 156 END MODULE 157 158 159 160 161 162 -
trunk/LMDZ.COMMON/libf/evolution/pem.F90
r2888 r2893 143 143 144 144 character (len = *), parameter :: FILE_NAME = "startfi_evol.nc" !Name of the file used for initialsing the PEM 145 character*2 str2 145 146 integer :: ncid, varid,status !Variable for handling opening of files 146 147 integer :: phydimid, subdimid, nlayerdimid, nqdimid !Variable ID for Netcdf files … … 158 159 159 160 ! Variable for h2o_ice evolution 160 161 REAL , dimension(:,:), allocatable :: tendencies_h2o_ice ! LON x LAT field : Tendency of evolution of perenial ice over a year 162 REAL, dimension(:),allocatable :: tendencies_h2o_ice_phys ! physical point field : Tendency of evolution of perenial ice over a year 163 164 REAL , dimension(:,:), allocatable :: tendencies_co2_ice ! LON x LAT field : Tendency of evolution of perenial co2 ice over a year 165 REAL, dimension(:),allocatable :: tendencies_co2_ice_phys ! physical point field : Tendency of evolution of perenial co2 ice over a year 166 167 REAL :: ini_surf ! Initial surface of sublimating water ice 168 REAL :: ini_surf_h2o ! Initial surface of sublimating water ice 169 REAL, dimension(:),allocatable :: initial_h2o_ice ! physical point field : Logical array indicating sublimating point 170 161 REAL :: ini_surf_h2o ! Initial surface of sublimating water ice 171 162 REAL :: ini_surf_co2 ! Initial surface of sublimating co2 ice 172 REAL, dimension(:),allocatable :: initial_co2_ice ! physical point field : Logical array indicating sublimating point of co2 ice173 174 REAL , dimension(:,:), allocatable :: min_h2o_ice_s_1 ! LON x LAT field : minimum of water ice at each point for the first year175 REAL , dimension(:,:), allocatable :: min_h2o_ice_s_2 ! LON x LAT field : minimum of water ice at each point for the second year176 177 REAL , dimension(:,:), allocatable :: min_co2_ice_s_1 ! LON x LAT field : minimum of water ice at each point for the first year178 REAL , dimension(:,:), allocatable :: min_co2_ice_s_2 ! LON x LAT field : minimum of water ice at each point for the second year179 163 180 164 REAL :: global_ave_press_GCM ! constant: global average pressure retrieved in the GCM [Pa] … … 193 177 LOGICAL :: STOPPING_pressure 194 178 INTEGER :: criterion_stop ! which criterion is reached ? 1= h2o ice surf, 2 = co2 ice surf, 3 = ps, 4 = orb param 195 196 179 197 180 REAL, dimension(:,:,:),allocatable :: q_co2_GCM ! Lon x Lat x Time : mass mixing ratio of co2 in the first layer [kg/kg] … … 430 413 431 414 call surfini(ngrid,qsurf) 432 call surfini(ngrid,qsurf)433 415 434 416 #else … … 452 434 453 435 if (nslope.eq.1) then 454 def_slope(1) = 0455 def_slope(2) = 0456 def_slope_mean=0457 subslope_dist(:,1) = 1.436 def_slope(1) = 0 437 def_slope(2) = 0 438 def_slope_mean=0 439 subslope_dist(:,1) = 1. 458 440 endif 459 441 … … 500 482 allocate(flag_co2flow_mesh(ngrid)) 501 483 502 503 484 flag_co2flow(:,:) = 0. 485 flag_co2flow_mesh(:) = 0. 504 486 505 487 … … 518 500 call nb_time_step_GCM("data_GCM_Y1.nc",timelen) 519 501 520 allocate(min_h2o_ice_s_1(iim+1,jjm+1))521 allocate(min_co2_ice_s_1(iim+1,jjm+1))522 502 allocate(vmr_co2_gcm(iim+1,jjm+1,timelen)) 523 503 allocate(q_h2o_GCM(iim+1,jjm+1,timelen)) … … 552 532 print *, "Downloading data Y1..." 553 533 554 call read_data_GCM("data_GCM_Y1.nc",timelen, iim,jjm, min_h2o_ice_s_1,min_co2_ice_s_1,vmr_co2_gcm,ps_GCM_yr1,min_co2_ice_slope_1,min_h2o_ice_slope_1,&534 call read_data_GCM("data_GCM_Y1.nc",timelen, iim,jjm,vmr_co2_gcm,ps_GCM_yr1,min_co2_ice_slope_1,min_h2o_ice_slope_1,& 555 535 nslope,tsurf_ave_yr1,tsoil_ave_yr1, tsurf_GCM_timeseries,tsoil_GCM_timeseries,TI_GCM,q_co2_GCM,q_h2o_GCM,co2_ice_GCM_slope, & 556 536 watersurf_density_timeseries,watersoil_density_timeseries) … … 560 540 print *, "Downloading data Y1 done" 561 541 562 allocate(min_h2o_ice_s_2(iim+1,jjm+1))563 allocate(min_co2_ice_s_2(iim+1,jjm+1))564 542 allocate(min_co2_ice_slope_2(iim+1,jjm+1,nslope)) 565 543 allocate(min_h2o_ice_slope_2(iim+1,jjm+1,nslope)) … … 567 545 print *, "Downloading data Y2" 568 546 569 call read_data_GCM("data_GCM_Y2.nc",timelen,iim,jjm ,min_h2o_ice_s_2,min_co2_ice_s_2,vmr_co2_gcm,ps_GCM,min_co2_ice_slope_2,min_h2o_ice_slope_2, &547 call read_data_GCM("data_GCM_Y2.nc",timelen,iim,jjm,vmr_co2_gcm,ps_GCM,min_co2_ice_slope_2,min_h2o_ice_slope_2, & 570 548 nslope,tsurf_ave,tsoil_ave, tsurf_GCM_timeseries,tsoil_GCM_timeseries,TI_GCM,q_co2_GCM,q_h2o_GCM,co2_ice_GCM_slope, & 571 549 watersurf_density_timeseries,watersoil_density_timeseries) … … 639 617 deallocate(TI_GCM) 640 618 deallocate(tsurf_GCM_timeseries) 641 642 619 643 620 if(soil_pem) then … … 654 631 CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,watersoil_density_timeseries(:,:,l,islope,t),watersoil_density_phys_PEM_timeseries(:,l,islope,t)) 655 632 ENDDO 656 657 633 ENDDO 658 634 DO l=nsoilmx+1,nsoilmx_PEM … … 664 640 ENDDO 665 641 ENDDO 666 642 watersoil_density_phys_PEM_ave(:,:,:) = SUM(watersoil_density_phys_PEM_timeseries(:,:,:,:),4)/timelen 667 643 watersurf_density_phys_ave(:,:) = SUM(watersurf_density_phys_timeseries(:,:,:),3)/timelen 668 644 deallocate(watersurf_density_timeseries) … … 685 661 686 662 !----- Compute tendencies from the PCM run 687 688 allocate(tendencies_h2o_ice(iim+1,jjm+1))689 allocate(tendencies_h2o_ice_phys(ngrid))690 allocate(tendencies_co2_ice(iim+1,jjm+1))691 allocate(tendencies_co2_ice_phys(ngrid))692 663 allocate(tendencies_co2_ice_slope(iim+1,jjm+1,nslope)) 693 664 allocate(tendencies_co2_ice_phys_slope(ngrid,nslope)) … … 697 668 698 669 ! Compute the tendencies of the evolution of ice over the years 699 700 call compute_tendencies(tendencies_h2o_ice,min_h2o_ice_s_1,&701 min_h2o_ice_s_2,iim,jjm,ngrid,tendencies_h2o_ice_phys)702 703 call compute_tendencies(tendencies_co2_ice,min_co2_ice_s_1,&704 min_co2_ice_s_2,iim,jjm,ngrid,tendencies_co2_ice_phys)705 670 706 671 call compute_tendencies_slope(tendencies_co2_ice_slope,min_co2_ice_slope_1,& … … 725 690 !---------------------------- Save initial PCM situation --------------------- 726 691 727 allocate(initial_h2o_ice(ngrid))728 allocate(initial_co2_ice(ngrid))729 692 allocate(initial_co2_ice_sublim_slope(ngrid,nslope)) 730 693 allocate(initial_co2_ice_slope(ngrid,nslope)) … … 733 696 ! We save the places where water ice is sublimating 734 697 ! We compute the surface of water ice sublimating 735 ini_surf=0.736 698 ini_surf_co2=0. 737 699 ini_surf_h2o=0. … … 739 701 do i=1,ngrid 740 702 Total_surface=Total_surface+cell_area(i) 741 if (tendencies_h2o_ice_phys(i).LT.0) then742 initial_h2o_ice(i)=1.743 ini_surf=ini_surf+cell_area(i)744 else745 initial_h2o_ice(i)=0.746 endif747 703 do islope=1,nslope 748 704 if (tendencies_co2_ice_phys_slope(i,islope).LT.0) then … … 767 723 768 724 print *, "Total initial surface of co2ice sublimating (slope)=", ini_surf_co2 769 print *, "Total initial surface of h2o ice sublimating=", ini_surf770 725 print *, "Total initial surface of h2o ice sublimating (slope)=", ini_surf_h2o 771 726 print *, "Total surface of the planet=", Total_surface … … 813 768 enddo 814 769 enddo 815 816 817 770 818 771 if(adsorption_pem) then … … 889 842 do i=1,ngrid 890 843 global_ave_press_new = global_ave_press_new -g*cell_area(i)*delta_co2_adsorbded(i)/Total_surface 891 enddo 844 enddo 845 print *, 'Global average pressure old time step',global_ave_press_old 846 print *, 'Global average pressure new time step',global_ave_press_new 892 847 endif 893 print *, 'Global average pressure old time step',global_ave_press_old 894 print *, 'Global average pressure new time step',global_ave_press_new848 849 call WRITEDIAGFI(ngrid,'ps_ave','Global average pressure','Pa',0,global_ave_press_new) 895 850 896 851 ! II.a.2. Old pressure levels for the timeseries, this value is deleted when unused and recreated each time (big memory consuption) … … 961 916 call evol_h2o_ice_s_slope(qsurf_slope(:,igcm_h2o_ice,:),tendencies_h2o_ice_phys_slope,iim,jjm,ngrid,cell_area,STOPPING_1_water,nslope) 962 917 918 DO islope=1, nslope 919 write(str2(1:2),'(i2.2)') islope 920 call WRITEDIAGFI(ngrid,'h2o_ice_s_slope'//str2,'H2O ice','kg.m-2',2,qsurf_slope(:,igcm_h2o_ice,islope)) 921 call WRITEDIAGFI(ngrid,'tendencies_h2o_ice_slope'//str2,'H2O ice tend','kg.m-2.year-1',2,tendencies_h2o_ice_phys_slope(:,islope)) 922 ENDDO 963 923 964 924 print *, "Evolution of co2 ice" … … 976 936 print *, "Co2 glacier flows" 977 937 978 979 980 938 call co2glaciers_evol(timelen,ngrid,nslope,iflat,subslope_dist,def_slope_mean,vmr_co2_pem_phys,ps_phys_timeseries,& 981 939 global_ave_press_GCM,global_ave_press_new,co2ice_slope,flag_co2flow,flag_co2flow_mesh) 982 940 983 984 985 941 DO islope=1, nslope 942 write(str2(1:2),'(i2.2)') islope 943 call WRITEDIAGFI(ngrid,'co2ice_slope'//str2,'CO2 ice','kg.m-2',2,co2ice_slope(:,islope)) 944 call WRITEDIAGFI(ngrid,'tendencies_co2_ice_slope'//str2,'CO2 ice tend','kg.m-2.year-1',2,tendencies_co2_ice_phys_slope(:,islope)) 945 ENDDO 986 946 987 947 !------------------------ … … 1063 1023 enddo 1064 1024 1025 DO islope=1, nslope 1026 write(str2(1:2),'(i2.2)') islope 1027 call WRITEDIAGFI(ngrid,'tsurf_slope'//str2,'tsurf','K',2,tsurf_slope(:,islope)) 1028 ENDDO 1065 1029 1066 1030 if(soil_pem) then … … 1090 1054 enddo 1091 1055 enddo 1092 1093 1094 1056 enddo 1095 1057 enddo 1096 1058 tsoil_PEM(:,:,:) = SUM(tsoil_phys_PEM_timeseries(:,:,:,:),4)/timelen 1097 1059 watersoil_density_phys_PEM_ave(:,:,:)= SUM(watersoil_density_phys_PEM_timeseries(:,:,:,:),4)/timelen 1098 1099 1060 1100 1061 print *, "Update of soil temperature done" … … 1134 1095 1135 1096 print *, "Adaptation of the new co2 tendencies to the current pressure" 1136 call recomp_tend_co2_slope(tendencies_co2_ice_phys_slope,tendencies_co2_ice_phys_slope_ini, vmr_co2_gcm_phys,vmr_co2_pem_phys,ps_phys_timeseries,&1097 call recomp_tend_co2_slope(tendencies_co2_ice_phys_slope,tendencies_co2_ice_phys_slope_ini,co2ice_slope,vmr_co2_gcm_phys,vmr_co2_pem_phys,ps_phys_timeseries,& 1137 1098 global_ave_press_GCM,global_ave_press_new,timelen,ngrid,nslope) 1138 1099 … … 1154 1115 1155 1116 year_iter=year_iter+dt_pem 1156 1157 1158 1117 1159 1118 print *, "Checking all the stopping criterion." … … 1191 1150 endif 1192 1151 1193 1194 1195 1152 global_ave_press_old=global_ave_press_new 1196 1153 … … 1223 1180 ENDDO ! of DO ig=1,ngrid 1224 1181 1225 1226 1182 ! H2O ice 1227 1228 1229 1230 1183 DO ig=1,ngrid 1231 1184 if(watercaptag(ig)) then 1232 1233 1185 watercap_sum=0. 1234 1186 DO islope=1,nslope … … 1247 1199 enddo 1248 1200 1249 1250 1201 DO ig = 1,ngrid 1251 1202 qsurf(ig,igcm_h2o_ice) = 0. … … 1258 1209 1259 1210 DO ig=1,ngrid 1260 !DO islope=1,nslope1261 if(qsurf (ig,igcm_h2o_ice).GT.500) then1211 DO islope=1,nslope 1212 if(qsurf_slope(ig,igcm_h2o_ice,islope).GT.500) then 1262 1213 watercaptag(ig)=.true. 1263 DO islope=1,nslope1264 1214 qsurf_slope(ig,igcm_h2o_ice,islope)=qsurf_slope(ig,igcm_h2o_ice,islope)-250 1265 1215 water_reservoir(ig)=water_reservoir(ig)+250 1266 ENDDO1267 1216 endif 1268 !enddo1217 enddo 1269 1218 enddo 1270 1219 … … 1277 1226 ENDDO 1278 1227 endif 1279 1280 1228 enddo 1281 1229 … … 1289 1237 ENDDO ! of DO ig=1,ngrid 1290 1238 1291 1292 1293 1294 1295 1296 1297 1298 1239 ! III_a.2 Tsoil update (for startfi) 1299 1240 … … 1304 1245 TI_GCM_phys(:,:,:)=TI_GCM_start(:,:,:) 1305 1246 endif !soil_pem 1306 1307 1247 1308 1248 #ifndef CPP_STD … … 1339 1279 ENDDO 1340 1280 ENDDO 1341 1342 1281 1343 1282 DO ig = 1,ngrid … … 1410 1349 DO ig=1,ngrid 1411 1350 if(watercaptag(ig)) then 1412 print *, "INNN"1413 1351 WC_sum=0. 1414 1352 DO islope=1,nslope -
trunk/LMDZ.COMMON/libf/evolution/pemetat0.F90
r2888 r2893 91 91 write(*,*)'Is start PEM?',startpem_file 92 92 93 startpem_file = . false.93 startpem_file = .true. 94 94 !1. Run 95 95 … … 317 317 do ig=1,ngrid 318 318 if(watercaptag(ig)) then 319 water_reservoir =water_reservoir_nom319 water_reservoir(ig)=water_reservoir_nom 320 320 else 321 water_reservoir =0.321 water_reservoir(ig)=0. 322 322 endif 323 323 enddo … … 483 483 endif !soil_pem 484 484 485 endif ! of if (startphy_file)486 487 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!488 489 490 491 485 !. e) water reservoir 492 486 … … 502 496 503 497 #endif 498 499 endif ! of if (startphy_file) 500 501 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 504 502 505 503 if(soil_pem) then -
trunk/LMDZ.COMMON/libf/evolution/read_data_GCM.F90
r2888 r2893 2 2 ! $Id $ 3 3 ! 4 SUBROUTINE read_data_GCM(fichnom,timelen, iim_input,jjm_input, min_h2o_ice_s,min_co2_ice_s,vmr_co2_gcm,ps_GCM, &4 SUBROUTINE read_data_GCM(fichnom,timelen, iim_input,jjm_input,vmr_co2_gcm,ps_GCM, & 5 5 min_co2_ice_slope,min_h2o_ice_slope,nslope,tsurf_ave,tsoil_ave,tsurf_gcm,tsoil_gcm,TI_ave,q_co2_GCM,q_h2o_GCM,co2_ice_slope, & 6 6 watersurf_density,watersoil_density) … … 31 31 32 32 ! Ouputs 33 REAL, INTENT(OUT) :: min_h2o_ice_s(iim_input+1,jjm_input+1) ! Minimum of h2o ice, mesh averaged of the year [kg/m^2]34 REAL, INTENT(OUT) :: min_co2_ice_s(iim_input+1,jjm_input+1) ! Minimum of co2 ice, mesh averaged of the year [kg/m^2]35 33 REAL, INTENT(OUT) :: min_co2_ice_slope(iim_input+1,jjm_input+1,nslope) ! Minimum of co2 ice per slope of the year [kg/m^2] 36 34 REAL, INTENT(OUT) :: min_h2o_ice_slope(iim_input+1,jjm_input+1,nslope) ! Minimum of h2o ice per slope of the year [kg/m^2] … … 78 76 B=1/m_noco2 79 77 80 allocate(co2_ice_s(iim+1,jjm+1,timelen))81 78 allocate(h2o_ice_s_slope(iim+1,jjm+1,nslope,timelen)) 82 allocate(watercap_slope(iim_input+1,jjm_input+1,nslope,timelen))83 allocate(h2o_ice_s(iim+1,jjm+1,timelen))84 79 allocate(watercap_slope(iim_input+1,jjm_input+1,nslope,timelen)) 85 80 … … 90 85 CALL err(NF90_OPEN(var,NF90_NOWRITE,fID),"open",var) 91 86 92 print *, "Downloading data for h2oice ..."93 94 ! Get h2o_ice_s of the concatenated file95 CALL get_var3("h2o_ice_s" ,h2o_ice_s)96 97 print *, "Downloading data for h2oice done"98 print *, "Downloading data for co2ice ..."99 100 CALL get_var3("co2ice" ,co2_ice_s)101 102 print *, "Downloading data for co2ice done"103 87 print *, "Downloading data for vmr co2..." 104 88 … … 202 186 203 187 ! Compute the minimum over the year for each point 204 print *, "Computing the min of h2o_ice"205 min_h2o_ice_s(:,:)=minval(h2o_ice_s,3)206 print *, "Computing the min of co2_ice"207 min_co2_ice_s(:,:)=minval(co2_ice_s,3)208 209 188 print *, "Computing the min of h2o_ice_slope" 210 189 min_h2o_ice_slope(:,:,:)=minval(h2o_ice_s_slope+watercap_slope,4) … … 227 206 DO i=1,iim+1 228 207 DO j = 1, jjm+1 229 if (min_co2_ice_s(i,j).LT.0) then230 min_h2o_ice_s(i,j) = 0.231 min_co2_ice_s(i,j) = 0.232 endif233 208 DO islope=1,nslope 234 209 if (min_co2_ice_slope(i,j,islope).LT.0) then … … 261 236 ENDDO 262 237 263 264 deallocate(co2_ice_s)265 238 deallocate(h2o_ice_s_slope) 266 deallocate(h2o_ice_s)267 268 239 269 240 CONTAINS -
trunk/LMDZ.COMMON/libf/evolution/recomp_tend_co2_slope.F90
r2863 r2893 2 2 ! $Id $ 3 3 ! 4 SUBROUTINE recomp_tend_co2_slope(tendencies_co2_ice_phys,tendencies_co2_ice_phys_ini, vmr_co2_gcm,vmr_co2_pem,ps_GCM_2,global_ave_press_GCM,global_ave_press_new,timelen,ngrid,nslope)4 SUBROUTINE recomp_tend_co2_slope(tendencies_co2_ice_phys,tendencies_co2_ice_phys_ini,co2ice_slope,vmr_co2_gcm,vmr_co2_pem,ps_GCM_2,global_ave_press_GCM,global_ave_press_new,timelen,ngrid,nslope) 5 5 6 6 IMPLICIT NONE … … 23 23 REAL, intent(in) :: global_ave_press_new 24 24 REAL, intent(in) :: tendencies_co2_ice_phys_ini(ngrid,nslope) ! physical point field : Evolution of perenial ice over one year 25 REAL, intent(in) :: co2ice_slope(ngrid,nslope) 25 26 26 27 ! OUTPUT … … 39 40 alpha=23.3494 40 41 41 coef=669* 24*3600*eps*sigma/L42 coef=669*88875*eps*sigma/L 42 43 43 44 ! Evolution of the water ice for each physical point … … 45 46 do islope=1,nslope 46 47 ave=0. 47 if(abs(tendencies_co2_ice_phys(i,islope)).gt.1e-4) then 48 ! if(abs(tendencies_co2_ice_phys(i,islope)).gt.1e-4) then 49 if(co2ice_slope(i,islope).gt.1e-4 .and. abs(tendencies_co2_ice_phys(i,islope)).gt.1e-5) then 48 50 do t=1,timelen 49 51 ave=ave+(beta/(alpha-log(vmr_co2_gcm(i,t)*ps_GCM_2(i,t)/100.)))**4 & 50 -(beta/(alpha-log(vmr_co2_pem(i,t)*ps_GCM_2(i,t)* global_ave_press_GCM/global_ave_press_new/100.)))**452 -(beta/(alpha-log(vmr_co2_pem(i,t)*ps_GCM_2(i,t)*(global_ave_press_new/global_ave_press_GCM)/100.)))**4 51 53 enddo 52 54 endif -
trunk/LMDZ.COMMON/libf/evolution/temps_mod_evol.F90
r2888 r2893 3 3 IMPLICIT NONE 4 4 5 INTEGER year_bp_ini ! year_bp_ini : Initial year of the simulation of the PEM (in evol.def) 6 INTEGER dt_pem ! dt_pem : in years, the time step used by the PEM 7 REAL ice_criterion ! ice_criterion : percentage of change of ice before stopping the PEM 8 REAL ps_criterion ! ice_criterion : percentage of change of ice before stopping the PEM 9 INTEGER year_PEM ! year written in startfiPEM.nc 10 INTEGER Max_iter_pem ! Maximal number of iteration when converging to a steady state, read in evol.def 11 LOGICAL evol_orbit_pem ! True if we want to follow the orbital parameters of ob_ex_lsp.asc, read in evol.def 5 INTEGER year_bp_ini ! year_bp_ini : Initial year of the simulation of the PEM (in evol.def) 6 INTEGER dt_pem ! dt_pem : in Planetary years, the time step used by the PEM 7 REAL water_ice_criterion ! Percentage of change of the surface of water ice sublimating before stopping the PEM 8 REAL co2_ice_criterion ! Percentage of change of the surface of co2 ice sublimating before stopping the PEM 9 REAL ps_criterion ! Percentage of change of averaged surface pressure before stopping the PEM 10 INTEGER year_PEM ! year written in startfiPEM.nc 11 INTEGER Max_iter_pem ! Maximal number of iteration when converging to a steady state, read in evol.def 12 LOGICAL evol_orbit_pem ! True if we want to follow the orbital parameters of ob_ex_lsp.asc, read in evol.def 12 13 13 14 END MODULE temps_mod_evol -
trunk/LMDZ.MARS/README
r2892 r2893 3860 3860 Change back the modification of r2883 to its original form + Retrocompatibility for icelocation_mode.ne.5 in surfini 3861 3861 3862 == 10/02/2023 == RV 3863 Correction of recomp_tend_co2 formula and make it dependent on the presence of co2_ice. 3864 Add different stopping criterion for water_ice and co2_ice called : water_ice_criterion and co2_ice_criterion. 3865 Add the possibility to output a diagfi.nc each year for the amount of ice, the tendencies, tsurf and ps. 3866 Remove useless variables (not sloped) 3867 Remove useless file 3868 Some cleaning 3869
Note: See TracChangeset
for help on using the changeset viewer.