Changeset 5662 for LMDZ6/trunk/libf/phylmdiso
- Timestamp:
- May 20, 2025, 4:24:41 PM (2 months ago)
- Location:
- LMDZ6/trunk/libf/phylmdiso
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmdiso/limit_read_mod.F90
r5217 r5662 22 22 REAL, ALLOCATABLE, DIMENSION(:), SAVE, PRIVATE :: sst 23 23 !$OMP THREADPRIVATE(sst) 24 !GG 25 REAL, ALLOCATABLE, DIMENSION(:), SAVE, PRIVATE :: sih 26 !$OMP THREADPRIVATE(sih) 27 !GG 24 28 #ifdef ISO 25 29 REAL, ALLOCATABLE, DIMENSION(:), SAVE, PRIVATE :: tuoce … … 254 258 END SUBROUTINE limit_read_sst 255 259 260 !GG 261 SUBROUTINE limit_read_hice(knon, knindex, hice_out) 262 ! 263 ! This subroutine returns the sea surface temperature already read from limit.nc. 264 ! 265 USE dimphy, ONLY : klon 266 267 INTEGER, INTENT(IN) :: knon ! nomber of points on compressed grid 268 INTEGER, DIMENSION(klon), INTENT(IN) :: knindex ! grid point number for compressed grid 269 REAL, DIMENSION(klon), INTENT(OUT) :: hice_out 270 271 INTEGER :: i 272 273 DO i = 1, knon 274 hice_out(i) = sih(knindex(i)) 275 END DO 276 277 END SUBROUTINE limit_read_hice 278 !GG 256 279 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 257 280 !! … … 273 296 USE mod_grid_phy_lmdz 274 297 USE mod_phys_lmdz_para 275 USE surface_data, ONLY : type_ocean, ok_veget 298 !GG USE surface_data, ONLY : type_ocean, ok_veget 299 USE surface_data, ONLY : type_ocean, ok_veget, iflag_seaice, amax_n, amax_s 300 !GG 276 301 USE netcdf 277 302 USE indice_sol_mod … … 284 309 USE phys_cal_mod, ONLY : calend, year_len 285 310 USE print_control_mod, ONLY: lunout, prt_level 286 USE lmdz_ XIOS, ONLY: xios_recv_field311 USE lmdz_xios, ONLY: xios_recv_field, using_xios 287 312 288 313 IMPLICIT NONE … … 319 344 REAL, DIMENSION(klon_mpi) :: rug_mpi ! rugosity at global grid 320 345 REAL, DIMENSION(klon_mpi) :: alb_mpi ! albedo at global grid 346 !GG 347 REAL, DIMENSION(klon_glo) :: sih_glo ! albedo at global grid 348 REAL, DIMENSION(klon_mpi) :: sih_mpi ! albedo at global grid 349 !GG 321 350 322 351 CHARACTER(len=20) :: modname='limit_read_mod' … … 344 373 END IF 345 374 375 !GG 376 IF (iflag_seaice==1) THEN 377 ALLOCATE(sih(klon), stat=ierr) 378 IF (ierr /= 0) CALL abort_physic(modname, 'PB in allocating sih',1) 379 ENDIF 380 !GG 381 346 382 IF ( .NOT. ok_veget ) THEN 347 383 ALLOCATE(rugos(klon), albedo(klon), stat=ierr) … … 422 458 IF ( type_ocean /= 'couple') THEN 423 459 IF (is_omp_master) CALL xios_recv_field("sst_limin",sst_mpi) 460 !GG 461 IF (is_omp_master) CALL xios_recv_field("sih_limin",sih_mpi) 462 !GG 424 463 ENDIF 425 464 … … 431 470 IF ( type_ocean /= 'couple') THEN 432 471 CALL Scatter_omp(sst_mpi,sst) 472 !GG 473 CALL Scatter_omp(sih_mpi,sih) 474 !GG 433 475 CALL Scatter_omp(pct_mpi(:,is_oce),pctsrf(:,is_oce)) 434 476 CALL Scatter_omp(pct_mpi(:,is_sic),pctsrf(:,is_sic)) … … 481 523 IF (ierr /= NF90_NOERR) CALL abort_physic(modname,'Lecture echouee pour <FSIC>' ,1) 482 524 525 ! GG 526 ! Account for leads 527 IF (iflag_seaice>0) THEN 528 DO ii=1,klon_glo/2 529 if (pct_glo(ii,is_sic)>amax_n) THEN 530 pct_glo(ii,is_oce)=pct_glo(ii,is_oce)+(pct_glo(ii,is_sic)-amax_n) 531 pct_glo(ii,is_sic)=amax_n 532 end if 533 ENDDO 534 DO ii=klon_glo/2,klon_glo 535 if (pct_glo(ii,is_sic)>amax_s) THEN 536 pct_glo(ii,is_oce)=pct_glo(ii,is_oce)+(pct_glo(ii,is_sic)-amax_s) 537 pct_glo(ii,is_sic)=amax_s 538 end if 539 ENDDO 540 ENDIF 541 !GG 483 542 484 543 ! Read land and continentals fraction only if asked for … … 513 572 ierr = NF90_GET_VAR(nid,nvarid,sst_glo,start,epais) 514 573 IF (ierr /= NF90_NOERR) CALL abort_physic(modname,'Lecture echouee pour <SST>',1) 515 574 !GG 575 IF (iflag_seaice == 1) THEN 576 ierr = NF90_INQ_VARID(nid, 'HICE', nvarid) 577 IF (ierr /= NF90_NOERR) CALL abort_physic(modname,'Le champ <HICE> est absent',1) 578 579 ierr = NF90_GET_VAR(nid,nvarid,sih_glo(:),start,epais) 580 IF (ierr /= NF90_NOERR) CALL abort_physic(modname,'Lecture echouee pour <HICE>' ,1) 581 ENDIF 582 !GG 583 516 584 #ifdef ISO 517 585 IF ((iso_HTO.gt.0).and.(ok_prod_nucl_tritium)) THEN … … 572 640 IF ( type_ocean /= 'couple') THEN 573 641 CALL Scatter(sst_glo,sst) 642 !GG 643 IF (iflag_seaice==1) THEN 644 CALL Scatter(sih_glo,sih) 645 END IF 646 !GG 574 647 CALL Scatter(pct_glo(:,is_oce),pctsrf(:,is_oce)) 575 648 CALL Scatter(pct_glo(:,is_sic),pctsrf(:,is_sic)) -
LMDZ6/trunk/libf/phylmdiso/phyaqua_mod.F90
r5645 r5662 351 351 352 352 353 CALL pbl_surface_init(fder, snsrf, qsolsrf, tsoil) 353 !GG 354 CALL pbl_surface_init(fder, snsrf, qsolsrf, tsoil, hice, tice, bilg_cumul) 355 ! CALL pbl_surface_init(fder, snsrf, qsolsrf, tsoil) 356 !GG 354 357 #ifdef ISO 355 358 CALL pbl_surface_init_iso(xtsnsrf,Rland_ice) -
LMDZ6/trunk/libf/phylmdiso/phyetat0_mod.F90
r5645 r5662 20 20 #endif 21 21 USE phyetat0_get_mod, ONLY : phyetat0_get, phyetat0_srf 22 USE surface_data, ONLY : type_ocean, version_ocean 22 !GG USE surface_data, ONLY : type_ocean, version_ocean 23 USE surface_data, ONLY : type_ocean, version_ocean, iflag_seaice, & 24 iflag_seaice_alb, iflag_leads 25 !GG 23 26 USE phys_state_var_mod, ONLY : ancien_ok, clwcon, detr_therm, phys_tstep, & 24 27 qsol, fevap, z0m, z0h, agesno, & … … 37 40 zstd, zthe, zval, ale_bl, ale_bl_trig, alp_bl, u10m, v10m, treedrg, & 38 41 ale_wake, ale_bl_stat, ds_ns, dt_ns, delta_sst, delta_sal, dter, dser, & 39 dt_ds, ratqs_inter_ 42 !GG dt_ds, ratqs_inter_ 43 dt_ds, ratqs_inter_, & 44 hice, tice, bilg_cumul 45 !GG 46 40 47 !FC 41 48 USE geometry_mod, ONLY: longitude_deg, latitude_deg … … 46 53 USE carbon_cycle_mod, ONLY: carbon_cycle_init, carbon_cycle_cpl, carbon_cycle_tr, carbon_cycle_rad, co2_send, RCO2_glo 47 54 USE indice_sol_mod, ONLY: nbsrf, is_ter, epsfra, is_lic, is_oce, is_sic 48 USE ocean_slab_mod, ONLY: nslay, tslab, seaice, tice, ocean_slab_init 55 !GG USE ocean_slab_mod, ONLY: nslay, tslab, seaice, tice, ocean_slab_init 56 USE ocean_slab_mod, ONLY: nslay, tslab, seaice, tice_slab, ocean_slab_init 57 !GG 49 58 USE time_phylmdz_mod, ONLY: init_iteration, pdtphys, itau_phy 50 59 use wxios_mod, ONLY: missing_val_xios => missing_val, using_xios … … 179 188 IF (ok_orolf) tab_cntrl(11) =1. 180 189 IF (ok_limitvrai) tab_cntrl(12) =1. 190 !GG 191 tab_cntrl(18) =iflag_seaice 192 tab_cntrl(19) =iflag_seaice_alb 193 tab_cntrl(20) =iflag_leads 194 !GG 181 195 182 196 itau_phy = tab_cntrl(15) … … 624 638 ! Sea ice variables 625 639 IF (version_ocean == 'sicINT') THEN 626 found=phyetat0_get(tice,"slab_tice","slab_tice",0.) 640 found=phyetat0_get(tice_slab,"slab_tice","slab_tice",0.) 641 !GG found=phyetat0_get(tice,"slab_tice","slab_tice",0.) 627 642 IF (.NOT. found) THEN 628 PRINT*, "phyetat0: Le champ <tice> est absent" 643 !GG PRINT*, "phyetat0: Le champ <tice> est absent" 644 PRINT*, "phyetat0: Le champ <tice_slab> est absent" 629 645 PRINT*, "Initialisation a tsol_sic" 630 tice(:)=ftsol(:,is_sic) 646 !GG tice(:)=ftsol(:,is_sic) 647 tice_slab(:)=ftsol(:,is_sic) 631 648 ENDIF 632 649 found=phyetat0_get(seaice,"seaice","seaice",0.) … … 675 692 end if 676 693 694 !GG 695 ! Sea ice 696 !IF (iflag_seaice == 2) THEN 697 698 found=phyetat0_get(hice,"hice","Ice thickness",0.) 699 IF (.NOT. found) THEN 700 PRINT*, "phyetat0: Le champ <hice> est absent" 701 PRINT*, "Initialisation a hice=1m " 702 hice(:)=1.0 703 END IF 704 found=phyetat0_get(tice,"tice","Sea Ice temperature",0.) 705 IF (.NOT. found) THEN 706 PRINT*, "phyetat0: Le champ <tice> est absent" 707 PRINT*, "Initialisation a tsol_sic" 708 tice(:)=ftsol(:,is_sic) 709 END IF 710 found=phyetat0_get(bilg_cumul,"bilg_cumul","Flux conductivite + transmit sea-ice",0.) 711 IF (.NOT. found) THEN 712 PRINT*, "phyetat0: Le champ <bilg_cumul> est absent" 713 PRINT*, "Initialisation a zero" 714 bilg_cumul(:)=0.0 715 END IF 716 717 !END IF 718 !GG 677 719 ! on ferme le fichier 678 720 CALL close_startphy … … 686 728 !#endif 687 729 if ( iflag_physiq <= 1 ) then 688 CALL pbl_surface_init(fder, snow, qsurf, tsoil) 730 !GG CALL pbl_surface_init(fder, snow, qsurf, tsoil) 731 CALL pbl_surface_init(fder, snow, qsurf, tsoil, hice, tice, bilg_cumul) 732 !GG 689 733 #ifdef ISO 690 734 CALL pbl_surface_init_iso(xtsnow,Rland_ice) -
LMDZ6/trunk/libf/phylmdiso/phyredem.F90
r5645 r5662 31 31 du_gwd_rando, du_gwd_front, u10m, v10m, & 32 32 treedrg, solswfdiff, delta_sal, ds_ns, dt_ns, & 33 delta_sst, ratqs_inter_, dter, dser, dt_ds 33 !GG delta_sst, ratqs_inter_, dter, dser, dt_ds 34 delta_sst, ratqs_inter_, dter, dser, dt_ds, & 35 hice, tice, bilg_cumul 36 !GG 34 37 #ifdef ISO 35 38 USE phys_state_var_mod, ONLY: xtsol, fxtevap,xtrain_fall, xtsnow_fall, & … … 51 54 USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, co2_send, carbon_cycle_rad, RCO2_glo 52 55 USE indice_sol_mod, ONLY: nbsrf, is_oce, is_sic, is_ter, is_lic, epsfra 53 USE surface_data, ONLY: type_ocean, version_ocean 54 USE ocean_slab_mod, ONLY : nslay, tslab, seaice, tice, fsic 56 !GG USE surface_data, ONLY: type_ocean, version_ocean 57 USE surface_data, ONLY: type_ocean, version_ocean, iflag_seaice, iflag_seaice_alb, & 58 iflag_leads 59 !GG 60 USE ocean_slab_mod, ONLY : nslay, tslab, seaice, tice_slab, fsic 55 61 USE time_phylmdz_mod, ONLY: annee_ref, day_end, itau_phy, pdtphys 56 62 use config_ocean_skin_m, only: activate_ocean_skin … … 136 142 IF (carbon_cycle_rad) tab_cntrl(17) = RCO2_glo 137 143 !PRINT*, "PC : phyredem RCO2_glo =",RCO2_glo 144 !GG 145 tab_cntrl(18 ) = iflag_seaice 146 tab_cntrl(19 ) = iflag_seaice_alb 147 tab_cntrl(20 ) = iflag_leads 148 !GG 138 149 139 150 DO pass=1,2 ! pass=1 netcdf definition ; pass=2 netcdf write … … 214 225 215 226 CALL put_field_srf1(pass,"SNOW", "Neige", snow(:,:)) 227 228 !GG 229 CALL put_field(pass,"hice", "Ice thickness", hice) 230 CALL put_field(pass,"tice", "Sea Ice temperature", tice) 231 CALL put_field(pass,"bilg_cumul", "Flux conductivite + transmit sea-ice", bilg_cumul) 232 !GG 216 233 217 234 CALL put_field(pass,"RADS", "Rayonnement net a la surface", radsol) … … 388 405 IF (version_ocean == 'sicINT') THEN 389 406 CALL put_field(pass,"seaice", "Slab seaice (kg/m2)", seaice) 390 CALL put_field(pass,"slab_tice", "Slab sea ice temperature", tice )407 CALL put_field(pass,"slab_tice", "Slab sea ice temperature", tice_slab) 391 408 END IF 392 409 END IF -
LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90
r5659 r5662 402 402 rneb, & 403 403 zxsnow,snowhgt,qsnow,to_ice,sissnow,runoff,albsol3_lic, & 404 zxfluxt,zxfluxq 404 !GG zxfluxt,zxfluxq 405 zxfluxt,zxfluxq, & 406 fcds, fcdi, dh_basal_growth, dh_basal_melt, & 407 dh_top_melt, dh_snow2sic, & 408 dtice_melt, dtice_snow2sic 409 !GG 405 410 406 411 … … 3299 3304 debut, lafin, & 3300 3305 longitude_deg, latitude_deg, rugoro, zrmu0, & 3301 sollwdown, cldt, & 3306 !GG sollwdown, cldt, & 3307 sollwdown, pphi, cldt, & 3308 !GG 3302 3309 rain_fall, snow_fall, bs_fall, solsw, solswfdiff, sollw, & 3303 3310 gustiness, & … … 3347 3354 wake_delta_pbl_TKE, & 3348 3355 !>nrlmd+jyg 3349 treedrg & 3356 !GG treedrg ) 3357 treedrg,hice, tice, bilg_cumul, & 3358 fcds, fcdi, dh_basal_growth, dh_basal_melt, & 3359 dh_top_melt, dh_snow2sic, & 3360 dtice_melt, dtice_snow2sic , & 3361 !GG 3350 3362 !AM 3351 ,tsurf_tersrf, tsoil_tersrf, qsurf_tersrf, tsurf_new_tersrf, &3363 tsurf_tersrf, tsoil_tersrf, qsurf_tersrf, tsurf_new_tersrf, & 3352 3364 cdragm_tersrf, cdragh_tersrf, & 3353 3365 swnet_tersrf, lwnet_tersrf, fluxsens_tersrf, fluxlat_tersrf &
Note: See TracChangeset
for help on using the changeset viewer.