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 1856 for branches/DEV_r1784_3DF/NEMO/OPA_SRC/SBC/fldread.F90 – NEMO

Ignore:
Timestamp:
2010-05-03T12:32:10+02:00 (14 years ago)
Author:
smasson
Message:

fldread_3D: small bugfix and style

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/DEV_r1784_3DF/NEMO/OPA_SRC/SBC/fldread.F90

    r1824 r1856  
    4848      INTEGER , DIMENSION(2)          ::   nrec_b       ! before record (1: index, 2: second since Jan. 1st 00h of nit000 year) 
    4949      INTEGER , DIMENSION(2)          ::   nrec_a       ! after  record (1: index, 2: second since Jan. 1st 00h of nit000 year) 
    50       REAL(wp) , ALLOCATABLE, DIMENSION(:,:,: ::   fnow       ! input fields interpolated to now time step 
     50      REAL(wp) , ALLOCATABLE, DIMENSION(:,:,:  ) ::   fnow       ! input fields interpolated to now time step 
    5151      REAL(wp) , ALLOCATABLE, DIMENSION(:,:,:,:) ::   fdta       ! 2 consecutive record of input fields 
    5252      CHARACTER(len = 256)            ::   wgtname      ! current name of the NetCDF weight file acting as a key 
     
    146146!CDIR COLLAPSE 
    147147               sd(jf)%fdta(:,:,:,1) = sd(jf)%fdta(:,:,:,2) 
    148                sd(jf)%rotn(1)     = sd(jf)%rotn(2) 
     148               sd(jf)%rotn(1)       = sd(jf)%rotn(2) 
    149149            ENDIF 
    150150 
     
    204204 
    205205            ! read after data 
     206            ipk = SIZE( sd(jf)%fdta, 3 ) 
    206207            IF( LEN(TRIM(sd(jf)%wgtname)) > 0 ) THEN 
    207208               CALL wgt_list( sd(jf), kw ) 
    208                ipk = SIZE(sd(jf)%fdta,3) 
    209                DO jk = 1,ipk 
    210                   CALL fld_interp( sd(jf)%num, sd(jf)%clvar , kw , sd(jf)%fdta(:,:,jk,2) , sd(jf)%nrec_a(1) ) 
    211                ENDDO 
     209               DO jk = 1, ipk 
     210                  CALL fld_interp( sd(jf)%num, sd(jf)%clvar, kw, sd(jf)%fdta(:,:,jk,2), sd(jf)%nrec_a(1) ) 
     211               END DO 
    212212            ELSE 
    213                SELECT CASE( SIZE(sd(jf)%fdta,3) ) 
    214                CASE(1) 
     213               IF( ipk == 1 ) THEN  
    215214                  CALL iom_get( sd(jf)%num, jpdom_data, sd(jf)%clvar, sd(jf)%fdta(:,:,1,2), sd(jf)%nrec_a(1) ) 
    216                CASE(jpk) 
     215               ELSE 
    217216                  CALL iom_get( sd(jf)%num, jpdom_data, sd(jf)%clvar, sd(jf)%fdta(:,:,:,2), sd(jf)%nrec_a(1) ) 
    218                END SELECT 
     217               ENDIF 
    219218            ENDIF 
    220219            sd(jf)%rotn(2) = .FALSE. 
     
    256255                         vtmp(:,:) = 0.0 
    257256                         ! 
    258                          ipk = SIZE( sd(kf)%fdta(:,:,:,nf) ,3 ) 
    259                          DO jk = 1,ipk 
     257                         DO jk = 1, SIZE( sd(kf)%fdta, 3 ) 
    260258                            CALL rot_rep( sd(jf)%fdta(:,:,jk,nf),sd(kf)%fdta(:,:,jk,nf),'T', 'en->i', utmp(:,:) ) 
    261259                            CALL rot_rep( sd(jf)%fdta(:,:,jk,nf),sd(kf)%fdta(:,:,jk,nf),'T', 'en->j', vtmp(:,:) ) 
    262260                            sd(jf)%fdta(:,:,jk,nf) = utmp(:,:) 
    263261                            sd(kf)%fdta(:,:,jk,nf) = vtmp(:,:) 
    264                          ENDDO 
     262                         END DO 
    265263                         ! 
    266264                         sd(jf)%rotn(nf) = .TRUE. 
     
    335333      INTEGER :: inrec          ! number of record existing for this variable 
    336334      INTEGER :: kwgt 
    337       INTEGER :: jk             !vertical loop variable 
    338       INTEGER :: ipk            !number of vertical levels of sdjf%fdta ( 2D: ipk=1 ; 3D: ipk=jpk ) 
     335      INTEGER :: jk             ! vertical loop variable 
     336      INTEGER :: ipk            ! number of vertical levels of sdjf%fdta ( 2D: ipk=1 ; 3D: ipk=jpk ) 
    339337      CHARACTER(LEN=1000) ::   clfmt   ! write format 
    340338      !!--------------------------------------------------------------------- 
     
    401399 
    402400         ! read before data into sdjf%fdta(:,:,2) because we will swap data in the following part of fld_read 
     401         ipk = SIZE( sdjf%fdta, 3 ) 
    403402         IF( LEN(TRIM(sdjf%wgtname)) > 0 ) THEN 
    404403            CALL wgt_list( sdjf, kwgt ) 
    405             ipk = SIZE(sdjf%fdta,3) 
    406             DO jk = 1,ipk 
    407                CALL fld_interp( sdjf%num,sdjf%clvar,kwgt,sdjf%fdta(:,:,jk,2),sdjf%nrec_a(1) ) 
    408             ENDDO 
     404            DO jk = 1, ipk 
     405               CALL fld_interp( sdjf%num, sdjf%clvar, kwgt, sdjf%fdta(:,:,jk,2), sdjf%nrec_b(1) ) 
     406            END DO 
    409407         ELSE 
    410             SELECT CASE ( SIZE(sdjf%fdta,3) ) 
    411             CASE(1) 
    412                 CALL iom_get( sdjf%num, jpdom_data, sdjf%clvar, sdjf%fdta(:,:,1,2), sdjf%nrec_b(1) ) 
    413             CASE(jpk) 
    414                 if(lwp)write(numout,*)'cbr00 ',sdjf%num,SIZE(sdjf%fdta,3)  
    415                 CALL iom_get( sdjf%num, jpdom_data, sdjf%clvar, sdjf%fdta(:,:,:,2), sdjf%nrec_b(1) ) 
    416             END SELECT 
     408            IF( ipk == 1 ) THEN 
     409               CALL iom_get( sdjf%num, jpdom_data, sdjf%clvar, sdjf%fdta(:,:,1,2), sdjf%nrec_b(1) ) 
     410            ELSE 
     411               CALL iom_get( sdjf%num, jpdom_data, sdjf%clvar, sdjf%fdta(:,:,:,2), sdjf%nrec_b(1) ) 
     412            ENDIF 
    417413         ENDIF 
    418414         sdjf%rotn(2) = .FALSE. 
     
    562558      ELSE 
    563559         ! build the new filename if climatological data 
    564          IF( sdjf%cltype == 'monthly' )   WRITE(sdjf%clname, '(a,"m" ,i2.2)' ) TRIM( sdjf%clrootname ), kmonth   ! add month 
     560         IF( sdjf%cltype == 'monthly' )   WRITE(sdjf%clname, '(a,"_m",i2.2)' ) TRIM( sdjf%clrootname ), kmonth   ! add month 
    565561      ENDIF 
    566562      CALL iom_open( sdjf%clname, sdjf%num, ldstop = ldstop, ldiof =  LEN(TRIM(sdjf%wgtname)) > 0 ) 
Note: See TracChangeset for help on using the changeset viewer.