New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 473 for trunk/NEMO/OPA_SRC/SBC/flxrnf.F90 – NEMO

Ignore:
Timestamp:
2006-05-11T17:04:37+02:00 (18 years ago)
Author:
opalod
Message:

nemo_v1_update_060: SM: IOM + 301 levels + CORE + begining of ctl_stop

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/SBC/flxrnf.F90

    r389 r473  
    2222   USE in_out_manager  ! I/O manager 
    2323   USE daymod          ! calendar 
    24    USE ioipsl          ! NetCDF IPSL library 
     24   USE iom             ! I/O module 
    2525 
    2626   IMPLICIT NONE 
     
    3838      upsrnfz              !: mixed adv scheme in runoffs vicinity (vert.) 
    3939   INTEGER, PUBLIC ::   &  !: 
    40       nrunoff =  0 ,    &  !: runoff option (namelist) 
    41       nrnf1, nrnf2         !: first and second record used 
     40      nrunoff =  0         !: runoff option (namelist) 
    4241 
    4342   !! * Module variable 
    4443   REAL(wp), DIMENSION(jpi,jpj,2) ::   &  !: 
    4544      rnfdta               !: monthly runoff data array (kg/m2/s) 
     45   INTEGER  ::          &  !: 
     46      numrnf,           &  !: logical unit for runoff data 
     47      nrnf1, nrnf2         !: first and second record used 
    4648   !!---------------------------------------------------------------------- 
    4749   !!   OPA 9.0 , LOCEAN-IPSL (2005)  
     
    103105      REAL(wp) ::   zxy 
    104106# endif 
    105       CHARACTER (len=32) ::   & 
    106          clname                            ! monthly runoff filename 
    107       INTEGER, PARAMETER :: jpmois = 12 
    108       INTEGER  ::   ipi, ipj, ipk          ! temporary integers 
    109107      INTEGER  ::   ii0, ii1, ij0, ij1     !    "          " 
    110       INTEGER, DIMENSION(jpmois) ::     & 
    111          istep                             ! temporary workspace 
    112       REAL(wp) ::   zdate0, zdt            ! temporary scalars 
    113       REAL(wp), DIMENSION(jpk) ::       & 
    114          zlev                              ! temporary workspace 
    115       REAL(wp), DIMENSION(jpi,jpj) ::   & 
    116          zlon, zlat,                    &  ! temporary workspace 
    117          zcoefr                            ! coeff of advection link to runoff 
    118108      !!---------------------------------------------------------------------- 
    119          clname = 'runoff_1m_nomask'       ! monthly runoff filename 
    120109       
    121110      IF( kt == nit000 ) THEN 
     
    139128 
    140129         CASE DEFAULT 
    141             IF(lwp) WRITE(numout,cform_err) 
    142             IF(lwp) WRITE(numout,*) ' Error nrunoff = ', nrunoff, ' /= 0, 1 or 2' 
    143             nstop = nstop + 1 
     130            WRITE(ctmp1,*) ' Error nrunoff = ', nrunoff, ' /= 0, 1 or 2' 
     131            CALL ctl_stop( ctmp1 ) 
    144132 
    145133         END SELECT 
    146134 
    147135         ! Set runoffs and upstream coeff to zero 
    148          runoff (:,:) = 0.e0 
    149          upsrnfh(:,:) = 0.e0 
    150          upsrnfz(:)   = 0.e0  
    151136         upsadv (:,:) = 0.e0 
    152137 
     
    161146 
    162147         ! year, month, day 
     148         iman  = INT( raamo ) 
     149!!! better but change the results      i15 = INT( 2*FLOAT( nday ) / ( FLOAT( nobis(nmonth) ) + 0.5 ) ) 
    163150         i15   = nday / 16 
    164151         imois = nmonth + i15 - 1 
    165          IF( imois == 0 )   imois = jpmois 
     152         IF( imois == 0 ) imois = iman 
    166153         ! Number of days in the month 
    167154         IF( nleapy == 1 .AND. MOD( nyear, 4 ) == 0 ) THEN 
     
    175162         idmeom = idbd - 15 
    176163# endif 
    177          ipi = jpiglo 
    178          ipj = jpjglo 
    179          ipk = jpk 
    180          zdt = rdt 
    181164          
    182165         ! Open file 
    183166 
    184167         IF( kt == nit000 ) THEN 
    185             iman = jpmois 
    186             CALL flinopen( clname, mig(1), nlci, mjg(1), nlcj,    & 
    187                &           .false., ipi, ipj, ipk, zlon,        & 
    188                &           zlat, zlev, iman, istep, zdate0,   & 
    189                &           zdt, numrnf ) 
    190             !   Title, dimensions and tests 
    191 # if ! defined key_coupled 
    192             IF( iman /= jpmois ) THEN 
    193                IF(lwp) WRITE(numout,*) 
    194                IF(lwp) WRITE(numout,*) 'problem with time coordinates' 
    195                IF(lwp) WRITE(numout,*) ' iman ', iman, ' jpmois ', jpmois 
    196                nstop = nstop + 1 
    197             ENDIF 
    198             IF(lwp) WRITE(numout,*) iman, istep, zdate0, rdt, numrnf 
    199             IF(lwp) WRITE(numout,*) 'numrnf=', numrnf 
    200             IF(lwp) WRITE(numout,*) 'jpmois=', jpmois 
    201             IF(lwp) WRITE(numout,*) 'zdt=', zdt 
    202 # endif 
    203             IF(ipi /= jpidta .AND. ipj /= jpjdta .AND. ipk /= 1) THEN 
    204                IF(lwp)WRITE(numout,*) ' ' 
    205                IF(lwp)WRITE(numout,*) 'problem with dimensions' 
    206                IF(lwp)WRITE(numout,*) ' ipi ', ipi, ' jpidta ', jpidta 
    207                IF(lwp)WRITE(numout,*) ' ipj ', ipj, ' jpjdta ', jpjdta 
    208                IF(lwp)WRITE(numout,*) ' ipk ', ipk, ' =? 1' 
    209                nstop = nstop + 1 
    210             ENDIF 
    211             IF(lwp)WRITE(numout,*) 'ipi=', ipi, ' ipj=', ipj, ' ipk=', ipk 
     168 
     169            nrnf1 = 0   ! initialization 
     170            IF (lwp) WRITE(numout,*) 'flx_rnf : Monthly runoff' 
     171            CALL iom_open ( 'runoff_1m_nomask.nc', numrnf ) 
     172             
    212173         ENDIF 
    213174          
     
    223184            !     nrnf2 number of the last  array record 
    224185 
    225             iman = jpmois 
    226186            nrnf1 = imois 
    227187            nrnf2 = nrnf1 + 1 
     
    237197               WRITE(numout,*) ' NetCDF format' 
    238198               WRITE(numout,*) 
    239                WRITE(numout,*) 'first array record used nrnf1 ',nrnf1 
    240                WRITE(numout,*) 'last  array record used nrnf2 ',nrnf2 
     199               WRITE(numout,*) 'first array record used nrnf1 ', nrnf1 
     200               WRITE(numout,*) 'last  array record used nrnf2 ', nrnf2 
    241201               WRITE(numout,*) 
    242202            ENDIF 
    243203             
    244204            ! Read monthly runoff data in kg/m2/s 
    245 !ibug 
    246             IF( kt == nit000 )   rnfdta(:,:,:) = 0.e0 
    247 !ibug 
    248             CALL flinget( numrnf, 'sorunoff', jpidta, jpjdta, 1, jpmois   & 
    249                &        , nrnf1, nrnf1, mig(1), nlci, mjg(1), nlcj, rnfdta(1:nlci,1:nlcj,1) ) 
    250             CALL flinget( numrnf, 'sorunoff', jpidta, jpjdta, 1, jpmois   & 
    251                &        , nrnf2, nrnf2, mig(1), nlci, mjg(1), nlcj, rnfdta(1:nlci,1:nlcj,2) ) 
    252  
    253             IF(lwp) WRITE(numout,*) 
    254             IF(lwp) WRITE(numout,*) ' read runoff field ok' 
    255             IF(lwp) WRITE(numout,*) 
     205 
     206            CALL iom_get ( numrnf, jpdom_data, 'sorunoff', rnfdta(:,:,1), nrnf1 ) 
     207            CALL iom_get ( numrnf, jpdom_data, 'sorunoff', rnfdta(:,:,2), nrnf2 ) 
    256208 
    257209         ENDIF 
     
    267219         ! when reading the NetCDF file runoff_1m_nomask.nc 
    268220         IF( cp_cfg == 'orca' .AND. jp_cfg == 2 )   THEN 
    269          DO jj = 1, jpj 
    270             DO ji = 1, jpi 
    271                IF( gphit(ji,jj) > 40 .AND. gphit(ji,jj) < 65 )   runoff(ji,jj) = 0.85 * runoff(ji,jj) 
     221            DO jj = 1, jpj 
     222               DO ji = 1, jpi 
     223                  IF( gphit(ji,jj) > 40 .AND. gphit(ji,jj) < 65 )   runoff(ji,jj) = 0.85 * runoff(ji,jj) 
     224               END DO 
    272225            END DO 
    273          END DO 
    274226         ENDIF 
    275227          
     
    290242         !  coefr * upstream + (1- coefr) centered 
    291243         !  coefr must be between 0 and 1. 
    292 !ibug 
    293          zcoefr(:,:) = 0.e0 
    294 !ibug 
    295  
    296          CALL flinget( numrnf, 'socoefr', jpidta, jpjdta, 1, jpmois, nrnf1,   & 
    297             &          nrnf1, mig(1), nlci, mjg(1), nlcj, zcoefr(1:nlci,1:nlcj) ) 
    298  
    299          IF(lwp) WRITE(numout,*) 
    300          IF(lwp) WRITE(numout,*) ' read coefr for advection ok' 
    301          IF(lwp) WRITE(numout,*) 
    302           
    303          upsrnfh(:,:) = zcoefr(:,:) 
     244 
     245         CALL iom_get ( numrnf, jpdom_data, 'socoefr', upsrnfh ) 
     246          
    304247         upsrnfz(:)   = 0.e0 
    305248         upsrnfz(1)   = 1.0 
     
    371314      ! -------------------- 
    372315 
    373       IF( kt == nitend .AND. nrunoff >= 1 )   CALL flinclo( numrnf ) 
     316      IF( kt == nitend .AND. nrunoff >= 1 )   CALL iom_close( numrnf ) 
    374317 
    375318   END SUBROUTINE flx_rnf 
Note: See TracChangeset for help on using the changeset viewer.