C $Header: /u/gcmpack/MITgcm/pkg/exf/exf_init_fixed.F,v 1.15 2010/05/12 01:08:14 dimitri Exp $
C $Name: $
#include "EXF_OPTIONS.h"
#ifdef ALLOW_OBCS
# include "OBCS_OPTIONS.h"
#endif
CBOP
C !ROUTINE: EXF_INIT_FIXED
C !INTERFACE:
SUBROUTINE EXF_INIT_FIXED( myThid )
C !DESCRIPTION: \bv
C *==========================================================*
C | SUBROUTINE EXF_INIT_FIXED
C | o Routine to initialize EXF variables
C | that are kept fixed during the run.
C *==========================================================*
C \ev
C !USES:
IMPLICIT NONE
C === Global variables ===
#include "EEPARAMS.h"
#include "SIZE.h"
#include "PARAMS.h"
#include "cal.h"
#include "EXF_PARAM.h"
#include "EXF_CONSTANTS.h"
#ifdef ALLOW_ICEFRONT
# include "ICEFRONT_OPTIONS.h"
# include "ICEFRONT.h"
#endif
#ifdef ALLOW_OBCS
# include "OBCS.h"
#endif
C !INPUT/OUTPUT PARAMETERS:
C === Routine arguments ===
C myThid :: my Thread Id number
INTEGER myThid
CEOP
C !LOCAL VARIABLES:
C === Local variables ===
INTEGER date_array(4), difftime(4), yearStartDate(4)
c Complete the start date specifications for the forcing
c fields to get a complete calendar date array.
c FLDstartdate, for FLD = { uwind, vwind, wspeed, etc. },
c returns time in seconds of first FLD record from the
c beginning of the model integration or, if useYearlyFields,
c from the beginning of the year.
_BEGIN_MASTER( myThid )
#ifdef ALLOW_ATM_WIND
IF ( uwindfile .NE. ' ' .AND. uwindperiod .GT. 0. ) THEN
CALL CAL_FULLDATE ( uwindstartdate1, uwindstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, uwindstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, uwindstartdate ,myThid)
uwindstartdate = modelstart + uwindstartdate
ENDIF
ENDIF
IF ( vwindfile .NE. ' ' .AND. vwindperiod .GT. 0. ) THEN
CALL CAL_FULLDATE ( vwindstartdate1, vwindstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, vwindstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, vwindstartdate ,myThid)
vwindstartdate = modelstart + vwindstartdate
ENDIF
ENDIF
#endif /* ALLOW_ATM_WIND */
IF ( wspeedfile .NE. ' ' .AND. wspeedperiod .GT. 0. ) THEN
CALL CAL_FULLDATE ( wspeedstartdate1, wspeedstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, wspeedstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, wspeedstartdate ,myThid)
wspeedstartdate = modelstart + wspeedstartdate
ENDIF
ENDIF
IF ( ustressfile .NE. ' ' .AND. ustressperiod .GT. 0. ) THEN
CALL CAL_FULLDATE ( ustressstartdate1, ustressstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, ustressstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, ustressstartdate ,myThid)
ustressstartdate = modelstart + ustressstartdate
ENDIF
ENDIF
IF ( vstressfile .NE. ' ' .AND. vstressperiod .GT. 0. ) THEN
CALL CAL_FULLDATE ( vstressstartdate1, vstressstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, vstressstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, vstressstartdate ,myThid)
vstressstartdate = modelstart + vstressstartdate
ENDIF
ENDIF
#ifdef ALLOW_ATM_TEMP
IF ( atempfile .NE. ' ' .AND. atempperiod .GT. 0. ) THEN
CALL CAL_FULLDATE ( atempstartdate1, atempstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, atempstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, atempstartdate ,myThid)
atempstartdate = modelstart + atempstartdate
ENDIF
ENDIF
IF ( aqhfile .NE. ' ' .AND. aqhperiod .GT. 0. ) THEN
CALL CAL_FULLDATE ( aqhstartdate1, aqhstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, aqhstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, aqhstartdate ,myThid)
aqhstartdate = modelstart + aqhstartdate
ENDIF
ENDIF
IF ( lwfluxfile .NE. ' ' .AND. lwfluxperiod .GT. 0. ) THEN
CALL CAL_FULLDATE ( lwfluxstartdate1, lwfluxstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, lwfluxstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, lwfluxstartdate ,myThid)
lwfluxstartdate = modelstart + lwfluxstartdate
ENDIF
ENDIF
IF ( precipfile .NE. ' ' .AND. precipperiod .GT. 0. ) THEN
CALL CAL_FULLDATE ( precipstartdate1, precipstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, precipstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, precipstartdate ,myThid)
precipstartdate = modelstart + precipstartdate
ENDIF
ENDIF
IF ( snowprecipfile .NE. ' ' .AND. snowprecipperiod .GT. 0. ) THEN
CALL CAL_FULLDATE( snowprecipstartdate1, snowprecipstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, snowprecipstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, snowprecipstartdate ,myThid)
snowprecipstartdate=modelstart + snowprecipstartdate
ENDIF
ENDIF
#else /* ifndef ALLOW_ATM_TEMP */
IF ( hfluxfile .NE. ' ' .AND. hfluxperiod .GT. 0. ) THEN
CALL CAL_FULLDATE ( hfluxstartdate1, hfluxstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, hfluxstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, hfluxstartdate ,myThid)
hfluxstartdate = modelstart + hfluxstartdate
ENDIF
ENDIF
IF ( sfluxfile .NE. ' ' .AND. sfluxperiod .GT. 0. ) THEN
CALL CAL_FULLDATE ( sfluxstartdate1, sfluxstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, sfluxstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, sfluxstartdate ,myThid)
sfluxstartdate = modelstart + sfluxstartdate
ENDIF
ENDIF
#endif /* ALLOW_ATM_TEMP */
#if defined(ALLOW_ATM_TEMP) defined(SHORTWAVE_HEATING)
IF ( swfluxfile .NE. ' ' .AND. swfluxperiod .GT. 0. ) THEN
CALL CAL_FULLDATE ( swfluxstartdate1, swfluxstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, swfluxstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, swfluxstartdate ,myThid)
swfluxstartdate = modelstart + swfluxstartdate
ENDIF
ENDIF
#endif /* defined(ALLOW_ATM_TEMP) || defined(SHORTWAVE_HEATING) */
#ifdef EXF_READ_EVAP
IF ( evapfile .NE. ' ' .AND. evapperiod .GT. 0. ) THEN
CALL CAL_FULLDATE ( evapstartdate1, evapstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, evapstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, evapstartdate ,myThid)
evapstartdate = modelstart + evapstartdate
ENDIF
ENDIF
#endif /* EXF_READ_EVAP */
#ifdef ALLOW_RUNOFF
IF ( runofffile .NE. ' ' .AND. runoffperiod .GT. 0. ) THEN
CALL CAL_FULLDATE ( runoffstartdate1, runoffstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, runoffstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, runoffstartdate ,myThid)
runoffstartdate = modelstart + runoffstartdate
ENDIF
ENDIF
#endif /* ALLOW_RUNOFF */
#ifdef ALLOW_ICEFRONT
IF ( sgrunofffile .NE. ' ' .AND. sgrunoffperiod .GT. 0. ) THEN
CALL CAL_FULLDATE ( sgrunoffstartdate1, sgrunoffstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, sgrunoffstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, sgrunoffstartdate ,myThid)
sgrunoffstartdate = modelstart + sgrunoffstartdate
ENDIF
ENDIF
#endif /* ALLOW_ICEFRONT */
#ifdef ALLOW_DOWNWARD_RADIATION
IF ( swdownfile .NE. ' ' .AND. swdownperiod .GT. 0. ) THEN
CALL CAL_FULLDATE ( swdownstartdate1, swdownstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, swdownstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, swdownstartdate ,myThid)
swdownstartdate = modelstart + swdownstartdate
ENDIF
ENDIF
IF ( lwdownfile .NE. ' ' .AND. lwdownperiod .GT. 0. ) THEN
CALL CAL_FULLDATE ( lwdownstartdate1, lwdownstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, lwdownstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, lwdownstartdate ,myThid)
lwdownstartdate = modelstart + lwdownstartdate
ENDIF
ENDIF
#endif /* ALLOW_DOWNWARD_RADIATION */
#ifdef ATMOSPHERIC_LOADING
IF ( apressurefile .NE. ' ' .AND. apressureperiod .GT. 0. ) THEN
CALL CAL_FULLDATE ( apressurestartdate1, apressurestartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, apressurestartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, apressurestartdate ,myThid)
apressurestartdate= modelstart + apressurestartdate
ENDIF
ENDIF
#endif /* ATMOSPHERIC_LOADING */
#ifdef ALLOW_ICE_AREAMASK
IF ( areamaskfile .NE. ' ' .AND. areamaskperiod .GT. 0. ) THEN
CALL CAL_FULLDATE ( areamaskstartdate1, areamaskstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, areamaskstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, areamaskstartdate ,myThid)
areamaskstartdate= modelstart + areamaskstartdate
ENDIF
ENDIF
#endif /* ALLOW_ICE_AREAMASK */
#ifdef ALLOW_OBCS
# ifdef ALLOW_OBCS_NORTH
IF ( obcsNperiod .GT. 0 ) THEN
CALL CAL_FULLDATE ( obcsNstartdate1, obcsNstartdate2,
& date_array, myThid )
IF ( useOBCSYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, obcsNstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, obcsNstartdate ,myThid)
obcsNstartdate = modelstart + obcsNstartdate
ENDIF
ENDIF
# endif /* ALLOW_OBCS_NORTH */
# ifdef ALLOW_OBCS_SOUTH
IF ( obcsSperiod .GT. 0 ) THEN
CALL CAL_FULLDATE ( obcsSstartdate1, obcsSstartdate2,
& date_array, myThid )
IF ( useOBCSYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, obcsSstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, obcsSstartdate ,myThid)
obcsSstartdate = modelstart + obcsSstartdate
ENDIF
ENDIF
# endif /* ALLOW_OBCS_SOUTH */
# ifdef ALLOW_OBCS_EAST
IF ( obcsEperiod .GT. 0 ) THEN
CALL CAL_FULLDATE ( obcsEstartdate1, obcsEstartdate2,
& date_array, myThid )
IF ( useOBCSYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, obcsEstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, obcsEstartdate ,myThid)
obcsEstartdate = modelstart + obcsEstartdate
ENDIF
ENDIF
# endif /* ALLOW_OBCS_EAST */
# ifdef ALLOW_OBCS_WEST
IF ( obcsWperiod .GT. 0 ) THEN
CALL CAL_FULLDATE ( obcsWstartdate1, obcsWstartdate2,
& date_array, myThid )
IF ( useOBCSYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, obcsWstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, obcsWstartdate ,myThid)
obcsWstartdate = modelstart + obcsWstartdate
ENDIF
ENDIF
# endif /* ALLOW_OBCS_WEST */
# ifdef ALLOW_SEAICE
# ifdef ALLOW_OBCS_NORTH
IF ( siobNperiod .GT. 0 ) THEN
CALL CAL_FULLDATE ( siobNstartdate1, siobNstartdate2,
& date_array, myThid )
IF ( useOBCSYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, siobNstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, siobNstartdate ,myThid)
siobNstartdate = modelstart + siobNstartdate
ENDIF
ENDIF
# endif /* ALLOW_OBCS_NORTH */
# ifdef ALLOW_OBCS_SOUTH
IF ( siobSperiod .GT. 0 ) THEN
CALL CAL_FULLDATE ( siobSstartdate1, siobSstartdate2,
& date_array, myThid )
IF ( useOBCSYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, siobSstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, siobSstartdate ,myThid)
siobSstartdate = modelstart + siobSstartdate
ENDIF
ENDIF
# endif /* ALLOW_OBCS_SOUTH */
# ifdef ALLOW_OBCS_EAST
IF ( siobEperiod .GT. 0 ) THEN
CALL CAL_FULLDATE ( siobEstartdate1, siobEstartdate2,
& date_array, myThid )
IF ( useOBCSYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, siobEstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, siobEstartdate ,myThid)
siobEstartdate = modelstart + siobEstartdate
ENDIF
ENDIF
# endif /* ALLOW_OBCS_EAST */
# ifdef ALLOW_OBCS_WEST
IF ( siobWperiod .GT. 0 ) THEN
CALL CAL_FULLDATE ( siobWstartdate1, siobWstartdate2,
& date_array, myThid )
IF ( useOBCSYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, siobWstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS ( difftime, siobWstartdate ,myThid)
siobWstartdate = modelstart + siobWstartdate
ENDIF
ENDIF
# endif /* ALLOW_OBCS_WEST */
# endif /* ALLOW_SEAICE */
#endif /* ALLOW_OBCS */
#ifdef ALLOW_CLIMSST_RELAXATION
IF ( climsstfile .NE. ' ' .AND. climsstperiod .GT. 0. ) THEN
CALL CAL_FULLDATE( climsststartdate1, climsststartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS (difftime, climsststartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS (difftime, climsststartdate ,myThid)
climsststartdate = modelstart + climsststartdate
ENDIF
ENDIF
#endif /* ALLOW_CLIMSST_RELAXATION */
#ifdef ALLOW_CLIMSSS_RELAXATION
IF ( climsssfile .NE. ' ' .AND. climsssperiod .GT. 0. ) THEN
CALL CAL_FULLDATE( climsssstartdate1, climsssstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS (difftime, climsssstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS (difftime, climsssstartdate ,myThid)
climsssstartdate = modelstart + climsssstartdate
ENDIF
ENDIF
#endif /* ALLOW_CLIMSSS_RELAXATION */
#ifdef ALLOW_CLIMSTRESS_RELAXATION
IF ( climustrfile .NE. ' ' .AND. climustrperiod .GT. 0. ) THEN
CALL CAL_FULLDATE( climustrstartdate1, climustrstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS (difftime, climustrstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS (difftime, climustrstartdate ,myThid)
climustrstartdate = modelstart + climustrstartdate
ENDIF
ENDIF
c
IF ( climvstrfile .NE. ' ' .AND. climvstrperiod .GT. 0. ) THEN
CALL CAL_FULLDATE( climvstrstartdate1, climvstrstartdate2,
& date_array, myThid )
IF ( useExfYearlyFields ) THEN
yearStartDate(1) = int(date_array(1)/10000.) * 10000 + 101
yearStartDate(2) = 0
yearStartDate(3) = date_array(3)
yearStartDate(4) = date_array(4)
CALL CAL_TIMEPASSED( yearStartDate,date_array,difftime,myThid)
CALL CAL_TOSECONDS (difftime, climvstrstartdate ,myThid)
ELSE
CALL CAL_TIMEPASSED(modelstartdate,date_array,difftime,myThid)
CALL CAL_TOSECONDS (difftime, climvstrstartdate ,myThid)
climvstrstartdate = modelstart + climvstrstartdate
ENDIF
ENDIF
#endif /* ALLOW_CLIMSTRESS_RELAXATION */
_END_MASTER( myThid )
_BARRIER
#if defined(ALLOW_ZENITHANGLE) defined(SHORTWAVE_HEATING)
IF ( useExfZenAlbedo .OR. useExfZenIncoming ) THEN
CALL EXF_ZENITHANGLE_TABLE(myThid)
ENDIF
#endif
C-- Summarize the External forcing setup.
CALL EXF_SUMMARY( myThid )
#ifdef ALLOW_DIAGNOSTICS
IF ( useDiagnostics ) THEN
CALL EXF_DIAGNOSTICS_INIT( myThid )
ENDIF
#endif
RETURN
END