MODULE flxmod !!====================================================================== !! *** MODULE flxmod *** !! Ocean forcing: thermohaline forcing of the ocean !!===================================================================== !! * Modules used USE oce ! ocean dynamics and tracers USE dom_oce ! ocean space and time domain USE phycst ! physical constants USE in_out_manager ! I/O manager USE lib_mpp ! distribued memory computing library USE lbclnk ! ocean lateral boundary conditions (or mpp link) USE daymod ! calendar USE ocfzpt ! ocean freezing point IMPLICIT NONE PRIVATE !! * Routine accessibility PUBLIC flx ! routine called by step.F90 !! * Substitutions # include "domzgr_substitute.h90" !!---------------------------------------------------------------------- !! OPA 9.0 , LODYC-IPSL (2003) !!---------------------------------------------------------------------- #if defined key_flx_bulk_monthly # if defined key_fdir !!---------------------------------------------------------------------- !! 'key_flx_bulk_monthly' and MONTHLY bulk !! 'key_fdir' direct access file !!---------------------------------------------------------------------- # include "flx_bulk_monthly_fdir.h90" # else !!---------------------------------------------------------------------- !! 'key_flx_bulk_monthly' and MONTHLY bulk !! Default option Net CDF file !!---------------------------------------------------------------------- # include "flx_bulk_monthly.h90" # endif #elif defined key_flx_bulk_daily !!---------------------------------------------------------------------- !! 'key_flx_bulk_daily' DAILY bulk !! Net CDF file !!---------------------------------------------------------------------- # include "flx_bulk_daily.h90" #elif defined key_flx_forced_daily !!---------------------------------------------------------------------- !! 'key_flx_forced_daily' DAILY fluxes !! Net CDF file !!---------------------------------------------------------------------- # include "flx_forced_daily.h90" #elif defined key_coupled # if defined key_ice_lim !!---------------------------------------------------------------------- !! 'key_coupled' and Coupled Ocan/Atmosphere !! 'key_ice_lim' with LIM sea-ice model !!---------------------------------------------------------------------- # include "flx_coupled_ice.h90" # else !!---------------------------------------------------------------------- !! 'key_flx_coupled' and Coupled Ocan/Atmosphere !! Default option without sea-ice model !!---------------------------------------------------------------------- # include "flx_coupled_noice.h90" # endif #else !!---------------------------------------------------------------------- !! Default option Analytical forcing !!---------------------------------------------------------------------- !! flx : define the thermohaline fluxes for the ocean !!---------------------------------------------------------------------- !! * Module used !!---------------------------------------------------------------------- CONTAINS SUBROUTINE flx ( kt ) !!--------------------------------------------------------------------- !! *** ROUTINE flx *** !! !! ** Purpose : provide the thermohaline fluxes (heat and freshwater) !! to the ocean at each time step. !! !! ** Method : Constant surface fluxes (read in namelist (namflx)) !! !! ** Action : - q, qt, qsr, emp, emps, qrp, erp !! !! History : !! ! 91-03 () Original code !! 8.5 ! 02-09 (G. Madec) F90: Free form and module !!---------------------------------------------------------------------- !! * Modules used USE flxrnf ! ocean runoffs !! * arguments INTEGER, INTENT( in ) :: kt ! ocean time step !! * local declarations REAL(wp) :: & !!! surface fluxes namelist (namflx) q0 = 0.e0, & ! net heat flux qsr0 = 0.e0, & ! solar heat flux emp0 = 0.e0 ! net freshwater flux NAMELIST/namflx/ q0, qsr0, emp0 !!--------------------------------------------------------------------- IF( kt == nit000 ) THEN ! Read Namelist namflx : surface thermohaline fluxes ! -------------------- REWIND ( numnam ) READ ( numnam, namflx ) IF(lwp) WRITE(numout,*)' ' IF(lwp) WRITE(numout,*)' flx : Constant surface fluxes read in namelist' IF(lwp) WRITE(numout,*)' ~~~~~~~ ' IF(lwp) WRITE(numout,*)' : See the routine ocesbc' ENDIF END SUBROUTINE flx #endif !!====================================================================== END MODULE flxmod