C $Header: /u/gcmpack/MITgcm/pkg/obcs/obcs_prescribe_read.F,v 1.6 2004/10/19 17:52:03 adcroft Exp $ C $Name: $ # include "OBCS_OPTIONS.h" subroutine OBCS_PRESCRIBE_READ ( I mycurrenttime I , mycurrentiter I , mythid & ) c |==================================================================| c | SUBROUTINE obcs_prescribe_read | c |==================================================================| c | read open boundary conditions from file | c | N.B.: * uses exf and cal routines for file/record handling | c | * uses ctrl routines for control variable handling | c |==================================================================| implicit none c == global variables == #include "EEPARAMS.h" #include "SIZE.h" #include "GRID.h" #include "OBCS.h" #ifdef ALLOW_EXF # include "exf_param.h" #endif c == routine arguments == _RL mycurrenttime integer mycurrentiter integer mythid #if (defined (ALLOW_OBCS) defined (ALLOW_OBCS_PRESCRIBE)) c == local variables == logical first, changed integer count0, count1 integer year0, year1 _RL fac c == end of interface == #ifdef ALLOW_EXF #ifdef ALLOW_OBCS_NORTH call EXF_GETFFIELDREC( I obcsNstartdate, obcsNperiod I , obcsNstartdate1, obcsNstartdate2 I , .false. O , fac, first, changed O , count0, count1, year0, year1 I , mycurrenttime, mycurrentiter, mythid & ) call EXF_SET_OBCS_XZ( OBNu, OBNu0, OBNu1, OBNufile, 'u' I , fac, first, changed, count0, count1 I , mycurrenttime, mycurrentiter, mythid ) call EXF_SET_OBCS_XZ( OBNv, OBNv0, OBNv1, OBNvfile, 'v' I , fac, first, changed, count0, count1 I , mycurrenttime, mycurrentiter, mythid ) call EXF_SET_OBCS_XZ( OBNt, OBNt0, OBNt1, OBNtfile, 's' I , fac, first, changed, count0, count1 I , mycurrenttime, mycurrentiter, mythid ) call EXF_SET_OBCS_XZ( OBNs, OBNs0, OBNs1, OBNsfile, 's' I , fac, first, changed, count0, count1 I , mycurrenttime, mycurrentiter, mythid ) #endif #ifdef ALLOW_OBCS_SOUTH call EXF_GETFFIELDREC( I obcsSstartdate, obcsSperiod I , obcsSstartdate1, obcsSstartdate2 I , .false. O , fac, first, changed O , count0, count1, year0, year1 I , mycurrenttime, mycurrentiter, mythid & ) call EXF_SET_OBCS_XZ( OBSu, OBSu0, OBSu1, OBSufile, 'u' I , fac, first, changed, count0, count1 I , mycurrenttime, mycurrentiter, mythid ) call EXF_SET_OBCS_XZ( OBSv, OBSv0, OBSv1, OBSvfile, 'v' I , fac, first, changed, count0, count1 I , mycurrenttime, mycurrentiter, mythid ) call EXF_SET_OBCS_XZ( OBSt, OBSt0, OBSt1, OBStfile, 's' I , fac, first, changed, count0, count1 I , mycurrenttime, mycurrentiter, mythid ) call EXF_SET_OBCS_XZ( OBSs, OBSs0, OBSs1, OBSsfile, 's' I , fac, first, changed, count0, count1 I , mycurrenttime, mycurrentiter, mythid ) #endif #ifdef ALLOW_OBCS_EAST call EXF_GETFFIELDREC( I obcsEstartdate, obcsEperiod I , obcsEstartdate1, obcsEstartdate2 I , .false. O , fac, first, changed O , count0, count1, year0, year1 I , mycurrenttime, mycurrentiter, mythid & ) call EXF_SET_OBCS_YZ( OBEu, OBEu0, OBEu1, OBEufile, 'u' I , fac, first, changed, count0, count1 I , mycurrenttime, mycurrentiter, mythid ) call EXF_SET_OBCS_YZ( OBEv, OBEv0, OBEv1, OBEvfile, 'v' I , fac, first, changed, count0, count1 I , mycurrenttime, mycurrentiter, mythid ) call EXF_SET_OBCS_YZ( OBEt, OBEt0, OBEt1, OBEtfile, 's' I , fac, first, changed, count0, count1 I , mycurrenttime, mycurrentiter, mythid ) call EXF_SET_OBCS_YZ( OBEs, OBEs0, OBEs1, OBEsfile, 's' I , fac, first, changed, count0, count1 I , mycurrenttime, mycurrentiter, mythid ) #endif #ifdef ALLOW_OBCS_WEST call EXF_GETFFIELDREC( I obcsWstartdate, obcsWperiod I , obcsWstartdate1, obcsWstartdate2 I , .false. O , fac, first, changed O , count0, count1, year0, year1 I , mycurrenttime, mycurrentiter, mythid & ) call EXF_SET_OBCS_YZ( OBWu, OBWu0, OBWu1, OBWufile, 'u' I , fac, first, changed, count0, count1 I , mycurrenttime, mycurrentiter, mythid ) call EXF_SET_OBCS_YZ( OBWv, OBWv0, OBWv1, OBWvfile, 'v' I , fac, first, changed, count0, count1 I , mycurrenttime, mycurrentiter, mythid ) call EXF_SET_OBCS_YZ( OBWt, OBWt0, OBWt1, OBWtfile, 's' I , fac, first, changed, count0, count1 I , mycurrenttime, mycurrentiter, mythid ) call EXF_SET_OBCS_YZ( OBWs, OBWs0, OBWs1, OBWsfile, 's' I , fac, first, changed, count0, count1 I , mycurrenttime, mycurrentiter, mythid ) #endif #ifdef ALLOW_OBCS_CONTROL cgg WARNING: Assuming North Open Boundary exists and has same cgg calendar information as other boundaries. call CTRL_OBCSBAL ( mycurrenttime,mycurrentiter,mythid ) #endif #ifdef ALLOW_OBCSN_CONTROL call CTRL_GETOBCSN ( mycurrenttime, mycurrentiter, mythid ) #endif #ifdef ALLOW_OBCSS_CONTROL call CTRL_GETOBCSS ( mycurrenttime, mycurrentiter, mythid ) #endif #ifdef ALLOW_OBCSW_CONTROL call CTRL_GETOBCSW ( mycurrenttime, mycurrentiter, mythid ) #endif #ifdef ALLOW_OBCSE_CONTROL call CTRL_GETOBCSE ( mycurrenttime, mycurrentiter, mythid ) #endif #else /* not ALLOW_EXF */ CALL OBCS_EXTERNAL_FIELDS_LOAD( & myCurrentTime, myCurrentIter, myThid ) #endif /* ALLOw_EXF */ #endif /* ALLOW_OBCS */ RETURN END