Changeset 1856 for branches/DEV_r1784_3DF/NEMO/OPA_SRC/SBC/fldread.F90
- Timestamp:
- 2010-05-03T12:32:10+02:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r1784_3DF/NEMO/OPA_SRC/SBC/fldread.F90
r1824 r1856 48 48 INTEGER , DIMENSION(2) :: nrec_b ! before record (1: index, 2: second since Jan. 1st 00h of nit000 year) 49 49 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 step50 REAL(wp) , ALLOCATABLE, DIMENSION(:,:,: ) :: fnow ! input fields interpolated to now time step 51 51 REAL(wp) , ALLOCATABLE, DIMENSION(:,:,:,:) :: fdta ! 2 consecutive record of input fields 52 52 CHARACTER(len = 256) :: wgtname ! current name of the NetCDF weight file acting as a key … … 146 146 !CDIR COLLAPSE 147 147 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) 149 149 ENDIF 150 150 … … 204 204 205 205 ! read after data 206 ipk = SIZE( sd(jf)%fdta, 3 ) 206 207 IF( LEN(TRIM(sd(jf)%wgtname)) > 0 ) THEN 207 208 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 212 212 ELSE 213 SELECT CASE( SIZE(sd(jf)%fdta,3) ) 214 CASE(1) 213 IF( ipk == 1 ) THEN 215 214 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 217 216 CALL iom_get( sd(jf)%num, jpdom_data, sd(jf)%clvar, sd(jf)%fdta(:,:,:,2), sd(jf)%nrec_a(1) ) 218 END SELECT217 ENDIF 219 218 ENDIF 220 219 sd(jf)%rotn(2) = .FALSE. … … 256 255 vtmp(:,:) = 0.0 257 256 ! 258 ipk = SIZE( sd(kf)%fdta(:,:,:,nf) ,3 ) 259 DO jk = 1,ipk 257 DO jk = 1, SIZE( sd(kf)%fdta, 3 ) 260 258 CALL rot_rep( sd(jf)%fdta(:,:,jk,nf),sd(kf)%fdta(:,:,jk,nf),'T', 'en->i', utmp(:,:) ) 261 259 CALL rot_rep( sd(jf)%fdta(:,:,jk,nf),sd(kf)%fdta(:,:,jk,nf),'T', 'en->j', vtmp(:,:) ) 262 260 sd(jf)%fdta(:,:,jk,nf) = utmp(:,:) 263 261 sd(kf)%fdta(:,:,jk,nf) = vtmp(:,:) 264 END DO262 END DO 265 263 ! 266 264 sd(jf)%rotn(nf) = .TRUE. … … 335 333 INTEGER :: inrec ! number of record existing for this variable 336 334 INTEGER :: kwgt 337 INTEGER :: jk ! vertical loop variable338 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 ) 339 337 CHARACTER(LEN=1000) :: clfmt ! write format 340 338 !!--------------------------------------------------------------------- … … 401 399 402 400 ! 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 ) 403 402 IF( LEN(TRIM(sdjf%wgtname)) > 0 ) THEN 404 403 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 409 407 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 417 413 ENDIF 418 414 sdjf%rotn(2) = .FALSE. … … 562 558 ELSE 563 559 ! build the new filename if climatological data 564 IF( sdjf%cltype == 'monthly' ) WRITE(sdjf%clname, '(a," m",i2.2)' ) TRIM( sdjf%clrootname ), kmonth ! add month560 IF( sdjf%cltype == 'monthly' ) WRITE(sdjf%clname, '(a,"_m",i2.2)' ) TRIM( sdjf%clrootname ), kmonth ! add month 565 561 ENDIF 566 562 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.