- 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/SBC/fldread.F90
r10425 r11405 647 647 ENDIF 648 648 ELSE IF( LEN(TRIM(sdjf%wgtname)) > 0 ) THEN 649 CALL wgt_list( sdjf, iw )649 CALL wgt_list( sdjf, iw, lxios_blkw ) 650 650 IF( sdjf%ln_tint ) THEN ; CALL fld_interp( sdjf%num, sdjf%clvar, iw, ipk, sdjf%fdta(:,:,:,2), & 651 651 & sdjf%nrec_a(1), sdjf%lsmname ) … … 1345 1345 1346 1346 1347 SUBROUTINE wgt_list( sd, kwgt )1347 SUBROUTINE wgt_list( sd, kwgt, ldxios ) 1348 1348 !!--------------------------------------------------------------------- 1349 1349 !! *** ROUTINE wgt_list *** … … 1355 1355 TYPE( FLD ), INTENT(in ) :: sd ! field with name of weights file 1356 1356 INTEGER , INTENT(inout) :: kwgt ! index of weights 1357 LOGICAL , INTENT(in), OPTIONAL :: ldxios 1357 1358 ! 1358 1359 INTEGER :: kw, nestid ! local integer 1359 1360 LOGICAL :: found ! local logical 1361 LOGICAL :: luxios 1362 luxios = .FALSE. 1363 if(PRESENT(ldxios)) luxios = ldxios 1360 1364 !!---------------------------------------------------------------------- 1361 1365 ! … … 1381 1385 IF( .NOT.found ) THEN 1382 1386 kwgt = nxt_wgt 1383 CALL fld_weight( sd )1387 CALL fld_weight( sd, luxios ) 1384 1388 ENDIF 1385 1389 ! … … 1416 1420 1417 1421 1418 SUBROUTINE fld_weight( sd )1422 SUBROUTINE fld_weight( sd, ldxios ) 1419 1423 !!--------------------------------------------------------------------- 1420 1424 !! *** ROUTINE fld_weight *** … … 1424 1428 !!---------------------------------------------------------------------- 1425 1429 TYPE( FLD ), INTENT(in) :: sd ! field with name of weights file 1430 LOGICAL, INTENT(in), OPTIONAL :: ldxios 1426 1431 !! 1427 1432 INTEGER :: jn ! dummy loop indices … … 1435 1440 INTEGER, DIMENSION(jpi,jpj) :: data_src 1436 1441 REAL(wp), DIMENSION(jpi,jpj) :: data_tmp 1442 LOGICAL :: luxios 1437 1443 !!---------------------------------------------------------------------- 1444 luxios = .FALSE. 1445 IF(PRESENT(ldxios)) luxios = ldxios 1438 1446 ! 1439 1447 IF( nxt_wgt > tot_wgts ) THEN … … 1464 1472 CALL iom_open ( sd%wgtname, inum ) ! interpolation weights 1465 1473 IF ( inum > 0 ) THEN 1466 1474 IF(luxios) THEN 1475 CALL iom_swap(cbwxios_context) 1476 ENDIF 1467 1477 !! determine whether we have an east-west cyclic grid 1468 1478 !! from global attribute called "ew_wrap" in the weights file … … 1511 1521 WRITE(aname,'(a3,i2.2)') 'src',jn 1512 1522 data_tmp(:,:) = 0 1513 CALL iom_get ( inum, jpdom_data, aname, data_tmp(:,:) ) 1523 IF(luxios) THEN 1524 CALL iom_get ( inum, jpdom_data, aname//TRIM(sd%wgtname), data_tmp(:,:), ldxios = luxios ) 1525 ELSE 1526 CALL iom_get ( inum, jpdom_data, aname, data_tmp(:,:) ) 1527 ENDIF 1514 1528 data_src(:,:) = INT(data_tmp(:,:)) 1515 1529 ref_wgts(nxt_wgt)%data_jpj(:,:,jn) = 1 + (data_src(:,:)-1) / ref_wgts(nxt_wgt)%ddims(1) … … 1521 1535 WRITE(aname,'(a3,i2.2)') 'wgt',jn 1522 1536 ref_wgts(nxt_wgt)%data_wgt(:,:,jn) = 0.0 1523 CALL iom_get ( inum, jpdom_data, aname, ref_wgts(nxt_wgt)%data_wgt(:,:,jn) ) 1537 IF(luxios) THEN 1538 CALL iom_get ( inum, jpdom_data, aname//TRIM(sd%wgtname), ref_wgts(nxt_wgt)%data_wgt(:,:,jn), ldxios = luxios ) 1539 ELSE 1540 CALL iom_get ( inum, jpdom_data, aname, ref_wgts(nxt_wgt)%data_wgt(:,:,jn) ) 1541 ENDIF 1524 1542 END DO 1525 1543 CALL iom_close (inum) … … 1548 1566 nxt_wgt = nxt_wgt + 1 1549 1567 ! 1568 IF(luxios) CALL iom_swap(cxios_context) 1550 1569 ELSE 1551 1570 CALL ctl_stop( ' fld_weight : unable to read the file ' )
Note: See TracChangeset
for help on using the changeset viewer.