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/flx_bulk_monthly.h90 – 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/flx_bulk_monthly.h90

    r392 r473  
    1212      ji, jj,          &  ! loop indices 
    1313      numflx,          &  ! logical unit for surface fluxes data 
    14       nflx1, nflx2,    &  !  first and second record used 
     14      nflx1 , nflx2,   &  !  first and second record used 
    1515      nflx11, nflx12      ! ??? 
    1616 
    17    REAL(wp), DIMENSION(jpi,jpj,2,7) ::   & 
     17   INTEGER, PARAMETER :: jpf    =  7                    
     18   REAL(wp), DIMENSION(jpi,jpj,2,jpf) ::   & 
    1819      flxdta              ! 2 consecutive set of CLIO monthly fluxes 
    1920   !!---------------------------------------------------------------------- 
     
    6061      !!        !  92-07  (M. Imbard) 
    6162      !!        !  96-11  (E. Guilyardi)  Daily AGCM input files 
    62       !!        !  99-11  (M. Imbard)  NetCDF FORMAT with ioipsl 
     63      !!        !  99-11  (M. Imbard)  NetCDF FORMAT with io-ipsl 
    6364      !!        !  00-10  (J.-P. Boulanger)  adjusted for reading any 
    6465      !!                         daily wind stress data including a climatology 
     
    6768      !!---------------------------------------------------------------------- 
    6869      !! * modules used 
    69       USE ioipsl 
     70      USE iom 
    7071      USE blk_oce         ! bulk variable 
    7172      USE bulk            ! bulk module 
     
    7576 
    7677      !! * Local declarations 
    77       INTEGER, PARAMETER ::   & 
    78          jpmois = 12,               &  ! number of months 
    79          jpf    =  7                   ! ??? !bug ? 
    8078      INTEGER ::   jm, jt      ! dummy loop indices 
    8179      INTEGER ::   & 
    82          imois, imois2, itime,      &  ! temporary integers 
    83          i15  , iman  ,             &  !    "          " 
    84          ipi  , ipj   , ipk            !    "          " 
    85       INTEGER, DIMENSION(jpmois) ::   & 
    86          istep                         ! ??? 
     80         imois, imois2,       &  ! temporary integers 
     81         i15  , iman             !    "          " 
    8782      REAL(wp) ::   & 
    88          zsecond, zdate0,           &  ! temporary scalars 
    89          zxy    , zdtt  ,           &  !    "         " 
    90          zdatet , zttbt ,           &  !    "         " 
    91          zttat  , zdtts6               !    "         " 
    92       REAL(wp), DIMENSION(jpk) ::   & 
    93          zlev                          ! ??? 
    94       REAL(wp), DIMENSION(jpi,jpj) ::   & 
    95          zlon   , zlat                 ! ??? 
    96       CHARACTER (len=32) ::   & 
    97          clname            ! flux filename 
     83         zxy    , zdtt  ,     &  !    "         " 
     84         zdatet , zttbt ,     &  !    "         " 
     85         zttat  , zdtts6         !    "         " 
    9886      !!--------------------------------------------------------------------- 
    99          clname = 'flx.nc' 
    100  
    10187 
    10288      ! Initialization 
     
    10490 
    10591      i15 = INT( 2 * FLOAT( nday ) / ( FLOAT( nobis(nmonth) ) + 0.5 ) ) 
    106       iman  = 12 
     92      iman  = INT( raamo ) 
    10793      imois = nmonth + i15 - 1 
    10894      IF( imois == 0 ) imois = iman 
    10995      imois2 = nmonth 
    11096 
    111       itime = jpmois  
    112        
    113       ipi = jpiglo 
    114       ipj = jpjglo 
    115       ipk = jpk 
    116  
    117  
    11897      ! 1. first call kt=nit000 
    11998      ! ----------------------- 
    12099 
    121100      IF( kt == nit000 ) THEN 
     101         ! initializations 
    122102         nflx1  = 0 
    123103         nflx11 = 0 
     104         ! open the file 
    124105         IF(lwp) THEN 
    125             WRITE(numout,*) 
    126             WRITE(numout,*) ' global CLIO flx monthly fields in NetCDF format' 
    127             WRITE(numout,*) ' ------------------------------' 
    128             WRITE(numout,*) 
     106            WRITE(numout,*) ' ' 
     107            WRITE(numout,*) ' **** Routine flx_bulk_monthly.h90' 
     108            WRITE(numout,*) ' ' 
     109            WRITE(numout,*) ' global CLIO flx monthly fields' 
    129110         ENDIF 
    130           
    131          ! Read first records 
    132  
    133          ! title, dimensions and tests 
    134 #if defined key_agrif 
    135       if ( .NOT. Agrif_Root() ) then 
    136          clname = TRIM(Agrif_CFixed())//'_'//TRIM(clname) 
    137       endif 
    138 #endif     
    139          CALL flinopen( clname, mig(1), nlci, mjg(1), nlcj,   & 
    140             &          .FALSE., ipi, ipj, ipk, zlon, zlat, zlev,   & 
    141             &          itime, istep, zdate0, zsecond, numflx ) 
    142           
    143          ! temperature 
    144          ! Utilisation d'un spline, on lit le champ a mois=1 
    145          CALL flinget( numflx, 'socliot1', jpidta, jpjdta, jpk,   & 
    146             &          jpmois, 1, 1, mig(1), nlci,   & 
    147             &          mjg(1), nlcj, flxdta(1:nlci,1:nlcj,1,5) ) 
    148  
    149          ! Extra-halo initialization in MPP 
    150          IF( lk_mpp ) THEN 
    151             DO ji = nlci+1, jpi 
    152                flxdta(ji,:,1,5) = flxdta(1,:,1,5)   ;   flxdta(ji,:,2,5) = flxdta(1,:,2,5) 
    153             ENDDO 
    154             DO jj = nlcj+1, jpj 
    155                flxdta(:,jj,1,5) = flxdta(:,1,1,5)   ;   flxdta(:,jj,2,5) = flxdta(:,1,2,5) 
    156             ENDDO 
    157          ENDIF 
     111         CALL iom_open ( 'flx.nc', numflx ) 
     112         
     113         ! temperature, spline initialization, we read the first record 
     114         CALL iom_get ( numflx, jpdom_data, 'socliot1', flxdta(:,:,1,5), 1 ) 
     115 
    158116      ENDIF 
    159117 
     
    181139 
    182140         ! humidity 
    183          CALL flinget(numflx,'socliohu',jpidta,jpjdta,jpk,jpmois,nflx1,   & 
    184             nflx1,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,1,1)) 
    185          CALL flinget(numflx,'socliohu',jpidta,jpjdta,jpk,jpmois,nflx2,   & 
    186             nflx2,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,2,1)) 
     141         CALL iom_get ( numflx, jpdom_data, 'socliohu', flxdta(:,:,1,1), nflx1 ) 
     142         CALL iom_get ( numflx, jpdom_data, 'socliohu', flxdta(:,:,2,1), nflx2 ) 
    187143         ! 10m wind module 
    188          CALL flinget(numflx,'socliowi',jpidta,jpjdta,jpk,jpmois,nflx1,   & 
    189             nflx1,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,1,2)) 
    190          CALL flinget(numflx,'socliowi',jpidta,jpjdta,jpk,jpmois,nflx2,   & 
    191             nflx2,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,2,2)) 
     144         CALL iom_get ( numflx, jpdom_data, 'socliowi', flxdta(:,:,1,2), nflx1 ) 
     145         CALL iom_get ( numflx, jpdom_data, 'socliowi', flxdta(:,:,2,2), nflx2 ) 
    192146         ! cloud cover 
    193          CALL flinget(numflx,'socliocl',jpidta,jpjdta,jpk,jpmois,nflx1,   & 
    194             nflx1,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,1,3)) 
    195          CALL flinget(numflx,'socliocl',jpidta,jpjdta,jpk,jpmois,nflx2,   & 
    196             nflx2,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,2,3)) 
     147         CALL iom_get ( numflx, jpdom_data, 'socliocl', flxdta(:,:,1,3), nflx1 ) 
     148         CALL iom_get ( numflx, jpdom_data, 'socliocl', flxdta(:,:,2,3), nflx2 ) 
    197149         ! precipitations 
    198          CALL flinget(numflx,'socliopl',jpidta,jpjdta,jpk,jpmois,nflx1,   & 
    199             nflx1,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,1,4)) 
    200          CALL flinget(numflx,'socliopl',jpidta,jpjdta,jpk,jpmois,nflx2,   & 
    201             nflx2,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,2,4)) 
     150         CALL iom_get ( numflx, jpdom_data, 'socliopl', flxdta(:,:,1,4), nflx1 ) 
     151         CALL iom_get ( numflx, jpdom_data, 'socliopl', flxdta(:,:,2,4), nflx2 ) 
    202152          
    203153         IF(lwp .AND. nitend-nit000 <= 100 ) THEN 
     
    208158               WRITE(numout,*) 
    209159               WRITE(numout,*) 'Clio mounth: ',nflx1,'  field: ',jm,' multiply by ',0.1 
    210                CALL prihre(flxdta(:,:,1,jm),jpi,jpj,1,jpi,20,1,jpj,10,.1,numout) 
     160               CALL prihre( flxdta(:,:,1,jm),jpi,jpj,1,jpi,20,1,jpj,10,.1,numout ) 
    211161            END DO 
    212162         ENDIF 
    213163 
    214          ! Extra-halo initialization in MPP 
    215          IF( lk_mpp ) THEN 
    216             DO ji = nlci+1, jpi 
    217                flxdta(ji,:,1,1) = flxdta(1,:,1,1)   ;   flxdta(ji,:,2,1) = flxdta(1,:,2,1) 
    218                flxdta(ji,:,1,2) = flxdta(1,:,1,2)   ;   flxdta(ji,:,2,2) = flxdta(1,:,2,2) 
    219                flxdta(ji,:,1,3) = flxdta(1,:,1,3)   ;   flxdta(ji,:,2,3) = flxdta(1,:,2,3) 
    220                flxdta(ji,:,1,4) = flxdta(1,:,1,4)   ;   flxdta(ji,:,2,4) = flxdta(1,:,2,4) 
    221             ENDDO 
    222             DO jj = nlcj+1, jpj 
    223                flxdta(:,jj,1,1) = flxdta(:,1,1,1)   ;   flxdta(:,jj,2,1) = flxdta(:,1,2,1) 
    224                flxdta(:,jj,1,2) = flxdta(:,1,1,2)   ;   flxdta(:,jj,2,2) = flxdta(:,1,2,2) 
    225                flxdta(:,jj,1,3) = flxdta(:,1,1,3)   ;   flxdta(:,jj,2,3) = flxdta(:,1,2,3) 
    226                flxdta(:,jj,1,4) = flxdta(:,1,1,4)   ;   flxdta(:,jj,2,4) = flxdta(:,1,2,4) 
    227             ENDDO 
    228          ENDIF 
    229  
    230164      ENDIF 
    231  
    232       ! ------------------- ! 
    233       ! Last call kt=nitend ! 
    234       ! ------------------- ! 
    235  
    236       ! Closing of the numflx file (required in mpp) 
    237       IF( kt == nitend ) CALL flinclo(numflx) 
    238  
    239165 
    240166      IF( kt == nit000 .OR. imois2 /= nflx11 ) THEN 
     
    258184         ! air temperature 
    259185         ! Utilisation d'un spline, on lit le champ a mois=nflx1 et nflx2 
    260          CALL flinget(numflx,'socliot1',jpidta,jpjdta,jpk,jpmois,nflx11,   & 
    261             nflx11,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,1,6)) 
    262          CALL flinget(numflx,'socliot1',jpidta,jpjdta,jpk,jpmois,nflx12,   & 
    263             nflx12,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,2,6)) 
     186         CALL iom_get (numflx,jpdom_data,'socliot1',flxdta(:,:,1,6),nflx11) 
     187         CALL iom_get (numflx,jpdom_data,'socliot1',flxdta(:,:,2,6),nflx12) 
    264188         ! air temperature derivative (to reconstruct a daily field) 
    265          CALL flinget(numflx,'socliot2',jpidta,jpjdta,jpk,jpmois,nflx11,   & 
    266             nflx11,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,1,7)) 
    267          CALL flinget(numflx,'socliot2',jpidta,jpjdta,jpk,jpmois,nflx12,   & 
    268             nflx12,mig(1),nlci,mjg(1),nlcj,flxdta(1:nlci,1:nlcj,2,7)) 
    269           
     189         CALL iom_get (numflx,jpdom_data,'socliot2',flxdta(:,:,1,7),nflx11) 
     190         CALL iom_get (numflx,jpdom_data,'socliot2',flxdta(:,:,2,7),nflx12) 
     191           
    270192         IF(lwp) THEN 
    271193            WRITE(numout,*) 
     
    280202         ENDIF 
    281203 
    282          ! Extra-halo initialization in MPP 
    283          IF( lk_mpp ) THEN 
    284             DO ji = nlci+1, jpi 
    285                flxdta(ji,:,1,6) = flxdta(1,:,1,6)   ;   flxdta(ji,:,2,6) = flxdta(1,:,2,6) 
    286                flxdta(ji,:,1,7) = flxdta(1,:,1,7)   ;   flxdta(ji,:,2,7) = flxdta(1,:,2,7) 
    287             ENDDO 
    288             DO jj = nlcj+1, jpj 
    289                flxdta(:,jj,1,6) = flxdta(:,1,1,6)   ;   flxdta(:,jj,2,6) = flxdta(:,1,2,6) 
    290                flxdta(:,jj,1,7) = flxdta(:,1,1,7)   ;   flxdta(:,jj,2,7) = flxdta(:,1,2,7) 
    291             ENDDO 
    292          ENDIF 
    293           
    294204      ENDIF 
    295205 
     
    321231      CALL blk( kt )                ! bulk formulea fluxes  
    322232 
     233      ! ------------------- ! 
     234      ! Last call kt=nitend ! 
     235      ! ------------------- ! 
     236 
     237      ! Closing of the numflx file (required in mpp) 
     238      IF( kt == nitend ) CALL iom_close (numflx) 
     239 
    323240   END SUBROUTINE flx 
Note: See TracChangeset for help on using the changeset viewer.