subroutine fizhi_alarms (nymdb,nhmsb,ndt) 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,ndt c MPI Utilities c ------------- #ifdef ALLOW_USE_MPI include 'mpif.h' #endif integer myid,ierror c Physics Frequencies c ------------------- integer nhmsf, m,n, nd integer ndlw, ndsw, ndturb, ndmoist #ifdef ALLOW_USE_MPI call mpi_comm_rank ( mpi_comm_world,myid,ierror ) #else myid = 0 #endif if( ndt.ne.0 ) then ndlw = 030000 ! Longwave Radiation Frequency ndsw = 010000 ! Shortwave Radiation Frequency 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.0 ) 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.0 ) 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 --------------------------------------- ndlw = 000001 ! Longwave Radiation Frequency ndsw = 000001 ! Shortwave Radiation Frequency ndturb = 000001 ! Turbulence Frequency ndmoist = 000001 ! Moist Processes Frequency 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 ) return end