- Timestamp:
- 2019-08-06T15:16:49+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/OCE/IOM/iom.F90
r10817 r11405 1072 1072 llxios = .FALSE. 1073 1073 if(PRESENT(ldxios)) llxios = ldxios 1074 idvar = iom_varid( kiomid, cdvar )1075 1074 idom = kdom 1076 1075 ! 1077 1076 IF(.NOT.llxios) THEN 1077 idvar = iom_varid( kiomid, cdvar ) 1078 1078 clname = iom_file(kiomid)%name ! esier to read 1079 1079 clinfo = ' iom_get_123d, file: '//trim(clname)//', var: '//trim(cdvar) … … 1290 1290 ENDIF 1291 1291 ! 1292 !--- Apply scale_factor and offset 1293 zscf = iom_file(kiomid)%scf(idvar) ! scale factor 1294 zofs = iom_file(kiomid)%ofs(idvar) ! offset 1295 IF( PRESENT(pv_r1d) ) THEN 1296 IF( zscf /= 1. ) pv_r1d(:) = pv_r1d(:) * zscf 1297 IF( zofs /= 0. ) pv_r1d(:) = pv_r1d(:) + zofs 1298 ELSEIF( PRESENT(pv_r2d) ) THEN 1299 IF( zscf /= 1.) pv_r2d(:,:) = pv_r2d(:,:) * zscf 1300 IF( zofs /= 0.) pv_r2d(:,:) = pv_r2d(:,:) + zofs 1301 ELSEIF( PRESENT(pv_r3d) ) THEN 1302 IF( zscf /= 1.) pv_r3d(:,:,:) = pv_r3d(:,:,:) * zscf 1303 IF( zofs /= 0.) pv_r3d(:,:,:) = pv_r3d(:,:,:) + zofs 1304 ENDIF 1292 1305 ELSE ! read using XIOS. Only if KEY_IOMPUT is defined 1293 1306 #if defined key_iomput 1294 !would be good to be able to check which context is active and swap only if current is not restart1295 CALL iom_swap( TRIM(crxios_context) )1296 1307 IF( PRESENT(pv_r3d) ) THEN 1297 1308 pv_r3d(:, :, :) = 0. 1298 if(lwp) write(numout,*) 'XIOS R ST READ (3D): ',trim(cdvar)1309 if(lwp) write(numout,*) 'XIOS READ (3D): ',trim(cdvar) 1299 1310 CALL xios_recv_field( trim(cdvar), pv_r3d) 1300 1311 IF(idom /= jpdom_unknown ) then … … 1303 1314 ELSEIF( PRESENT(pv_r2d) ) THEN 1304 1315 pv_r2d(:, :) = 0. 1305 if(lwp) write(numout,*) 'XIOS R ST READ (2D): ', trim(cdvar)1316 if(lwp) write(numout,*) 'XIOS READ (2D): ', trim(cdvar) 1306 1317 CALL xios_recv_field( trim(cdvar), pv_r2d) 1307 1318 IF(idom /= jpdom_unknown ) THEN … … 1310 1321 ELSEIF( PRESENT(pv_r1d) ) THEN 1311 1322 pv_r1d(:) = 0. 1312 if(lwp) write(numout,*) 'XIOS R ST READ (1D): ', trim(cdvar)1323 if(lwp) write(numout,*) 'XIOS READ (1D): ', trim(cdvar) 1313 1324 CALL xios_recv_field( trim(cdvar), pv_r1d) 1314 1325 ENDIF 1315 CALL iom_swap( TRIM(cxios_context) )1316 1326 #else 1317 1327 istop = istop + 1 … … 1323 1333 IF( lk_c1d .AND. PRESENT(pv_r2d) ) CALL lbc_lnk( 'iom', pv_r2d,'Z',1. ) 1324 1334 IF( lk_c1d .AND. PRESENT(pv_r3d) ) CALL lbc_lnk( 'iom', pv_r3d,'Z',1. ) 1325 1326 !--- Apply scale_factor and offset1327 zscf = iom_file(kiomid)%scf(idvar) ! scale factor1328 zofs = iom_file(kiomid)%ofs(idvar) ! offset1329 IF( PRESENT(pv_r1d) ) THEN1330 IF( zscf /= 1. ) pv_r1d(:) = pv_r1d(:) * zscf1331 IF( zofs /= 0. ) pv_r1d(:) = pv_r1d(:) + zofs1332 ELSEIF( PRESENT(pv_r2d) ) THEN1333 IF( zscf /= 1.) pv_r2d(:,:) = pv_r2d(:,:) * zscf1334 IF( zofs /= 0.) pv_r2d(:,:) = pv_r2d(:,:) + zofs1335 ELSEIF( PRESENT(pv_r3d) ) THEN1336 IF( zscf /= 1.) pv_r3d(:,:,:) = pv_r3d(:,:,:) * zscf1337 IF( zofs /= 0.) pv_r3d(:,:,:) = pv_r3d(:,:,:) + zofs1338 ENDIF1339 1335 ! 1340 1336 END SUBROUTINE iom_get_123d
Note: See TracChangeset
for help on using the changeset viewer.