\clearpage \section{Sea ice and ocean modules} This section describes the modules that represent sea ice and ocean and the necessary interfaces between these modules and the atmospheric modules. Conceptually, the sea ice model lies inbetween the atmosphere model and the ocean model. Thus, the PUMA main part and the ocean model are both coupled to the sea ice model, but not directly to each other. The sea ice model decides whether a given gridpoint is covered with ice or not, in the latter case, it merely functions as passing the ocean fluxes to the atmosphere and vice versa. The parameters that are exchanged are listed in Table \ref{eiscpltab}. The sea ice and ocean model use a time step of one day. Thus, atmospheric coupling to the sea ice model is performed every 32 time steps, while the sea ice and ocean model are coupled every time step. The coupling scheme is shown in Fig.\ \ref{couplefig}. Fig.\ \ref{pumaflowfig} shows how the subroutines are placed when no external coupler is used. \begin{table}[h] \begin{tabular}{lcc} \hline Parameter & Atmosphere $\leftarrow \, \rightarrow$ Ice & Ice $\leftarrow \, \rightarrow$ Ocean \\ \hline Ice cover & $\leftarrow$ & $-$ \\ Ice thickness & $\leftarrow$ & $\rightarrow$ \\ Snow thickness & $\leftarrow$ & $\rightarrow$ \\ Surface temperature & $\leftarrow$ & $\leftarrow$ \\ Deep sea temperature & $-$ & $\leftarrow$ \\ Mixed layer depth & $-$ & $\leftarrow$ \\ Net precipitation, runoff & $\rightarrow$ & $\rightarrow$ \\ Salinity & $-$ & $\leftarrow$ \\ Melt and freeze volume & $-$ & $\rightarrow$ \\ Heat fluxes & $\rightarrow$ & $\rightarrow$ \\ d(Heat fluxes)/dT & $\rightarrow$ & $-$ \\ Radiation & $\rightarrow$ & $-$ \\ Wind stress & $\rightarrow$ & $\rightarrow$ \\ \hline \end{tabular} \caption[]{Parameters to be exchanged between models. Arrows denote the direction in which the parameter is passed, e.g. the atmosphere receives ice cover information from the ice model.} \label{eiscpltab} \end{table} \begin{figure}[p] \vspace{-2cm} \includegraphics[width={14cm}]{Pics/modules_icemod_couple} \caption[]{Schematic illustration of the model coupling.} \label{couplefig} \end{figure} \begin{figure}[p] \vspace{-2cm} \includegraphics[width={14cm}]{Pics/modules_icemod_pumaflow} \caption[]{Subroutine flow when no external coupler is used.} \label{pumaflowfig} \end{figure} %---------------------------------------------------------------------------- \clearpage \begin{center} \begin{tabular}{|p{14cm}|} \hline \vspace{-5mm} \section{icemod.f90} \vspace{-5mm} \\ \hline \vspace{1mm} {\bf General} The module {\module icemod.f90} contains subroutines to compute sea ice cover and thickness. The interface to the main PLASIM module is given by the subroutine {\sub icestep}, which is called by {\sub cplexchange\verb#_#ice} (defined in {\module intermod\verb#_#atm.f90}), which is called by {\sub seastep} (defined in {\module seamod.f90}). \vspace{3mm} \\ \hline \vspace{1mm} {\bf Input/Output} {\module icemod.f90} requires the file {\file ice\verb#_#flxcor} if NFLXCORR is set to a negative value. If NOUTPUT is set to 1, the output files {\file fort.75} containing global fields of ice model data and the file {\file fort.76} containing diagnostic ice data are produced (for details, see the reference manual). Both output files are in service format. The module is controlled by the namelist {\nam icepar} in the file {\file ice\verb#_#namelist}. \vspace{1mm} \\ \begin{tabular}{p{3cm} p{2cm} p{6cm} p{2cm}} Parameter & Type & Purpose & default \\ NDIAG & INTEGER & Diagnostic output every NDIAG time steps & 160 \\ NOUT & INTEGER & Model data output every NOUT time steps & 32 \\ NOUTPUT & INTEGER & Icemodel output (0=no,1=yes) & 1 \\ NFLXCORR & INTEGER & Time constant for restoring $(>0)$, no flux correction $(=0)$, use fluxcorrection from file $(<0)$ & $360\,d$ \\ \end{tabular} \vspace{3mm} \\ \hline \vspace{2mm} {\bf Structure} {\module icemod.f90} uses the module {\modu icemod} which is not dependent on the module {\modu pumamod}. Subroutine {\sub iceini} reads the namelist and, when required, the flux correction from the file {\file ice\verb#_#flxcor}. Subroutine {\sub icestep} calls {\sub cplexchange\verb#_#atmos} (defined in {\module intermod\verb#_#ice}) to get the atmospheric forcing fields. If the {\nam sea\verb#_#namelist} parameter NICE is set to 1, the subroutine {\sub subice} is called, which calculates ice cover and thickness. Otherwise, climatological data, interpolated to the current time step by {\sub iceget} are used. If an ice cover is present, the surface temperature is calculated in {\sub skintemp}. Otherwise, the surface temperature is set to the sea surface temperature calculated by the ocean model. Every NCPL\verb#_#ICE\verb#_#OCEAN (defined in {\nam sea\verb#_#namelist}) time steps, the external subroutine {\sub cplexchange\verb#_#ocean} (defined in {\module intermod\verb#_#ice}) is called to pass the atmospheric forcing to and retrieve oceanic data from the ocean module {\module oceanmod.f90}. The oceanic data is used for ice calculations in the next time step. \vspace{3mm} \\ \hline \end{tabular} \end{center} %-------------------------------------------------------------------------------- \clearpage \begin{center} \begin{tabular}{|p{14cm}|} \hline \vspace{-5mm} \section{oceanmod.f90} \vspace{-5mm} \\ \hline \vspace{1mm} {\bf General} The module {\module oceanmod.f90} contains a mixed layer ocean model, i.e. subroutines to compute sea surface temperature and mixed layer depth. The interface to the main PLASIM module is via the module {\module icemod.f90} given by the subroutine {\sub oceanstep}, which is called by {\sub cplexchange\verb#_#ocean} (defined in {\module intermod\verb#_#ice}). \vspace{3mm} \\ \hline \vspace{1mm} {\bf Input/Output} {\module oceanmod.f90} requires the file {\file ocean\verb#_#flxcor} if NFLXCORRSST or NFLXCORRMLD is set to a negative value. If NOUTPUT is set to 1, the output file {\file fort.31} containing global fields of ocean model data in service format is produced (for details, see the ice modul section of the reference guide). The module is controlled by the namelist {\nam oceanpar} in the file {\file ocean\verb#_#namelist}. \vspace{1mm} \\ \begin{tabular}{p{3cm} p{2cm} p{6cm} p{2cm}} Parameter & Type & Purpose & default \\ NDIAG & INTEGER & Diagnostic output every NDIAG time steps & 480 \\ NOUT & INTEGER & Model data output every NOUT time steps & 32 \\ NOUTPUT & INTEGER & Oceanmodel output (0=no,1=yes) & 1 \\ NFLXCORRMLD & INTEGER & Time constant for restoring mixed layer depth $(>0)$, no flux correction $(=0)$, use fluxcorrection from file $(<0)$ & $60\,d$ \\ NFLXCORRSST & INTEGER & Time constant for restoring sea surface temperature $(>0)$, no flux correction $(=0)$, use fluxcorrection from file $(<0)$ & $60\,d$ \\ \end{tabular} \vspace{3mm} \\ \hline \vspace{2mm} {\bf Structure} {\module oceanmod.f90} uses the module {\modu oceanmod} which is not dependent on the module {\modu pumamod}. Subroutine {\sub oceanini} reads the namelist and, when required, the flux corrections from the file {\file ocean\verb#_#flxcor}. Subroutine {\sub oceanstep} calls {\sub mixocean}, which calculates mixed layer depth and temperature. If an ice cover is present, mixed layer depth is set to the climatological value and the sea surface temperature is set to the freezing temperature. For details of the mixed layer model, see the Planet Simulator Reference Manual. \vspace{3mm} \\ \hline \end{tabular} \end{center} %------------------------------------------------------------------------