Changeset 5662 for LMDZ6/trunk/libf/phylmdiso/limit_read_mod.F90
- Timestamp:
- May 20, 2025, 4:24:41 PM (3 weeks ago)
- File:
-
- 1 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))
Note: See TracChangeset
for help on using the changeset viewer.