C $Header: /u/gcmpack/MITgcm/pkg/fizhi/fizhi_alarms.F,v 1.13 2009/04/01 19:55:07 jmc Exp $ C $Name: $ #include "FIZHI_OPTIONS.h" subroutine FIZHI_ALARMS (nymdb,nhmsb,deltaT) C*********************************************************************** C Purpose C ------- C Driver to Set Internal Model Alarms C C Argument Description C -------------------- C nymdb ..... Begining Date to Start Alarm Clock C nhmsb ..... Begining Time to Start Alarm Clock C ndt ....... Model Timestep C C Note: For ndt = 0, all Intermal Model Alarms are set to 1 second C C*********************************************************************** implicit none c Input Parameters c ---------------- integer nymdb,nhmsb _RL deltaT integer myid c Physics Frequencies c ------------------- integer ndt integer nhmsf, m,n, nd integer ndlw, ndsw, ndturb, ndmoist myid = 1 ndt = deltaT if( ndt.ne.0 ) then C Longwave Radiation Frequency ndlw = 003000 C Shortwave Radiation Frequency ndsw = 003000 c Turbulence c ---------- ndturb = 2*int( max(1.0,(300./iabs(ndt)+0.5)/2) ) * iabs(ndt) n = 1 m = -1 nd = ndturb do while ( mod(3*3600,nd).ne.0 ) nd = ndturb + 2*n*m*ndt m = -m n = n+1 if( nd.lt.ndt ) then if( myid.eq.1 ) then print * print *, 'Turbulence cannot occur with Model Timestep = ',ndt print * endif call MY_FINALIZE call MY_EXIT (101) endif enddo ndturb = nhmsf( nd ) c Moist Processes c --------------- ndmoist = int( 600./iabs(ndt) + 0.5 ) * iabs(ndt) n = 1 m = -1 nd = ndmoist do while ( mod(3*3600,nd).ne.0 ) nd = ndmoist + n*m*ndt m = -m n = n+1 if( nd.lt.ndt ) then if( myid.eq.1 ) then print * print *, 'Convection cannot occur with Model Timestep = ',ndt print * endif call MY_FINALIZE call MY_EXIT (101) endif enddo ndmoist = nhmsf( nd ) else c For NDT = 0, all Alarms set to 1 second c --------------------------------------- C Longwave Radiation Frequency ndlw = 000001 C Shortwave Radiation Frequency ndsw = 000001 C Turbulence Frequency ndturb = 000001 C Moist Processes Frequency ndmoist = 000001 endif c Set Alarm Clocks c ---------------- call SET_ALARM ( 'radsw',nymdb,nhmsb,ndsw ) call SET_ALARM ( 'radlw',nymdb,nhmsb,ndlw ) call SET_ALARM ( 'turb' ,nymdb,nhmsb,ndturb ) call SET_ALARM ( 'moist',nymdb,nhmsb,ndmoist ) call SET_ALARM ( 'pnt',nymdb,nhmsb,0 ) return end