Ignore:
Timestamp:
Jul 22, 2024, 9:29:09 PM (4 months ago)
Author:
abarral
Message:

Replace most uses of CPP_DUST by the corresponding logical defined in lmdz_cppkeys_wrapper.F90
Convert several files from .F to .f90 to allow Dust to compile w/o rrtm/ecrad
Create lmdz_yoerad.f90
(lint) Remove "!" on otherwise empty line

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/Amaury_dev/libf/phylmdiso/limit_read_mod.F90

    r5088 r5099  
    1 !
     1
    22! $Id: limit_read_mod.F90 3435 2019-01-22 15:21:59Z fairhead $
    3 !
     3
    44MODULE limit_read_mod
    5 !
     5
    66! This module reads the fichier "limit.nc" containing fields for surface forcing.
    7 !
     7
    88! Module subroutines :
    99!  limit_read_frac    : call limit_read_tot and return the fractions
     
    1111!  limit_read_sst     : return sea ice temperature   
    1212!  limit_read_tot     : read limit.nc and store the fields in local modules variables
    13 !
     13
    1414  IMPLICIT NONE
    1515
     
    5454 
    5555  SUBROUTINE limit_read_frac(itime, dtime, jour, pctsrf_new, is_modified)
    56 !
     56
    5757! This subroutine is called from "change_srf_frac" for case of
    5858! ocean=force or from ocean_slab_frac for ocean=slab.
     
    8989       knon, knindex, &
    9090       rugos_out, alb_out)
    91 !
     91
    9292! This subroutine is called from surf_land_bucket.
    9393! The flag "ok_veget" must can not be true. If coupled run, "ocean=couple"
    9494! then this routine will call limit_read_tot.
    95 !
     95
    9696    USE dimphy
    9797    USE surface_data
     
    139139#endif           
    140140    )
    141 !
     141
    142142! This subroutine returns the sea surface temperature already read from limit.nc.
    143 !
     143
    144144    USE dimphy, ONLY : klon
    145145#ifdef ISO
     
    260260
    261261  SUBROUTINE limit_read_tot(itime, dtime, jour, is_modified)
    262 !
     262
    263263! Read everything needed from limit.nc
    264 !
     264
    265265! 0) Initialize
    266266! 1) Open the file limit.nc, if it is time
     
    332332!****************************************************************************************
    333333! 0) Initialization
    334 !
     334
    335335!****************************************************************************************
    336336    IF (first_call) THEN
     
    353353       IF (is_mpi_root) THEN ! Only master processus
    354354          ierr = NF90_OPEN ('limit.nc', NF90_NOWRITE, nid)
    355           IF (ierr /= NF90_NOERR) CALL abort_physic(modname,&
     355          IF (ierr /= nf90_noerr) CALL abort_physic(modname,&
    356356               'Pb d''ouverture du fichier de conditions aux limites',1)
    357357
     
    359359          ierr=NF90_INQ_VARID(nid, 'TEMPS', nvarid)
    360360          ierr=NF90_GET_ATT(nid, nvarid, 'calendar', calendar)
    361           IF(ierr==NF90_NOERR.AND.calendar/=calend.AND.prt_level>=1) THEN
     361          IF(ierr==nf90_noerr.AND.calendar/=calend.AND.prt_level>=1) THEN
    362362             WRITE(lunout,*)'BEWARE: gcm and limit.nc calendars differ: '
    363363             WRITE(lunout,*)'  '//TRIM(calend)//' for gcm'
     
    371371            ierr=NF90_INQUIRE(nid, UnlimitedDimID=ndimid)
    372372          ENDIF
    373           ierr=NF90_INQUIRE_DIMENSION(nid, ndimid, len=nn)
     373          ierr=nf90_inquire_dimension(nid, ndimid, len=nn)
    374374          WRITE(abort_message,'(a,2(i0,a))')'limit.nc records number (',nn,') does no'//&
    375375            't match year length (',year_len,')'
     
    382382            ierr=nf90_inq_dimid(nid, 'points_physiques', ndimid)
    383383          ENDIF
    384           ierr=NF90_INQUIRE_DIMENSION(nid, ndimid, len=nn)
     384          ierr=nf90_inquire_dimension(nid, ndimid, len=nn)
    385385          WRITE(abort_message,'(a,2(i0,a))')'limit.nc horizontal number of cells (',nn, &
    386386            ') does not match LMDZ klon_glo (',klon_glo,')'
     
    388388
    389389          ierr = NF90_CLOSE(nid)
    390           IF (ierr /= NF90_NOERR) CALL abort_physic(modname,'Pb when closing file', 1)
     390          IF (ierr /= nf90_noerr) CALL abort_physic(modname,'Pb when closing file', 1)
    391391       END IF ! is_mpi_root
    392392!$OMP END MASTER
     
    398398!    The file is read only by the master thread of the master mpi process(is_mpi_root)
    399399!    Check by the way if the number of records is correct.
    400 !
     400
    401401!****************************************************************************************
    402402
     
    451451
    452452          ierr = NF90_OPEN ('limit.nc', NF90_NOWRITE, nid)
    453           IF (ierr /= NF90_NOERR) CALL abort_physic(modname,&
     453          IF (ierr /= nf90_noerr) CALL abort_physic(modname,&
    454454               'Pb d''ouverture du fichier de conditions aux limites',1)
    455455
     
    463463!****************************************************************************************
    464464! 2) Read fraction if not type_ocean=couple
    465 !
     465
    466466!****************************************************************************************
    467467
    468468          IF ( type_ocean /= 'couple') THEN
    469 !
     469
    470470! Ocean fraction
    471471             ierr = NF90_INQ_VARID(nid, 'FOCE', nvarid)
    472              IF (ierr /= NF90_NOERR) CALL abort_physic(modname, 'Le champ <FOCE> est absent',1)
     472             IF (ierr /= nf90_noerr) CALL abort_physic(modname, 'Le champ <FOCE> est absent',1)
    473473             
    474              ierr = NF90_GET_VAR(nid,nvarid,pct_glo(:,is_oce),start,epais)
    475              IF (ierr /= NF90_NOERR) CALL abort_physic(modname,'Lecture echouee pour <FOCE>' ,1)
    476 !
     474             ierr = nf90_get_var(nid,nvarid,pct_glo(:,is_oce),start,epais)
     475             IF (ierr /= nf90_noerr) CALL abort_physic(modname,'Lecture echouee pour <FOCE>' ,1)
     476
    477477! Sea-ice fraction
    478478             ierr = NF90_INQ_VARID(nid, 'FSIC', nvarid)
    479              IF (ierr /= NF90_NOERR) CALL abort_physic(modname,'Le champ <FSIC> est absent',1)
    480 
    481              ierr = NF90_GET_VAR(nid,nvarid,pct_glo(:,is_sic),start,epais)
    482              IF (ierr /= NF90_NOERR) CALL abort_physic(modname,'Lecture echouee pour <FSIC>' ,1)
     479             IF (ierr /= nf90_noerr) CALL abort_physic(modname,'Le champ <FSIC> est absent',1)
     480
     481             ierr = nf90_get_var(nid,nvarid,pct_glo(:,is_sic),start,epais)
     482             IF (ierr /= nf90_noerr) CALL abort_physic(modname,'Lecture echouee pour <FSIC>' ,1)
    483483
    484484
    485485! Read land and continentals fraction only if asked for
    486486             IF (read_continents .OR. itime == 1) THEN
    487 !
     487
    488488! Land fraction
    489489                ierr = NF90_INQ_VARID(nid, 'FTER', nvarid)
    490                 IF (ierr /= NF90_NOERR) CALL abort_physic(modname,'Le champ <FTER> est absent',1)
     490                IF (ierr /= nf90_noerr) CALL abort_physic(modname,'Le champ <FTER> est absent',1)
    491491               
    492                 ierr = NF90_GET_VAR(nid,nvarid,pct_glo(:,is_ter),start,epais)
    493                 IF (ierr /= NF90_NOERR) CALL abort_physic(modname,'Lecture echouee pour <FTER>',1)
    494 !
     492                ierr = nf90_get_var(nid,nvarid,pct_glo(:,is_ter),start,epais)
     493                IF (ierr /= nf90_noerr) CALL abort_physic(modname,'Lecture echouee pour <FTER>',1)
     494
    495495! Continentale ice fraction
    496496                ierr = NF90_INQ_VARID(nid, 'FLIC', nvarid)
    497                 IF (ierr /= NF90_NOERR) CALL abort_physic(modname,'Le champ <FLIC> est absent',1)
    498 
    499                 ierr = NF90_GET_VAR(nid,nvarid,pct_glo(:,is_lic),start,epais)
    500                 IF (ierr /= NF90_NOERR) CALL abort_physic(modname,'Lecture echouee pour <FLIC>',1)
     497                IF (ierr /= nf90_noerr) CALL abort_physic(modname,'Le champ <FLIC> est absent',1)
     498
     499                ierr = nf90_get_var(nid,nvarid,pct_glo(:,is_lic),start,epais)
     500                IF (ierr /= nf90_noerr) CALL abort_physic(modname,'Lecture echouee pour <FLIC>',1)
    501501             END IF
    502502
     
    505505!****************************************************************************************
    506506! 3) Read sea-surface temperature, if not coupled ocean
    507 !
     507
    508508!****************************************************************************************
    509509          IF ( type_ocean /= 'couple') THEN
    510510
    511511             ierr = NF90_INQ_VARID(nid, 'SST', nvarid)
    512              IF (ierr /= NF90_NOERR) CALL abort_physic(modname,'Le champ <SST> est absent',1)
    513 
    514              ierr = NF90_GET_VAR(nid,nvarid,sst_glo,start,epais)
    515              IF (ierr /= NF90_NOERR) CALL abort_physic(modname,'Lecture echouee pour <SST>',1)
     512             IF (ierr /= nf90_noerr) CALL abort_physic(modname,'Le champ <SST> est absent',1)
     513
     514             ierr = nf90_get_var(nid,nvarid,sst_glo,start,epais)
     515             IF (ierr /= nf90_noerr) CALL abort_physic(modname,'Lecture echouee pour <SST>',1)
    516516         
    517517#ifdef ISO
    518518             IF ((iso_HTO.gt.0).and.(ok_prod_nucl_tritium)) THEN
    519519               ierr = NF90_INQ_VARID(nid, 'TUOCE', nvarid)
    520                IF (ierr /= NF90_NOERR) CALL abort_gcm(modname,'Le champ <TUOCE> est absent',1)
    521 
    522                ierr = NF90_GET_VAR(nid,nvarid,tuoce_glo,start,epais)
    523                IF (ierr /= NF90_NOERR) CALL abort_gcm(modname,'Lecture echouee pour <TUOCE>',1)
     520               IF (ierr /= nf90_noerr) CALL abort_gcm(modname,'Le champ <TUOCE> est absent',1)
     521
     522               ierr = nf90_get_var(nid,nvarid,tuoce_glo,start,epais)
     523               IF (ierr /= nf90_noerr) CALL abort_gcm(modname,'Lecture echouee pour <TUOCE>',1)
    524524             END IF
    525525#ifdef ISOVERIF
     
    539539!****************************************************************************************
    540540! 4) Read albedo and rugosity for land surface, only in case of no vegetation model
    541 !
     541
    542542!****************************************************************************************
    543543
    544544          IF (.NOT. ok_veget) THEN
    545 !
     545
    546546! Read albedo
    547547             ierr = NF90_INQ_VARID(nid, 'ALB', nvarid)
    548              IF (ierr /= NF90_NOERR) CALL abort_physic(modname,'Le champ <ALB> est absent',1)
    549 
    550              ierr = NF90_GET_VAR(nid,nvarid,alb_glo,start,epais)
    551              IF (ierr /= NF90_NOERR) CALL abort_physic(modname,'Lecture echouee pour <ALB>',1)
    552 !
     548             IF (ierr /= nf90_noerr) CALL abort_physic(modname,'Le champ <ALB> est absent',1)
     549
     550             ierr = nf90_get_var(nid,nvarid,alb_glo,start,epais)
     551             IF (ierr /= nf90_noerr) CALL abort_physic(modname,'Lecture echouee pour <ALB>',1)
     552
    553553! Read rugosity
    554554             ierr = NF90_INQ_VARID(nid, 'RUG', nvarid)
    555              IF (ierr /= NF90_NOERR) CALL abort_physic(modname,'Le champ <RUG> est absent',1)
    556 
    557              ierr = NF90_GET_VAR(nid,nvarid,rug_glo,start,epais)
    558              IF (ierr /= NF90_NOERR) CALL abort_physic(modname,'Lecture echouee pour <RUG>',1)
     555             IF (ierr /= nf90_noerr) CALL abort_physic(modname,'Le champ <RUG> est absent',1)
     556
     557             ierr = nf90_get_var(nid,nvarid,rug_glo,start,epais)
     558             IF (ierr /= nf90_noerr) CALL abort_physic(modname,'Lecture echouee pour <RUG>',1)
    559559
    560560          END IF
     
    562562!****************************************************************************************
    563563! 5) Close file and distribuate variables to all processus
    564 !
     564
    565565!****************************************************************************************
    566566          ierr = NF90_CLOSE(nid)
    567           IF (ierr /= NF90_NOERR) CALL abort_physic(modname,'Pb when closing file', 1)
     567          IF (ierr /= nf90_noerr) CALL abort_physic(modname,'Pb when closing file', 1)
    568568       ENDIF ! is_mpi_root
    569569
Note: See TracChangeset for help on using the changeset viewer.