/[MITgcm]/MITgcm/pkg/obcs/obcs_external_fields_load.F
ViewVC logotype

Diff of /MITgcm/pkg/obcs/obcs_external_fields_load.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.7 by jmc, Tue Aug 8 23:28:38 2006 UTC revision 1.8 by jmc, Sun Nov 4 03:51:30 2007 UTC
# Line 1  Line 1 
1  C $Header$  C $Header$
2  C $Name$  C $Name$
3  #include "OBCS_OPTIONS.h"  #include "OBCS_OPTIONS.h"
4    
5  CBOP  CBOP
6  C     !ROUTINE: OBCS_EXTERNAL_FIELDS_LOAD  C     !ROUTINE: OBCS_EXTERNAL_FIELDS_LOAD
7  C     !INTERFACE:  C     !INTERFACE:
8        SUBROUTINE OBCS_EXTERNAL_FIELDS_LOAD( myTime, myIter, myThid )        SUBROUTINE OBCS_EXTERNAL_FIELDS_LOAD( myTime, myIter, myThid )
9  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
10  C     *==========================================================*  C     *==========================================================*
11  C     | SUBROUTINE OBCS_EXTERNAL_FIELDS_LOAD                            C     | SUBROUTINE OBCS_EXTERNAL_FIELDS_LOAD
12  C     | o Control reading of fields from external source.          C     | o Control reading of fields from external source.
13  C     *==========================================================*  C     *==========================================================*
14  C     | External source field loading routine for open boundaries.  C     | External source field loading routine for open boundaries.
15  C     | This routine is called every time we want to                C     | This routine is called every time we want to
16  C     | load a a set of external open boundary fields.  C     | load a a set of external open boundary fields.
17  C     | Only if there are fields available (file names are not empty)  C     | Only if there are fields available (file names are not empty)
18  C     | the open boundary fields are overwritten.  C     | the open boundary fields are overwritten.
19  C     | The routine decides which fields to load and then reads them in.  C     | The routine decides which fields to load and then reads them in.
20  C     | This routine needs to be customised for particular          C     | This routine needs to be customised for particular
21  C     | experiments.                                                C     | experiments.
22  C     | Notes                                                      C     | Notes
23  C     | =====                                                      C     | =====
24  C     | Two-dimensional and three-dimensional I/O are handled in    C     | Two-dimensional and three-dimensional I/O are handled in
25  C     | the following way under MITgcmUV. A master thread          C     | the following way under MITgcmUV. A master thread
26  C     | performs I/O using system calls. This threads reads data    C     | performs I/O using system calls. This threads reads data
27  C     | into a temporary buffer. At present the buffer is loaded    C     | into a temporary buffer. At present the buffer is loaded
28  C     | with the entire model domain. This is probably OK for now  C     | with the entire model domain. This is probably OK for now
29  C     | Each thread then copies data from the buffer to the        C     | Each thread then copies data from the buffer to the
30  C     | region of the proper array it is responsible for.    C     | region of the proper array it is responsible for.
31  C     | =====  C     | =====
32  C     | This routine is the complete analogue to external_fields_load,  C     | This routine is the complete analogue to external_fields_load,
33  C     | except for exchanges of forcing fields. These are done in  C     | except for exchanges of forcing fields. These are done in
# Line 35  C     | obcs_precribe_exchanges, which i Line 35  C     | obcs_precribe_exchanges, which i
35  C     | - Forcing period and cycle are the same as for other fields  C     | - Forcing period and cycle are the same as for other fields
36  C     |   in external forcing.  C     |   in external forcing.
37  C     | - constant boundary values are also read here and not  C     | - constant boundary values are also read here and not
38  C     |   directly in obcs_init_variables (which calls obcs_calc  C     |   directly in obcs_init_variables (which calls obcs_calc
39  C     |   which in turn calls this routine)  C     |   which in turn calls this routine)
40  C     *==========================================================*  C     *==========================================================*
41  C     \ev  C     \ev
# Line 47  C     === Global variables === Line 47  C     === Global variables ===
47  #include "EEPARAMS.h"  #include "EEPARAMS.h"
48  #include "PARAMS.h"  #include "PARAMS.h"
49  #include "GRID.h"  #include "GRID.h"
50    
51  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
52  C     === Routine arguments ===  C     === Routine arguments ===
53  C     myThid - Thread no. that called this routine.  C     myThid - Thread no. that called this routine.
# Line 56  C     myIter - Simulation timestep numbe Line 56  C     myIter - Simulation timestep numbe
56        INTEGER myThid        INTEGER myThid
57        _RL     myTime        _RL     myTime
58        INTEGER myIter        INTEGER myIter
59    
60  C     if external forcing (exf) package is enabled, all loading of external  C     if external forcing (exf) package is enabled, all loading of external
61  C     fields is done by exf  C     fields is done by exf
62  #if (defined ALLOW_OBCS && defined ALLOW_OBCS_PRESCRIBE && !defined ALLOW_EXF)  #if (defined ALLOW_OBCS && defined ALLOW_OBCS_PRESCRIBE && !defined ALLOW_EXF)
63  C  C
64  #include "OBCS.h"  #include "OBCS.h"
65  #ifdef ALLOW_PTRACERS.h  #ifdef ALLOW_PTRACERS
66  #include "PTRACERS_SIZE.h"  #include "PTRACERS_SIZE.h"
67  #include "OBCS_PTRACERS.h"  #include "OBCS_PTRACERS.h"
68  #include "PTRACERS.h"  #include "PTRACERS.h"
# Line 112  C      data for the period ahead and the Line 112  C      data for the period ahead and the
112         CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,         CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
113       &                   SQUEEZE_RIGHT,myThid)       &                   SQUEEZE_RIGHT,myThid)
114    
115    #ifdef ALLOW_MDSIO
116  #ifdef ALLOW_OBCS_EAST  #ifdef ALLOW_OBCS_EAST
117  C     Eastern boundary  C     Eastern boundary
118        IF ( OBEuFile .NE. ' '  ) THEN        IF ( OBEuFile .NE. ' '  ) THEN
# Line 228  C     read boundary values for passive t Line 229  C     read boundary values for passive t
229  C     Eastern boundary  C     Eastern boundary
230          IF ( OBEptrFile(iTracer) .NE. ' '  ) THEN          IF ( OBEptrFile(iTracer) .NE. ' '  ) THEN
231           CALL MDSREADFIELDYZ ( OBEptrFile(itracer), readBinaryPrec,           CALL MDSREADFIELDYZ ( OBEptrFile(itracer), readBinaryPrec,
232       &        'RL', Nr, OBEptr0(1-Oly,1,1,1,iTracer),       &        'RL', Nr, OBEptr0(1-Oly,1,1,1,iTracer),
233       &        intime0, myThid )       &        intime0, myThid )
234           CALL MDSREADFIELDYZ ( OBEptrFile(itracer), readBinaryPrec,           CALL MDSREADFIELDYZ ( OBEptrFile(itracer), readBinaryPrec,
235       &        'RL', Nr, OBEptr1(1-Oly,1,1,1,iTracer),       &        'RL', Nr, OBEptr1(1-Oly,1,1,1,iTracer),
236       &        intime1, myThid )       &        intime1, myThid )
237          ENDIF          ENDIF
238  # endif /* ALLOW_OBCS_WEST */  # endif /* ALLOW_OBCS_WEST */
# Line 239  C     Eastern boundary Line 240  C     Eastern boundary
240  C     Western boundary  C     Western boundary
241          IF ( OBWptrFile(iTracer) .NE. ' '  ) THEN          IF ( OBWptrFile(iTracer) .NE. ' '  ) THEN
242           CALL MDSREADFIELDYZ ( OBWptrFile(itracer), readBinaryPrec,           CALL MDSREADFIELDYZ ( OBWptrFile(itracer), readBinaryPrec,
243       &        'RL', Nr, OBWptr0(1-Oly,1,1,1,iTracer),       &        'RL', Nr, OBWptr0(1-Oly,1,1,1,iTracer),
244       &        intime0, myThid )       &        intime0, myThid )
245           CALL MDSREADFIELDYZ ( OBWptrFile(itracer), readBinaryPrec,           CALL MDSREADFIELDYZ ( OBWptrFile(itracer), readBinaryPrec,
246       &        'RL', Nr, OBWptr1(1-Oly,1,1,1,iTracer),       &        'RL', Nr, OBWptr1(1-Oly,1,1,1,iTracer),
247       &        intime1, myThid )       &        intime1, myThid )
248          ENDIF          ENDIF
249  # endif /* ALLOW_OBCS_WEST */  # endif /* ALLOW_OBCS_WEST */
# Line 250  C     Western boundary Line 251  C     Western boundary
251  C     Northern boundary  C     Northern boundary
252          IF ( OBNptrFile(iTracer) .NE. ' '  ) THEN          IF ( OBNptrFile(iTracer) .NE. ' '  ) THEN
253           CALL MDSREADFIELDXZ ( OBNptrFile(itracer), readBinaryPrec,           CALL MDSREADFIELDXZ ( OBNptrFile(itracer), readBinaryPrec,
254       &        'RL', Nr, OBNptr0(1-Olx,1,1,1,iTracer),       &        'RL', Nr, OBNptr0(1-Olx,1,1,1,iTracer),
255       &        intime0, myThid )       &        intime0, myThid )
256           CALL MDSREADFIELDXZ ( OBNptrFile(itracer), readBinaryPrec,           CALL MDSREADFIELDXZ ( OBNptrFile(itracer), readBinaryPrec,
257       &        'RL', Nr, OBNptr1(1-Olx,1,1,1,iTracer),       &        'RL', Nr, OBNptr1(1-Olx,1,1,1,iTracer),
258       &        intime1, myThid )       &        intime1, myThid )
259          ENDIF          ENDIF
260  # endif /* ALLOW_OBCS_NORTH */  # endif /* ALLOW_OBCS_NORTH */
# Line 261  C     Northern boundary Line 262  C     Northern boundary
262  C     Southern boundary  C     Southern boundary
263          IF ( OBSptrFile(iTracer) .NE. ' '  ) THEN          IF ( OBSptrFile(iTracer) .NE. ' '  ) THEN
264           CALL MDSREADFIELDXZ ( OBSptrFile(itracer), readBinaryPrec,           CALL MDSREADFIELDXZ ( OBSptrFile(itracer), readBinaryPrec,
265       &        'RL', Nr, OBSptr0(1-Olx,1,1,1,iTracer),       &        'RL', Nr, OBSptr0(1-Olx,1,1,1,iTracer),
266       &        intime0, myThid )       &        intime0, myThid )
267           CALL MDSREADFIELDXZ ( OBSptrFile(itracer), readBinaryPrec,           CALL MDSREADFIELDXZ ( OBSptrFile(itracer), readBinaryPrec,
268       &        'RL', Nr, OBSptr1(1-Olx,1,1,1,iTracer),       &        'RL', Nr, OBSptr1(1-Olx,1,1,1,iTracer),
269       &        intime1, myThid )       &        intime1, myThid )
270          ENDIF          ENDIF
271  # endif /* ALLOW_OBCS_SOUTH */  # endif /* ALLOW_OBCS_SOUTH */
# Line 273  C     end do iTracer Line 274  C     end do iTracer
274  C     end if (usePTRACERS)  C     end if (usePTRACERS)
275        ENDIF        ENDIF
276  #endif /* ALLOW_PTRACERS */  #endif /* ALLOW_PTRACERS */
277    #else /* ALLOW_MDSIO */
278          STOP 'ABNORMAL END: OBCS_EXTERNAL_FIELDS_LOAD: NEEDS MSDIO PKG'
279    #endif /* ALLOW_MDSIO */
280    
281         _END_MASTER(myThid)         _END_MASTER(myThid)
282  C  C
283  C     At this point in external_fields_load the input fields are exchanged.  C     At this point in external_fields_load the input fields are exchanged.
284  C     However, we do not have exchange routines for vertical  C     However, we do not have exchange routines for vertical
285  C     slices and they are not planned, either, so the approriate fields  C     slices and they are not planned, either, so the approriate fields
286  C     are exchanged after the open boundary conditions have been  C     are exchanged after the open boundary conditions have been
287  C     applied. (in DYNAMICS and DO_FIELDS_BLOCKING_EXCHANGES)  C     applied. (in DYNAMICS and DO_FIELDS_BLOCKING_EXCHANGES)
288         _BARRIER         _BARRIER
289    
# Line 300  C      Read constant boundary conditions Line 305  C      Read constant boundary conditions
305          CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,          CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
306       &       SQUEEZE_RIGHT,myThid)       &       SQUEEZE_RIGHT,myThid)
307          inTime0 = 1          inTime0 = 1
308    #ifdef ALLOW_MDSIO
309  #ifdef ALLOW_OBCS_EAST  #ifdef ALLOW_OBCS_EAST
310  C     Eastern boundary  C     Eastern boundary
311          IF ( OBEuFile .NE. ' '  ) THEN          IF ( OBEuFile .NE. ' '  ) THEN
# Line 417  C     end do iTracer Line 423  C     end do iTracer
423  C     end if (usePTRACERS)  C     end if (usePTRACERS)
424          ENDIF          ENDIF
425  #endif /* ALLOW_PTRACERS */  #endif /* ALLOW_PTRACERS */
426    #else /* ALLOW_MDSIO */
427          STOP 'ABNORMAL END: OBCS_EXTERNAL_FIELDS_LOAD: NEEDS MSDIO PKG'
428    #endif /* ALLOW_MDSIO */
429          _END_MASTER(myThid)          _END_MASTER(myThid)
430          _BARRIER          _BARRIER
431  C     endif myIter .EQ. nIter0  C     endif myIter .EQ. nIter0
# Line 425  C     endif for periodicForcing Line 434  C     endif for periodicForcing
434        ENDIF        ENDIF
435    
436  C--   Now interpolate OBSu, OBSv, OBSt, OBSs, OBSptr, etc.  C--   Now interpolate OBSu, OBSv, OBSt, OBSs, OBSptr, etc.
437  C--   For periodicForcing, aWght = 0. and bWght = 1. so that the  C--   For periodicForcing, aWght = 0. and bWght = 1. so that the
438  C--   interpolation boilds down to copying the time-independent  C--   interpolation boilds down to copying the time-independent
439  C--   forcing field OBSu0 to OBSu  C--   forcing field OBSu0 to OBSu
440  #ifdef ALLOW_OBCS_EAST  #ifdef ALLOW_OBCS_EAST
441         IF ( OBEuFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_YZ(         IF ( OBEuFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_YZ(
442       &      OBEu, OBEu0, OBEu1, aWght, bWght, myThid )       &      OBEu, OBEu0, OBEu1, aWght, bWght, myThid )
443         IF ( OBEvFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_YZ(         IF ( OBEvFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_YZ(
444       &      OBEv, OBEv0, OBEv1, aWght, bWght, myThid )       &      OBEv, OBEv0, OBEv1, aWght, bWght, myThid )
445         IF ( OBEtFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_YZ(         IF ( OBEtFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_YZ(
446       &      OBEt, OBEt0, OBEt1, aWght, bWght, myThid )       &      OBEt, OBEt0, OBEt1, aWght, bWght, myThid )
447         IF ( OBEsFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_YZ(         IF ( OBEsFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_YZ(
448       &      OBEs, OBEs0, OBEs1, aWght, bWght, myThid )       &      OBEs, OBEs0, OBEs1, aWght, bWght, myThid )
449  #endif /* ALLOW_OBCS_EAST */  #endif /* ALLOW_OBCS_EAST */
450  #ifdef ALLOW_OBCS_WEST  #ifdef ALLOW_OBCS_WEST
451         IF ( OBWuFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_YZ(         IF ( OBWuFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_YZ(
452       &      OBWu, OBWu0, OBWu1, aWght, bWght, myThid )       &      OBWu, OBWu0, OBWu1, aWght, bWght, myThid )
453         IF ( OBWvFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_YZ(         IF ( OBWvFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_YZ(
454       &      OBWv, OBWv0, OBWv1, aWght, bWght, myThid )       &      OBWv, OBWv0, OBWv1, aWght, bWght, myThid )
455         IF ( OBWtFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_YZ(         IF ( OBWtFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_YZ(
456       &      OBWt, OBWt0, OBWt1, aWght, bWght, myThid )       &      OBWt, OBWt0, OBWt1, aWght, bWght, myThid )
457         IF ( OBWsFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_YZ(         IF ( OBWsFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_YZ(
458       &      OBWs, OBWs0, OBWs1, aWght, bWght, myThid )       &      OBWs, OBWs0, OBWs1, aWght, bWght, myThid )
459  #endif /* ALLOW_OBCS_WEST */  #endif /* ALLOW_OBCS_WEST */
460  #ifdef ALLOW_OBCS_NORTH  #ifdef ALLOW_OBCS_NORTH
461         IF ( OBNuFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_XZ(         IF ( OBNuFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_XZ(
462       &      OBNu, OBNu0, OBNu1, aWght, bWght, myThid )       &      OBNu, OBNu0, OBNu1, aWght, bWght, myThid )
463         IF ( OBNvFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_XZ(         IF ( OBNvFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_XZ(
464       &      OBNv, OBNv0, OBNv1, aWght, bWght, myThid )       &      OBNv, OBNv0, OBNv1, aWght, bWght, myThid )
465         IF ( OBNtFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_XZ(         IF ( OBNtFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_XZ(
466       &      OBNt, OBNt0, OBNt1, aWght, bWght, myThid )       &      OBNt, OBNt0, OBNt1, aWght, bWght, myThid )
467         IF ( OBNsFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_XZ(         IF ( OBNsFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_XZ(
468       &      OBNs, OBNs0, OBNs1, aWght, bWght, myThid )       &      OBNs, OBNs0, OBNs1, aWght, bWght, myThid )
469  #endif /* ALLOW_OBCS_NORTH */  #endif /* ALLOW_OBCS_NORTH */
470  #ifdef ALLOW_OBCS_SOUTH  #ifdef ALLOW_OBCS_SOUTH
471         IF ( OBSuFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_XZ(         IF ( OBSuFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_XZ(
472       &      OBSu, OBSu0, OBSu1, aWght, bWght, myThid )       &      OBSu, OBSu0, OBSu1, aWght, bWght, myThid )
473         IF ( OBSvFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_XZ(         IF ( OBSvFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_XZ(
474       &      OBSv, OBSv0, OBSv1, aWght, bWght, myThid )       &      OBSv, OBSv0, OBSv1, aWght, bWght, myThid )
475         IF ( OBStFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_XZ(         IF ( OBStFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_XZ(
476       &      OBSt, OBSt0, OBSt1, aWght, bWght, myThid )       &      OBSt, OBSt0, OBSt1, aWght, bWght, myThid )
477         IF ( OBSsFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_XZ(         IF ( OBSsFile .NE. ' '  ) CALL OBCS_EXTERNAL_FIELDS_INTERP_XZ(
478       &      OBSs, OBSs0, OBSs1, aWght, bWght, myThid )       &      OBSs, OBSs0, OBSs1, aWght, bWght, myThid )
479  #endif /* ALLOW_OBCS_SOUTH */  #endif /* ALLOW_OBCS_SOUTH */
480  #ifdef ALLOW_PTRACERS  #ifdef ALLOW_PTRACERS
# Line 474  C     "interpolate" passive tracer bound Line 483  C     "interpolate" passive tracer bound
483         DO iTracer = 1, PTRACERS_numInUse         DO iTracer = 1, PTRACERS_numInUse
484  # ifdef ALLOW_OBCS_EAST  # ifdef ALLOW_OBCS_EAST
485          IF ( OBEptrFile(iTracer) .NE. ' '  )          IF ( OBEptrFile(iTracer) .NE. ' '  )
486       &       CALL OBCS_EXTERNAL_FIELDS_INTERP_YZ(       &       CALL OBCS_EXTERNAL_FIELDS_INTERP_YZ(
487       O       OBEptr (1-Oly,1,1,1,iTracer),       O       OBEptr (1-Oly,1,1,1,iTracer),
488       I       OBEptr0(1-Oly,1,1,1,iTracer),       I       OBEptr0(1-Oly,1,1,1,iTracer),
489       I       OBEptr1(1-Oly,1,1,1,iTracer), aWght, bWght, myThid )       I       OBEptr1(1-Oly,1,1,1,iTracer), aWght, bWght, myThid )
490  # endif /* ALLOW_OBCS_EAST */  # endif /* ALLOW_OBCS_EAST */
491  # ifdef ALLOW_OBCS_WEST  # ifdef ALLOW_OBCS_WEST
492          IF ( OBWptrFile(iTracer) .NE. ' '  )          IF ( OBWptrFile(iTracer) .NE. ' '  )
493       &       CALL OBCS_EXTERNAL_FIELDS_INTERP_YZ(       &       CALL OBCS_EXTERNAL_FIELDS_INTERP_YZ(
494       O       OBWptr (1-Oly,1,1,1,iTracer),       O       OBWptr (1-Oly,1,1,1,iTracer),
495       I       OBWptr0(1-Oly,1,1,1,iTracer),       I       OBWptr0(1-Oly,1,1,1,iTracer),
496       I       OBWptr1(1-Oly,1,1,1,iTracer), aWght, bWght, myThid )       I       OBWptr1(1-Oly,1,1,1,iTracer), aWght, bWght, myThid )
497  # endif /* ALLOW_OBCS_WEST */  # endif /* ALLOW_OBCS_WEST */
498  # ifdef ALLOW_OBCS_NORTH  # ifdef ALLOW_OBCS_NORTH
499          IF ( OBNptrFile(iTracer) .NE. ' '  )          IF ( OBNptrFile(iTracer) .NE. ' '  )
500       &       CALL OBCS_EXTERNAL_FIELDS_INTERP_XZ(       &       CALL OBCS_EXTERNAL_FIELDS_INTERP_XZ(
501       O       OBNptr (1-Olx,1,1,1,iTracer),       O       OBNptr (1-Olx,1,1,1,iTracer),
502       I       OBNptr0(1-Olx,1,1,1,iTracer),       I       OBNptr0(1-Olx,1,1,1,iTracer),
503       I       OBNptr1(1-Olx,1,1,1,iTracer), aWght, bWght, myThid )       I       OBNptr1(1-Olx,1,1,1,iTracer), aWght, bWght, myThid )
504  # endif /* ALLOW_OBCS_NORTH */  # endif /* ALLOW_OBCS_NORTH */
505  # ifdef ALLOW_OBCS_SOUTH  # ifdef ALLOW_OBCS_SOUTH
506          IF ( OBSptrFile(iTracer) .NE. ' '  )          IF ( OBSptrFile(iTracer) .NE. ' '  )
507       &       CALL OBCS_EXTERNAL_FIELDS_INTERP_XZ(       &       CALL OBCS_EXTERNAL_FIELDS_INTERP_XZ(
508       O       OBSptr (1-Olx,1,1,1,iTracer),       O       OBSptr (1-Olx,1,1,1,iTracer),
509       I       OBSptr0(1-Olx,1,1,1,iTracer),       I       OBSptr0(1-Olx,1,1,1,iTracer),
510       I       OBSptr1(1-Olx,1,1,1,iTracer), aWght, bWght, myThid )       I       OBSptr1(1-Olx,1,1,1,iTracer), aWght, bWght, myThid )
511  # endif /* ALLOW_OBCS_SOUTH */  # endif /* ALLOW_OBCS_SOUTH */
512  C     end do iTracer  C     end do iTracer
# Line 514  CML      ENDIF Line 523  CML      ENDIF
523  CBOP  CBOP
524  C     !ROUTINE: OBCS_EXTERNAL_FIELDS_INTERP_XZ  C     !ROUTINE: OBCS_EXTERNAL_FIELDS_INTERP_XZ
525  C     !INTERFACE:  C     !INTERFACE:
526        SUBROUTINE OBCS_EXTERNAL_FIELDS_INTERP_XZ(        SUBROUTINE OBCS_EXTERNAL_FIELDS_INTERP_XZ(
527       O     fld,       O     fld,
528       I     fld0, fld1, aWght, bWght, myThid )       I     fld0, fld1, aWght, bWght, myThid )
529  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
530  C     *==========================================================*  C     *==========================================================*
531  C     | SUBROUTINE OBCS_EXTERNAL_FIELDS_INTERP_XZ                        C     | SUBROUTINE OBCS_EXTERNAL_FIELDS_INTERP_XZ
532  C     | o Interpolate between to records  C     | o Interpolate between to records
533  C     *==========================================================*  C     *==========================================================*
534  C     \ev  C     \ev
# Line 530  C     === Global variables === Line 539  C     === Global variables ===
539  #include "SIZE.h"  #include "SIZE.h"
540  #include "EEPARAMS.h"  #include "EEPARAMS.h"
541  #include "PARAMS.h"  #include "PARAMS.h"
542    
543  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
544  C     === Routine arguments ===  C     === Routine arguments ===
545  C     myThid - Thread no. that called this routine.  C     myThid - Thread no. that called this routine.
# Line 550  CEOP Line 559  CEOP
559          DO bi = myBxLo(myThid), myBxHi(myThid)          DO bi = myBxLo(myThid), myBxHi(myThid)
560           DO K = 1, Nr           DO K = 1, Nr
561            DO i=1-Olx,sNx+Olx            DO i=1-Olx,sNx+Olx
562             fld(i,k,bi,bj)   = bWght*fld0(i,k,bi,bj)               fld(i,k,bi,bj)   = bWght*fld0(i,k,bi,bj)
563       &                       +aWght*fld1(i,k,bi,bj)       &                       +aWght*fld1(i,k,bi,bj)
564            ENDDO            ENDDO
565           ENDDO           ENDDO
# Line 562  CEOP Line 571  CEOP
571  CBOP  CBOP
572  C     !ROUTINE: OBCS_EXTERNAL_FIELDS_INTERP_YZ  C     !ROUTINE: OBCS_EXTERNAL_FIELDS_INTERP_YZ
573  C     !INTERFACE:  C     !INTERFACE:
574        SUBROUTINE OBCS_EXTERNAL_FIELDS_INTERP_YZ(        SUBROUTINE OBCS_EXTERNAL_FIELDS_INTERP_YZ(
575       O     fld,       O     fld,
576       I     fld0, fld1, aWght, bWght, myThid )       I     fld0, fld1, aWght, bWght, myThid )
577  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
578  C     *==========================================================*  C     *==========================================================*
579  C     | SUBROUTINE OBCS_EXTERNAL_FIELDS_INTERP_YZ                        C     | SUBROUTINE OBCS_EXTERNAL_FIELDS_INTERP_YZ
580  C     | o Interpolate between to records  C     | o Interpolate between to records
581  C     *==========================================================*  C     *==========================================================*
582  C     \ev  C     \ev
# Line 578  C     === Global variables === Line 587  C     === Global variables ===
587  #include "SIZE.h"  #include "SIZE.h"
588  #include "EEPARAMS.h"  #include "EEPARAMS.h"
589  #include "PARAMS.h"  #include "PARAMS.h"
590    
591  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
592  C     === Routine arguments ===  C     === Routine arguments ===
593  C     myThid - Thread no. that called this routine.  C     myThid - Thread no. that called this routine.
# Line 598  CEOP Line 607  CEOP
607          DO bi = myBxLo(myThid), myBxHi(myThid)          DO bi = myBxLo(myThid), myBxHi(myThid)
608           DO K = 1, Nr           DO K = 1, Nr
609            DO j=1-Oly,sNy+Oly            DO j=1-Oly,sNy+Oly
610             fld(j,k,bi,bj)   = bWght*fld0(j,k,bi,bj)               fld(j,k,bi,bj)   = bWght*fld0(j,k,bi,bj)
611       &                       +aWght*fld1(j,k,bi,bj)       &                       +aWght*fld1(j,k,bi,bj)
612            ENDDO            ENDDO
613           ENDDO           ENDDO

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

  ViewVC Help
Powered by ViewVC 1.1.22