diff --git a/doc/algorithm/algorithm.rst b/doc/algorithm/algorithm.rst index 28e129423a..e67cc48628 100644 --- a/doc/algorithm/algorithm.rst +++ b/doc/algorithm/algorithm.rst @@ -52,12 +52,12 @@ Basic operators: :math:`\overline{ \nabla } \Phi = \{ \delta_x \Phi , \delta_y \Phi \}` | | :math:`\overline{ \nabla } \cdot` = horizontal divergence operator : - :math:`\overline{ \nabla }\cdot \vec{\mathrm{{\bf f}}} = - \dfrac{1}{\cal A} \{ \delta_i \Delta y \, \mathrm{f}_x + :math:`\overline{ \nabla }\cdot \vec{\mathrm{{\bf f}}} = + \dfrac{1}{\cal A} \{ \delta_i \Delta y \, \mathrm{f}_x + \delta_j \Delta x \, \mathrm{f}_y \}` | | :math:`\overline{\nabla}^2` = horizontal Laplacian operator : - :math:`\overline{\nabla}^2 \Phi = + :math:`\overline{\nabla}^2 \Phi = \overline{ \nabla } \cdot \overline{ \nabla } \Phi` | @@ -85,7 +85,7 @@ algorithm for each of the basic formulations which are: #. the semi-implicit pressure method for hydrostatic equations with a rigid-lid, variables co-located in time and with Adams-Bashforth - time-stepping; + time-stepping; #. as 1 but with an implicit linear free-surface; @@ -116,7 +116,7 @@ more exactly, including non-linear terms, and this is described in :numref:`nonlinear-freesurface`. .. _press_meth_rigid: - + Pressure method with rigid-lid ============================== @@ -187,7 +187,7 @@ yielding an elliptic equation for :math:`\eta^{n+1}`. Equations .. math:: \partial_x \Delta t g H \partial_x \eta^{n+1} + \partial_y \Delta t g H \partial_y \eta^{n+1} = \partial_x H \widehat{u^{*}} - + \partial_y H \widehat{v^{*}} + + \partial_y H \widehat{v^{*}} :label: elliptic .. math:: u^{n+1} = u^{*} - \Delta t g \partial_x \eta^{n+1} @@ -362,7 +362,7 @@ time discretization of the explicit terms. We have historically used the quasi-second order Adams-Bashforth method (AB-II) for all explicit terms in both the momentum and tracer equations. This is still the default mode of operation but it is now possible to use alternate schemes for tracers -(see :numref:`tracer_eqns`), or a 3rd order Adams-Bashforth method (AB-III). +(see :numref:`tracer_eqns`), or a 3rd order Adams-Bashforth method (AB-III). In the previous sections, we summarized an explicit scheme as: .. math:: @@ -582,7 +582,7 @@ into the pressure method algorithm when all state variables are co-located in time. The algorithm can be represented by the sequential solution of the follow equations: -.. math:: +.. math:: G_{\theta,S}^{n} = G_{\theta,S} ( u^n, \theta^n, S^n ) :label: Gt-n-sync @@ -911,10 +911,10 @@ following equations: u^{*} = u^{n} + \Delta t G_u^{(n+1/2)} :label: ustar-nh -.. math:: +.. math:: v^{*} = v^{n} + \Delta t G_v^{(n+1/2)} :label: vstar-nh - + .. math:: w^{*} = w^{n} + \Delta t G_w^{(n+1/2)} :label: wstar-nh @@ -1013,9 +1013,9 @@ substituting :eq:`discrete-time-u-nh`, :eq:`discrete-time-v-nh` and .. math:: [ \nabla _h^2 + \partial_{rr} ] {\phi'_{\rm nh}}^{n+1} - = \frac{1}{\Delta t} + = \frac{1}{\Delta t} \nabla _h \cdot \vec{\bf v}^{**} + \partial_r \dot{r}^* - :label: sub-u-v-w-in-cont + :label: sub-u-v-w-in-cont where @@ -1031,7 +1031,7 @@ Finally, the horizontal velocities at the new time level are found by: .. math:: \vec{\bf v}^{n+1} = \vec{\bf v}^{**} - \epsilon_{\rm nh} \Delta t \nabla _h {\phi'_{\rm nh}}^{n+1} - :label: v-new-time-lev + :label: v-new-time-lev and the vertical velocity is found by integrating the continuity equation vertically. Note that, for the convenience of the restart @@ -1090,7 +1090,7 @@ separable and differently. c-grid.rst horiz-grid.rst vert-grid.rst - + Continuity and horizontal pressure gradient term ================================================= @@ -1227,7 +1227,7 @@ These terms are calculated in routines called from subroutine | :math:`G_u` : :varlink:`gU` ( :filelink:`DYNVARS.h ` ) | :math:`G_v` : :varlink:`gV` ( :filelink:`DYNVARS.h ` ) | :math:`G_w` : :varlink:`gW` ( :filelink:`NH_VARS.h ` ) - + Advection of momentum --------------------- @@ -1245,7 +1245,7 @@ The advective operator is second order accurate in space: {\cal A}_s \Delta r_f h_s G_v^{\rm adv} = \delta_i \overline{ U }^j \overline{ v }^i + \delta_j \overline{ V }^j \overline{ v }^j - + \delta_k \overline{ W }^j \overline{ v }^k + + \delta_k \overline{ W }^j \overline{ v }^k :label: discrete-momadvv .. math:: @@ -1373,16 +1373,16 @@ approximations these terms are discretized: {\cal A}_w \Delta r_f h_w G_u^{\rm metric} = \overline{ \frac{ \overline{u}^i }{a} \tan{\varphi} {\cal A}_c \Delta r_f h_c \overline{ v }^j }^i :label: gu_metric - + .. math:: {\cal A}_s \Delta r_f h_s G_v^{\rm metric} = - \overline{ \frac{ \overline{u}^i }{a} \tan{\varphi} {\cal A}_c \Delta r_f h_c \overline{ u }^i }^j \\ :label: gv_metric - + .. math:: G_w^{\rm metric} = 0 :label: gw_metric - + where :math:`a` is the radius of the planet (sphericity is assumed) or the radial distance of the particle (i.e. a function of height). It is easy to see that this discretization satisfies all the properties of the @@ -1420,12 +1420,12 @@ required to conserve angular momentum: {\cal A}_w \Delta r_f h_w G_u^{\rm metric} = - \overline{ \frac{ \overline{u}^i \overline{w}^k }{a} {\cal A}_c \Delta r_f h_c }^i :label: gu_metricnh - + .. math:: {\cal A}_s \Delta r_f h_s G_v^{\rm metric} = - \overline{ \frac{ \overline{v}^j \overline{w}^k }{a} {\cal A}_c \Delta r_f h_c}^j :label: gv_metricnh - + .. math:: {\cal A}_c \Delta r_c G_w^{\rm metric} = \overline{ \frac{ {\overline{u}^i}^2 + {\overline{v}^j}^2}{a} {\cal A}_c \Delta r_f h_c }^k @@ -1437,11 +1437,11 @@ in the past, used a different discretization in the model which is: .. math:: \begin{aligned} - G_u^{\rm metric} & = + G_u^{\rm metric} & = - \frac{u}{a} \overline{w}^{ik} \\ - G_v^{\rm metric} & = + G_v^{\rm metric} & = - \frac{v}{a} \overline{w}^{jk} \\ - G_w^{\rm metric} & = + G_w^{\rm metric} & = \frac{1}{a} ( {\overline{u}^{ik}}^2 + {\overline{v}^{jk}}^2 )\end{aligned} .. admonition:: S/R :filelink:`MOM_U_METRIC_NH `, :filelink:`MOM_V_METRIC_NH ` @@ -1607,7 +1607,7 @@ to-do’s. As for the lateral viscous terms, the free-slip condition is equivalent to simply setting the stress to zero on boundaries. The no-slip -condition is implemented as an additional term acting on top of the +condition is implemented as an additional term acting in conjunction with the interior and free-slip stresses. Bottom drag represents additional friction, in addition to that imposed by the no-slip condition at the bottom. The drag is cast as a stress expressed as a linear or quadratic @@ -1632,12 +1632,45 @@ function of the mean flow in the layer above the topography: :label: tau23 where these terms are only evaluated immediately above topography. -:math:`r_b` (:varlink:`bottomDragLinear`) has units of :math:`m s^{-1}` and a -typical value of the order 0.0002 :math:`m s^{-1}`. :math:`C_d` +:math:`r_b` (:varlink:`bottomDragLinear`) has units of m s\ :sup:`-1` and a +typical value of the order 0.0002 m s\ :sup:`-1`. :math:`C_d` (:varlink:`bottomDragQuadratic`) is dimensionless with typical values in the range 0.001–0.003. -.. admonition:: S/R :filelink:`MOM_U_BOTTOMDRAG `, :filelink:`MOM_V_BOTTOMDRAG ` +After defining :varlink:`ALLOW_BOTTOMDRAG_ROUGHNESS` in +:filelink:`MOM_COMMON_OPTIONS.h `, +the quadratic drag coefficient can be +computed by the logarithmic law of the wall: + +.. math:: + u(z) = \left(\frac{\tau}{\rho}\right)^{\frac{1}{2}}\frac{1}{0.4} + \ln{\frac{z+z_r}{z_r}} + :label: logLawWallu + +where :math:`z_r` is the roughness length (runtime parameter +:varlink:`zRoughBot`). Here, :math:`z` is the height from the seafloor and +:math:`\tau` is the bottom stress (and stress in the log-layer). The velocity +is computed at the center of the bottom cell :math:`z_b=\frac{1}{2}\Delta r_f +h_w`, so stress on the bottom cell is :math:`\tau / \rho = C_d u_b^2`, where +:math:`u_b = u(z_b)` is the bottom cell velocity and: + +.. math:: + C_d = \left(\frac{0.4}{ + \ln{\frac{\frac{1}{2} \Delta r_f h_w + z_{r} }{z_{r}}}}\right)^2 + :label: logLawWallcd + +This formulation assumes that the bottommost cell is sufficiently thin that it +is in a constant-stress log layer. A value of :varlink:`zRoughBot` of 0.01 m +yields a quadratic drag coefficient of 0.0022 for :math:`\Delta r_f =` 100 m, +or a quadratic drag coefficient of 0.0041 for :math:`\Delta r_f =` 10 m. + +For :math:`z_r = 0`, :math:`C_d` defaults to the value of +:varlink:`bottomDragQuadratic`. + +.. admonition:: S/R :filelink:`MOM_U_BOTTOMDRAG + `, + :filelink:`MOM_V_BOTTOMDRAG + ` :class: note | :math:`\tau_{13}^{\rm bottom-drag} / \Delta r_f , \tau_{23}^{\rm bottom-drag} / \Delta r_f` : :varlink:`vF` ( local to :filelink:`MOM_FLUXFORM.F ` ) @@ -1662,7 +1695,7 @@ Mom Diagnostics ------------------------------------------------------------------------ - <-Name->|Levs|<-parsing code->|<-- Units -->|<- Tile (max=80c) + <-Name->|Levs|<-parsing code->|<-- Units -->|<- Tile (max=80c) ------------------------------------------------------------------------ VISCAHZ | 15 |SZ MR |m^2/s |Harmonic Visc Coefficient (m2/s) (Zeta Pt) VISCA4Z | 15 |SZ MR |m^4/s |Biharmonic Visc Coefficient (m4/s) (Zeta Pt) @@ -1748,7 +1781,7 @@ The non-hydrostatic vector invariant equations read: :label: vect_invar_nh which describe motions in any orthogonal curvilinear coordinate system. -Here, :math:`B` is the Bernoulli function and :math:`\vec{\boldsymbol{\zeta}}= \nabla +Here, :math:`B` is the Bernoulli function and :math:`\vec{\boldsymbol{\zeta}}= \nabla \times \vec{\bf v}` is the vorticity vector. We can take advantage of the elegance of these equations when discretizing them and use the discrete definitions of the grad, curl and divergence operators to satisfy @@ -1814,7 +1847,7 @@ Kinetic energy The kinetic energy, denoted :math:`\mathrm{KE}`, is defined: .. math:: - \mathrm{KE} = \frac{1}{2} ( \overline{ u^2 }^i + \overline{ v^2 }^j + \mathrm{KE} = \frac{1}{2} ( \overline{ u^2 }^i + \overline{ v^2 }^j + \epsilon_{\rm nh} \overline{ w^2 }^k ) :label: KE_vecinv @@ -2091,7 +2124,7 @@ lines). Tendencies are calculated at time levels :math:`n` and method: .. math:: - G^{(n+1/2)} = + G^{(n+1/2)} = (\tfrac{3}{2} + \epsilon) G^{(n)} - (\tfrac{1}{2} + \epsilon) G^{(n-1)} :label: g_nponehalf @@ -2132,7 +2165,7 @@ that explicit diffusion and forcing use the forward method. Advection schemes ================= -.. toctree:: +.. toctree:: adv-schemes.rst .. _shapiro_filter: @@ -2164,14 +2197,14 @@ The three computational filter operators are : \begin{aligned} & \mathrm{S1c:}\hspace{2cm} [1 - 1/2 \frac{\Delta t}{\tau_{\rm Shap}} - \{ (\frac{1}{4}\delta_{ii})^n + \{ (\frac{1}{4}\delta_{ii})^n + (\frac{1}{4}\delta_{jj})^n \} ]\\ & \mathrm{S2c:}\hspace{2cm} - [1 - \frac{\Delta t}{\tau_{\rm Shap}} + [1 - \frac{\Delta t}{\tau_{\rm Shap}} \{ \frac{1}{8} (\delta_{ii} + \delta_{jj}) \}^n]\\ & \mathrm{S4c:}\hspace{2cm} [1 - \frac{\Delta t}{\tau_{\rm Shap}} (\frac{1}{4}\delta_{ii})^n] - [1 - \frac{\Delta t}{\tau_{\rm Shap}} (\frac{1}{4}\delta_{jj})^n]\end{aligned} + [1 - \frac{\Delta t}{\tau_{\rm Shap}} (\frac{1}{4}\delta_{jj})^n]\end{aligned} In addition, the S2 operator can easily be extended to a physical space filter: @@ -2194,7 +2227,7 @@ SHAP Diagnostics :: -------------------------------------------------------------- - <-Name->|Levs|parsing code|<-Units->|<- Tile (max=80c) + <-Name->|Levs|parsing code|<-Units->|<- Tile (max=80c) -------------------------------------------------------------- SHAP_dT | 5 |SM MR |K/s |Temperature Tendency due to Shapiro Filter SHAP_dS | 5 |SM MR |g/kg/s |Specific Humidity Tendency due to Shapiro Filter @@ -2528,7 +2561,7 @@ a contribution from quasigeostrophic vortex stretching (Bachman et al. 2017 :cit The viscosity is given by .. math:: - \nu_{*} = \left(\frac{\Lambda \Delta s}{\pi}\right)^{3} \left| \nabla _{h}(f\mathbf{\hat{z}}) + + \nu_{*} = \left(\frac{\Lambda \Delta s}{\pi}\right)^{3} \left| \nabla _{h}(f\mathbf{\hat{z}}) + \nabla _{h}( \nabla \times \mathbf{v}_{h*}) + \partial_{z}\frac{f}{N^{2}} \nabla _{h} b \right| :label: bachman2017_eq39 @@ -2541,8 +2574,8 @@ However, the viscosity given by :eq:`bachman2017_eq39` does not constrain purely divergent motions. As such, a small :math:`\mathcal{O}(\epsilon)` correction is added .. math:: - \nu_{*} = \left(\frac{\Lambda \Delta s}{\pi}\right)^{3} - \sqrt{\left| \nabla _{h}(f\mathbf{\hat{z}}) + \nabla _{h}( \nabla \times \mathbf{v}_{h*}) + + \nu_{*} = \left(\frac{\Lambda \Delta s}{\pi}\right)^{3} + \sqrt{\left| \nabla _{h}(f\mathbf{\hat{z}}) + \nabla _{h}( \nabla \times \mathbf{v}_{h*}) + \partial_{z} \frac{f}{N^{2}} \nabla _{h} b\right|^{2} + | \nabla ( \nabla \cdot \mathbf{v}_{h})|^{2}} :label: bachman2017_eq40 @@ -2748,7 +2781,7 @@ projection about a latitude :math:`\theta_0` and geopotential height .. math:: {\rm Ro} \frac{D{\tilde v}}{Dt} + \frac{{\tilde u}\sin\theta}{\sin\theta_0} + M_{Ro}{\frac{\partial{\pi}}{\partial{y}}} - = -\frac{\mu{\rm Ro} \tan\theta({\tilde u}^2 + {\tilde v}^2)}{r/L} + = -\frac{\mu{\rm Ro} \tan\theta({\tilde u}^2 + {\tilde v}^2)}{r/L} - \frac{{\rm Fr}^2M_{Ro} {\tilde v} w}{r/H} + \frac{{\rm Ro} {\bf \hat y}\cdot\nabla^2{\bf u}}{{\rm Re}} :label: gill_v @@ -2775,30 +2808,30 @@ Where {\tilde u}=\frac{u^*}{V\mu},\ \ \ {\tilde v}=\frac{v^*}{V\mu} .. math:: - f_0\equiv2\Omega\sin\theta_0,\ \ \ - %,\ \ \ \BFKDt\ \equiv \mu^2\left({\tilde u}\BFKpd x\ - %+{\tilde v} \BFKpd y\ \right)+\frac{\rm Fr^2M_{Ro}}{\rm Ro} w\BFKpd z\ - \frac{D}{Dt} \equiv \mu^2\left({\tilde u}\frac{\partial}{\partial x} + f_0\equiv2\Omega\sin\theta_0,\ \ \ + %,\ \ \ \BFKDt\ \equiv \mu^2\left({\tilde u}\BFKpd x\ + %+{\tilde v} \BFKpd y\ \right)+\frac{\rm Fr^2M_{Ro}}{\rm Ro} w\BFKpd z\ + \frac{D}{Dt} \equiv \mu^2\left({\tilde u}\frac{\partial}{\partial x} +{\tilde v} \frac{\partial}{\partial y} \right) +\frac{\rm Fr^2M_{Ro}}{\rm Ro} w\frac{\partial}{\partial z} .. math:: - x\equiv \frac{r}{L} \phi \cos \theta_0, \ \ \ + x\equiv \frac{r}{L} \phi \cos \theta_0, \ \ \ y\equiv \frac{r}{L} \int_{\theta_0}^\theta - \frac{\cos \theta_0 {\,\rm d\theta}'}{\cos\theta'}, \ \ \ + \frac{\cos \theta_0 {\,\rm d\theta}'}{\cos\theta'}, \ \ \ z\equiv \lambda\frac{r-r_0}{L} .. math:: t^*=t \frac{L}{V},\ \ \ b^*= b\frac{V f_0M_{Ro}}{\lambda} .. math:: - \pi^* = \pi V f_0 LM_{Ro},\ \ \ + \pi^* = \pi V f_0 LM_{Ro},\ \ \ w^* = w V \frac{{\rm Fr}^2 \lambda M_{Ro}}{\rm Ro} .. math:: {\rm Ro} \equiv \frac{V}{f_0 L},\ \ \ M_{Ro}\equiv \max[1,\rm Ro] .. math:: - {\rm Fr} \equiv \frac{V}{N \lambda L}, \ \ \ - {\rm Re} \equiv \frac{VL}{\nu}, \ \ \ + {\rm Fr} \equiv \frac{V}{N \lambda L}, \ \ \ + {\rm Re} \equiv \frac{VL}{\nu}, \ \ \ {\rm Pr} \equiv \frac{\nu}{\kappa} Dimensional variables are denoted by an asterisk where necessary. If we @@ -2809,7 +2842,7 @@ filter over a grid scale typical for ocean models: | 0.001m/s :math:`< V <` 1 m/s | :math:`f_0 <` 0.0001 s :sup:`-1` | 0.01 s :sup:`-1` :math:`< N <` 0.0001 s :sup:`-1` -| +| these equations are very well approximated by @@ -2829,11 +2862,11 @@ these equations are very well approximated by .. math:: {\rm Fr}^2\lambda^2\frac{D{w}}{Dt} - b + {\frac{\partial{\pi}}{\partial{z}}} = \frac{\lambda\cot \theta_0 {\tilde u}}{M_{Ro}} - +\frac{{\rm Fr}^2\lambda^2\nabla^2w}{{\rm Re}} + +\frac{{\rm Fr}^2\lambda^2\nabla^2w}{{\rm Re}} :label: gill_w_filt .. math:: - \frac{D{b}}{Dt} + w = \frac{\nabla^2 b}{\Pr{\rm Re}} + \frac{D{b}}{Dt} + w = \frac{\nabla^2 b}{\Pr{\rm Re}} :label: gill_b_filt diff --git a/doc/examples/examples.rst b/doc/examples/examples.rst index 19b7a0d1d2..1d716de2aa 100644 --- a/doc/examples/examples.rst +++ b/doc/examples/examples.rst @@ -301,13 +301,16 @@ For many experiments, additional information is provided in a ``README`` file lo physics (:filelink:`pkg/aim_v23`) thermodynamic seaice (:filelink:`pkg/thsice`) and land packages. Also contains an additional setup with seaice dynamics - (:filelink:`input_cpl.icedyn `, :filelink:`input_atm.icedyn `, :filelink:`input_ocn.icedyn `). + (:filelink:`input_cpl.icedyn `, + :filelink:`input_atm.icedyn `, + :filelink:`input_ocn.icedyn `). #. :filelink:`deep_anelastic ` - Convection simulation on a giant planet: relaxes both the Boussinesq approximation (anelastic) and the thin atmosphere approximation (deep atmosphere). -#. :filelink:`dome ` - Idealized 3-D test of a density-driven bottom current (Denmark Overflow Mixing and Entrainment experiment). +#. :filelink:`dome ` - Idealized 3-D test of a density-driven bottom current + (Denmark Overflow Mixing and Entrainment experiment). #. :filelink:`exp2 ` - Old version of the global ocean experiment (no GM, no partial-cells). Also contains an additional setup with rigid lid @@ -335,11 +338,14 @@ For many experiments, additional information is provided in a ``README`` file lo #. :filelink:`front_relax ` - Relaxation of an 2-D (:math:`y-z`) ocean thermal front (test of Gent and McWilliams scheme). Also contains additional setups: + - using the identical setup except with pressure as the vertical coordinate instead of height + (:filelink:`input.in_p `) + - using the boundary-value problem method (Ferrari et al. 2010 :cite:`ferrari:10`) - (:filelink:`input.bvp `). + (:filelink:`input.bvp `) - with mixed-layer eddy parameterization (Ferrari and McWilliams - 2008 :cite:`ferrari:08`) (:filelink:`input.mxl `). + 2008 :cite:`ferrari:08`) (:filelink:`input.mxl `) - with dry-cell at the top and a sloping bottom (:filelink:`input.top `). @@ -370,7 +376,9 @@ For many experiments, additional information is provided in a ``README`` file lo - using thermodynamic and dynamic (:filelink:`pkg/seaice`) sea ice with :filelink:`exf ` package package (:filelink:`input.seaice `). - - using pressure as vertical coordinate, with :filelink:`ggl90 ` scheme (Gaspar et al. 1990 :cite:`gas-eta:90`) and dynamic and thermodynamic seaice (:filelink:`pkg/seaice`) package and :filelink:`exf ` package (:filelink:`input.in_p `) + - using pressure as vertical coordinate, with :filelink:`ggl90 ` scheme (Gaspar et al. 1990 :cite:`gas-eta:90`) + and dynamic and thermodynamic seaice (:filelink:`pkg/seaice`) package and :filelink:`exf ` + package (:filelink:`input.in_p `) #. :filelink:`global_ocean_ebm ` - Global ocean experiment on a lat-lon grid coupled to a zonally averaged atmospheric energy balance model. Similar to @@ -468,21 +476,25 @@ For many experiments, additional information is provided in a ``README`` file lo - sea ice dynamics-only using :ref:`LSR solver `, elliptical yield curve with :ref:`non-normal flow rule ` and (:filelink:`pkg/seaice`) advection - (:filelink:`input.dyn_ellnnfr ` and :filelink:`input.dyn_lsr `) + (:filelink:`input.dyn_ellnnfr ` + and :filelink:`input.dyn_lsr `) - sea ice dynamics-only using :ref:`LSR solver `, :ref:`Mohr-Coulomb yieldcurve with elliptical plastic potential ` and (:filelink:`pkg/seaice`) advection - (:filelink:`input.dyn_mce ` and :filelink:`input.dyn_lsr `) + (:filelink:`input.dyn_mce ` and + :filelink:`input.dyn_lsr `) - sea ice dynamics-only using :ref:`Picard (KRYLOV) solver `, :ref:`parabolic lens yieldcurve ` and (:filelink:`pkg/thsice`) advection - (:filelink:`input.dyn_paralens ` and :filelink:`input.dyn_jfnk `) + (:filelink:`input.dyn_paralens ` + and :filelink:`input.dyn_jfnk `) - sea ice dynamics-only using :ref:`JFNK solver `, :ref:`teardrop yieldcurve ` and (:filelink:`pkg/thsice`) advection - (:filelink:`input.dyn_teardrop ` and :filelink:`input.dyn_jfnk `) + (:filelink:`input.dyn_teardrop ` + and :filelink:`input.dyn_jfnk `) - sea ice thermodynamics-only using (:filelink:`pkg/seaice`) (:filelink:`input.thermo `) @@ -516,15 +528,28 @@ For many experiments, additional information is provided in a ``README`` file lo #. :filelink:`so_box_biogeo ` - Open boundary Southern Ocean box around Drake Passage, using same model parameters and forcing as experiment :ref:`tutorial_global_oce_biogeo ` from which initial conditions and open boundary - conditions have been extracted. Also contains additional setup using the SolveSAPHE algorithm - (Munhoven 2013 :cite:`munhoven:13`) to determine oceanic pH - (:filelink:`input.saphe `). + conditions have been extracted. Also contains additional setups: + + - using the SolveSAPHE algorithm (Munhoven 2013 :cite:`munhoven:13`) to determine oceanic + pH (:filelink:`input.saphe `) + + - using the calcite-saturation code (with 3-D pH and silica input file) with the original pH solver + (:filelink:`input.caSat0 `) + + - using the calcite-saturation code with the Munhoven "FAST" solver (:filelink:`input.caSat3 `) #. :filelink:`solid-body.cs-32x32x1 ` - Solid body rotation test for cube sphere grid. -#. :filelink:`tutorial_deep_convection ` - Experiment as described in :numref:`sec_deep_convection`, also contains an additional setup - using the Smagorinisky (1963) :cite:`smag:63` viscosity scheme (:filelink:`input.smag3d `). +#. :filelink:`tutorial_deep_convection ` - Experiment as described + in :numref:`sec_deep_convection`, also contains an additional setup + using the Smagorinisky (1963) :cite:`smag:63` viscosity scheme + (:filelink:`input.smag3d `). + +#. :filelink:`tutorial_plume_on_slope ` - Experiment as described in + :numref:`tutorial_plume_on_slope`, also contains an additional setup + using the logarithmic law of the wall to compute the bottom drag coefficient + (:filelink:`input.roughBot `). #. :filelink:`vermix ` - Simple test in a small domain (3 columns) for ocean vertical mixing schemes. The standard setup (:filelink:`input `) uses the :ref:`KPP scheme ` @@ -553,7 +578,8 @@ Unless stated otherwise, the physical setup of the adjoint run is identical to t TAF adjoint setups require building with directory ``code_ad`` with input directory ``input_ad``, whereas OpenAD requires directories ``code_oad`` and ``input_oad`` respectively. -#. :filelink:`1D_ocean_ice_column ` - Based on standard forward experiment, TAF adjoint setup, uses package :filelink:`ecco `. +#. :filelink:`1D_ocean_ice_column ` - Based on standard forward experiment, + TAF adjoint setup, uses package :filelink:`ecco `. #. :filelink:`bottom_ctrl_5x5 ` - TAF adjoint test using the bottom topography as the control parameter, uses package @@ -588,7 +614,8 @@ directories ``code_oad`` and ``input_oad`` respectively. #. :filelink:`global_ocean_ebm ` - Based on standard forward experiment, TAF adjoint setup. -#. :filelink:`global_oce_biogeo_bling ` - Based on standard forward experiment, TAF adjoint setup, uses package :filelink:`ecco `. +#. :filelink:`global_oce_biogeo_bling ` - Based on standard forward experiment, + TAF adjoint setup, uses package :filelink:`ecco `. #. :filelink:`global_with_exf ` - Based on standard forward experiment, TAF adjoint setup. @@ -628,6 +655,6 @@ directories ``code_oad`` and ``input_oad`` respectively. #. :filelink:`tutorial_global_oce_biogeo ` - Based on forward experiment described in :numref:`sub_global_oce_biogeo`, TAF and OpenAD adjoint setups. -#. :filelink:`tutorial_tracer_adjsens ` - Based on adjoint experiment described in :numref:`sec_tracer_adj_sens`, - contains an additional TAF setup using Second Order Moment (SOM) +#. :filelink:`tutorial_tracer_adjsens ` - Based on adjoint experiment + described in :numref:`sec_tracer_adj_sens`, contains an additional TAF setup using Second Order Moment (SOM) advection scheme (:filelink:`input_ad.som81 `). diff --git a/doc/getting_started/getting_started.rst b/doc/getting_started/getting_started.rst index 5783ff2225..1d66fcecbb 100644 --- a/doc/getting_started/getting_started.rst +++ b/doc/getting_started/getting_started.rst @@ -2525,6 +2525,8 @@ and quadratic (set the variable +----------------------------------------+-----------+--------------------------------------------------+---------------------------------------------------------------------------------------------------------+ | :varlink:`bottomDragQuadratic` | PARM01 | 0.0 | quadratic bottom-drag coefficient ([:math:`r`]/m) | +----------------------------------------+-----------+--------------------------------------------------+---------------------------------------------------------------------------------------------------------+ +| :varlink:`zRoughBot` | PARM01 | 0.0 | roughness length for quadratic bottom friction coefficient (m) | ++----------------------------------------+-----------+--------------------------------------------------+---------------------------------------------------------------------------------------------------------+ | :varlink:`selectBotDragQuadr` | PARM01 | -1 | select quadratic bottom drag discretization option | | | | | | | | | | - -1: not used | diff --git a/doc/manual_references.bib b/doc/manual_references.bib index 6f9d46b860..e8ce2b8ae0 100644 --- a/doc/manual_references.bib +++ b/doc/manual_references.bib @@ -585,6 +585,17 @@ @article{dutkiewicz:2020 pages = {609--634}, } +@ARTICLE{fenty:13, + author = {Fenty, I. and P. Heimbach}, + title = {Coupled sea ice{\textendash}ocean-state estimate in the {Labrador Sea and Baffin Bay}}, + JOURNAL = jpo, + YEAR = 2013, + VOLUME = 43, + NUMBER = {5}, + PAGES = {884-904}, + doi = {10.1175/JPO-D-12-065.1}, +} + @inproceedings{ferrari:03, author = {Ferrari, R. and R. A. Pumb}, title = {Residual circulation in the ocean}, @@ -2471,6 +2482,16 @@ @article{waters:14 doi = {10.1016/j.marchem.2014.07.004}, } +@Article{weaver:01, + author = {Weaver, A. and P. Courtier}, + title = {Correlation modelling on the sphere using a generalized diffusion equation}, + journal = qjrms, + year = 2001, + volume = 127, + pages = {1815-1846}, + doi = {10.1002/qj.49712757518} +} + @article{weiss:80, author = {Weiss, R. F. and Price, B. A.}, title = {Nitrous oxide solubility in water and seawater}, diff --git a/doc/ocean_state_est/figs/ctrl_var_sketch.pdf b/doc/ocean_state_est/figs/ctrl_var_sketch.pdf new file mode 100644 index 0000000000..5bb37c74a1 Binary files /dev/null and b/doc/ocean_state_est/figs/ctrl_var_sketch.pdf differ diff --git a/doc/ocean_state_est/figs/ctrl_var_sketch.svg b/doc/ocean_state_est/figs/ctrl_var_sketch.svg new file mode 100644 index 0000000000..b2d41fcb4d --- /dev/null +++ b/doc/ocean_state_est/figs/ctrl_var_sketch.svg @@ -0,0 +1,1354 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + baseTime+nIter0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + baseTime (=0) + + + + + + + + + + + + startDate_1/2 + + + + + + + + + + + + + + + + + + + + baseTime + + + + + + + + + nIter0 + nTimeSteps + + + + + + + + + + + + optimisation interval + + + + + + + + + + + spinup interval + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + (1) default: xx_gentim2d_startdate = startDate + + + + + + + + + + + xx_gentim2d + + + + + + + + + + + xx_gentim2d.tmp/effective + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + (2) xx_gentim2d_startdate = baseTime+nIter0 + + + + + + + + + + + xx_gentim2d.tmp/effective + + + + + + + + + + + xx_gentim2d + + + + + + + + + + + xx_gentim2d.tmp/effective + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + (2a) new startTime at nIter0* > nIter0 + + + + + + + + + + + baseTime+nIter0* + + + + + + + + + + + xx_gentim2d + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + (3) alternative: new startDate_1/2 at old baseTime+nIter0 = baseTime*. + + + + + + Note that this requires renaming pickup + + + + + + files and/or specifying namelist + + + + + + parameter “pickupSuff” in data + + + + + + + + + + + xx_gentim2d.tmp/effective + + + + + + + + + + + xx_gentim2d + + + + + + + + + + + baseTime* + nIter0=0 + + + + + + + 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 +BXwOUypV7iOrIiIS+OL039SBLkSmjUTSOHEMnAJTp/mSvJw4EsQqYd4VBsVniNpDUZEUJNFGqSAQ +qQxcOCOWGnHBsAHVZknrW9r3P1cr5/3UfUtV7jlTb5/23evsbyvt5zy/p7w0Wzy/sez/y1Js57x1 +vmcrO0UxyfNN5Wnz43kx9XY5saXCuGme9krH+NZrr8U9bUt6M76zTp/2cjxzrRVTbywxTs1LqhX3 +/L9ThSu2n/L7TmW2b6lGi0TzvP4y28/U69/5F8/rWOb69OL/+9WxRaoX37dUV2fsfevs61a+/cva ++7Rp3/cs7/0UiTS7XpmfWiqv1sqam76Yu/39hlOrovdp3vS1eftqk3Y4a7435T+v/Cf9z3Za5bSX ++u238ralWOKv9XH9kFox/E8Tf2Lt+8bXrtOqjZ+9eARBi/ult72y/UndYjzdZaV2fv/fS/NL/Len +7YwxlTdni3RNjK9Tf4lttlQXbezU4lwxzdL+bFqrSzvxDR2sIdjvhaFWv8/TwHlfm2KdGs3Yc/q2 +fvkrvdh+lrrm5Zk18PteC+1PLY+PLQh+X8EPZ/A161FP8/B8jYrYNdFv+P0Maarfr8SYdKulbqnM +uC3VbLdtrWxbL1r/Gz+2Nd+XX0U7L81g9iidWgU/a/j/tfDDoNaidTo/0VP21pnnu3S3l7+tj+uU +Fzetn3F/lnje6x9nXH/ex1TO3BbpstXeXL2zXyuz3+tajHGlk2acpd+2VFf1xo6p575Z+tvL82e/ +fntSa2W2D14P/2YxY1CzIIi10HqvgU1F7Xr5Ys9gp0gk+tSrpX//yqfYUmGcb9ssr33PuX/iti3n +/caO8ddL799/6jPnTO9337dd8c0+cf/LeT9Fqk2ql+ZKaf6f9vJKK/XO+H7OEl9rgKsZVLlv97w0 +388tG1tujRYpdWWbPd+Lc85XfvWLbcWSUmyprqbzTveec7qs0/KoxVCzzdhWl+/YIjm2VNdse2Fs +f+L3fP++bGyVrr8GuNzqIhaumbrqxTbfzjPbKW3b6/Psiz13xVje+xbpanyrv8WVdsva96oXt2dZ +c7VIV3Vbrd9/LCu9l63W3bG/9SrxrZbqwvRxxvP2nFhaaq/PFddZsc345bRvrTDimp6I9xnAWxAJ +gNhwvRt0dhzHLN7reVftq2HWsKWv2bdVC0X8id3Y0okEQGzYLhcASIcIQwDEcGUgqrzM1RGuHEQR +JLRd09JcEBHXxXJlS8FaWRCWhkVKzTlaJCtFuibpwtZSXdjehGtaId311ocldte0Boi4ptVd00Jh +1oCDCEiHmtelUZfm+hg4kEoRmwhIt6EwC9Rd01qRrktfFusjXfOa9ZpXrX5h7yvfBhEF4JHCFQjD +rHAFQvWAtRlACIZ1VqW6wayR9FSGEI4Szukam0st45iVOa0bkBHdvCdmbXLTMlu2nTYPgiggRMB6 +BrMsKDiWzmQSOB5maZlMJnPJ9Lxs0sNAcNnlMtowq5QA3iyBYqSCIeSzykhkXqUiIIKiqBALlw8R +Hd9KF6LOfAK8booBCtUGKkDN0VGQElk2ulNERCiE6RBxNgEBVCJbfATiTDwZaCNzCXkIcRAQkYVP +CHVULmQBw50WROKm8RBpproxYQpEF52wmR6PjNwMNtvELIsH5sl8bEQWKJQ5qhtsG12IWn7kCeVC +OjrzIaLjFRAQo4oMoZwCNkIuMo6IjtOl4sHQICeog1kjK7JxJ5DUpXNQ6kCALB0JFpqCzylWKAGE +YRhmiRmexwAdGiGXCNIhEiKCZFxihuchingiHauVd4kA8EIyLBAxteGBNGhah5QiXZ7bykpJmFr7 +M8tpa5X46re21ppt4yrrpXPMFTu9Yd9QwzXE2sT2tS+8VgOvpeOl+fpsivHn8+vH91ZRs2DNWn5/ +bY64tQ8/+Nl7634pvvPFTJtO2qD1sgaON2vjh1WzlLbXWavTJuXuTO+U7thSfZ2W1nxF9wYpra9d +T/w0Ct7X/gtDree1bT/va3tY/O+z7p42w/e0nOtrVLyv1RqOdQQz/cY6PbH/M3atiuGnTc++Fnrh +p1lcvZ/5uthhOwbF+n61z35YC/97zTqd2v28MATDr234Yf32rI+j5vl/2uiNr4E/r4a7gtnvTwft +DC3On3d7auFoPW38wtdG0EOtrTfF3Dl7pd7MHj44Pe3DnrXQvddEURy1+o09hvbirvNp/f78dv7b +v28xznT2bGkfY3sv9lsbW1z7flv8l1pKH+N5M57VpuaTaK1+bfu9/phK2raK7nW8YVtPm56Ytf/o +a6ANq9ZvvcEvvKla60u/JDn7WqrL5kkzlfVb2hdnfgx+2Bux1bzwZq3fe+3/87R888TzXpu6VuJK +wvQtVf22sqmDIojBDIKZYqqFtbMGjvS1vuKozWynfc+VNp2Oq83f9K/FTmW9FVvsVd5b8a33q8UT +y3urz7a0Wllx/21rO3+utFr5uH9aWqest53ee/tOSyuW+fb1M9NUO2li+yk67buV0ymuON+cW3b7 +1bRm69b/72f/W6ntiXPOsrZf9VKJ76fwdFK1ue2tqWz7783y3mqpqP+dXXGu1r6806/7ne9Y3twX +V0t11VytX9XvrdLimvrppDplu/+d9uZLPcuJ+8K09pQ+bQ7Bz37g9x44NepZrHn2vhZiezXR+5rS +Fj91Lcm2+5U4W0tFn145476Typtr9tEt1f6rnybO+VqLTjX/wO/6IE05Jb21E1u/tGX+a6mu3LP/ +XonxpRhPOltO6n3h9c/rZ/vTbH6sjU9fu9cTNREM87zUPVXfs/xMyhVP2nk27isbv6Wys/N0i+W1 +9LI9bRXH+7SbZq1+4Kd5WXwNfDtqk14aYm92qhvPOiW2X5/mO6vLef+rU0wt9VnfUu/7dmZarzue +tMp5P9VNmpNeuHrGGeOJKZ4yXxWm2G/27NXz7NmTyp73Z/dsaSf1xtRW2Ri/pbP9/pT3J66fJfX7 +Ly+lF21ac1fH9Sl9l/6ppyQ6681tc3v395WUUlu7YvdcP7f8+rQnzfM7S+z0auy0LZ1u801dS8rX +2lwtxi1pvZbq8mtpz4xzti7pP875/teWT2t3+M2x6Rw1sb6nWXpfcyyOLn65Uz4r6c6XPq+luvhS +ayW+f/3jt2+9PWc5p8X1ftnDXp3+Wjjzp+UfX/Nm+Gm3ji2GY5hTGLe/01svtXJS0vd17F7l7Gqp +LmtvrpfOrrdKOuuVafVpPftjfCWuDYqifw3DMBw1HOJPq2N9DRQp1sILft7FjVMk0s23H3t/vi2x +fZovlfO+9RmKCqhEdCaKHOYwTEFmjDHKDNAYB5MTCDBgQBIKRwMS2rp6BxQABExCLEQ8NiwcGhwi +FItl0ygKgiiIoSgOghAIgyAKY9BbZgGXxl1JuGeoHAydnPXeFGKBeMeCv94qE0e/PC6pBeLtJ+Mp +81vznze+S/JiN+z38atv+SvMBBr3vQFbqD9x1Kd3l9fuIamWJ8Xn4QxpXVKkUfjRyuJWKmgQhTbW +SXcqVyrD9ft9/AUVWyetlTGksUjK4dA84pjS6txVYtJPaG8+sjqQrViGCbJVy3yDbFKZaZBNJ6vj +rYUjis3rPVbcFlMOcJpLcet2HOmezuHmYjp+qXYwv4LGK0KQKbc2y9xnLFWTIiWoMda/bOkJRUU6 +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 + + + diff --git a/doc/ocean_state_est/ocean_state_est.rst b/doc/ocean_state_est/ocean_state_est.rst index 17818b5e57..0c621add3a 100644 --- a/doc/ocean_state_est/ocean_state_est.rst +++ b/doc/ocean_state_est/ocean_state_est.rst @@ -163,9 +163,9 @@ via :varlink:`gencost_posproc_c` (name of a smoothing scale file) and :varlink:`gencost_posproc_i` (an integer specifying the smoother number of time steps, see :numref:`gencost_ecco_preproc`). The smoothing scale file can be be based on the large-scale parameter specified in data.smooth or prepared as -a factor of the model resolution DXG and DYG. As an example, one can read in -offline the model DXG and DYG and create a characteristic length-scale as -sqrt(DXG^2 + DYG^2), then multiply by a factor of 3 if one wants the smoothed +a factor of the model resolution dxC and dyC. As an example, one can read in +offline the model dxC and dyC and create a characteristic length-scale as +sqrt(dxC^2 + dyC^2), then multiply by a factor of 3 if one wants the smoothed (large scale) field to be of length-scale 3x that of the model grid spacing. The smoother number of time steps `gencost_posproc_i` can be the same as that used in data.smooth. Other options associated with the computation @@ -397,7 +397,7 @@ index for that cost function term. +=======================+=======================+=======================+ | ``gencost_preproc`` | | | +-----------------------+-----------------------+-----------------------+ - | ``clim`` | Use climatological | integer: no. of | + | ``clim`` | Use climatological | integer: no. of | | | misfits | records per | | | | climatological cycle | +-----------------------+-----------------------+-----------------------+ @@ -500,7 +500,7 @@ be used (e.g. 1000 dbar, 2000 dbar). | ``m_boxmean_shihf`` | total shelfice heat flux over box| specify box | +---------------------+----------------------------------+------------------+ | ``m_boxmean_vol`` | total volume over box | specify box | - +---------------------+----------------------------------+------------------+ + +---------------------+----------------------------------+------------------+ | ``m_horflux_vol`` | volume transport through section | specify transect | +---------------------+----------------------------------+------------------+ @@ -518,10 +518,10 @@ This section (very much a work in progress...) pertains to the special cases of :filelink:`cost_gencost_moc.F `. The :filelink:`cost_gencost_transp.F ` function can be used to compute a transport of volume, heat, or salt through a specified -section (non quadratic cost function). To this end one sets ``gencost_name = -‘transp*’``, where ``*`` is an optional suffix starting with ``‘_’``, and set -:varlink:`gencost_barfile` to one of ``m_trVol``, ``m_trHeat``, and -``m_trSalt``. +section (non quadratic cost function). To this end one sets +``gencost_name = ‘transp*’``, where ``*`` is an optional suffix starting +with ``‘_’``, and set :varlink:`gencost_barfile` to one of ``m_trVol``, +``m_trHeat``, and ``m_trSalt``. The :filelink:`cost_gencost_moc.F ` function is similar to transport function, but is intended to compute the meridional @@ -746,13 +746,18 @@ grid files. *This operation could eventually be inlined.* CTRL: Model Parameter Adjustment Capability ------------------------------------------- -Author: Gael Forget +Author: Gael Forget, An T. Nguyen, Martin Losch + +.. _gen_ctrl: + +Generic Control Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~ Package :filelink:`ctrl ` provides an interface to defining the control variables for an optimization. After defining CPP-flags :varlink:`ALLOW_GENTIM2D_CONTROL`, :varlink:`ALLOW_GENARR2D_CONTROL`, :varlink:`ALLOW_GENARR3D_CONTROL` in :filelink:`CTRL_OPTIONS.h -`, the parameters available for configuring generic cost terms in ``data.ctrl`` are given in :numref:`gencost_ctrl_params`. The control variables are stored as fields on the model grid in files ``$ctrlvar.$iternumber.data/meta``, and corresponding gradients in @@ -765,8 +770,12 @@ the resulting new control vector to the model grid unless CPP-flag :varlink:`EXCLUDE_CTRL_PACK` is defined in :filelink:`CTRL_OPTIONS.h `. +.. _gen_ctrl_param: -.. table:: Parameters in ``ctrl_nml_genarr`` namelist in ``data.ctrl``. The +Run-time Parameters +^^^^^^^^^^^^^^^^^^^ + +.. table:: Parameters in namelist group :varlink:`ctrl_nml_genarr` in ``data.ctrl``. The ``*`` can be replaced by ``arr2d``, ``arr3d``, or ``tim2d`` for time-invariant two and three dimensional controls and time-varying 2D controls, respectively. Parameters for ``genarr2d``, @@ -776,62 +785,44 @@ the resulting new control vector to the model grid unless CPP-flag the cost function. :name: gencost_ctrl_params - +-----------------------+-----------------------+--------------------------------+ - | parameter | type | function | - +=======================+=======================+================================+ - | ``xx_gen*_file`` | character(\*) | Control Name: prefix from | - | | | :numref:`gencost_ctrl_files` | - | | | + suffix. | - +-----------------------+-----------------------+--------------------------------+ - | ``xx_gen*_weight`` | character(\*) | Weights in the form | - | | | of | - | | | :math:`\sigma_{\vec{u | - | | | }_j}^{-2}` | - +-----------------------+-----------------------+--------------------------------+ - | ``xx_gen*_bounds`` | real(5) | Apply bounds | - +-----------------------+-----------------------+--------------------------------+ - | ``xx_gen*_preproc`` | character(\*) | Control | - | | | preprocessor(s) (see | - | | | :numref:`gencost_ctrl_preproc` | - | | | ) | - +-----------------------+-----------------------+--------------------------------+ - | ``xx_gen*_preproc_c`` | character(\*) | Preprocessor | - | | | character arguments (see | - | | | :numref:`genarr_preproc_c`) | - +-----------------------+-----------------------+--------------------------------+ - | ``xx_gen*_preproc_i`` | integer(\*) | Preprocessor integer | - | | | arguments | - +-----------------------+-----------------------+--------------------------------+ - | ``xx_gen*_preproc_r`` | real(\*) | Preprocessor real | - | | | arguments | - +-----------------------+-----------------------+--------------------------------+ - | ``gen*Precond`` | real | Preconditioning | - | | | factor (:math:`=1` by | - | | | default) | - +-----------------------+-----------------------+--------------------------------+ - | ``mult_gen*`` | real | Cost function | - | | | multiplier | - | | | :math:`\beta_j` | - | | | (:math:`= 1` by | - | | | default) | - +-----------------------+-----------------------+--------------------------------+ - | ``xx_gentim2d_period``| real | Frequency of | - | | | adjustments (in | - | | | seconds) | - +-----------------------+-----------------------+--------------------------------+ - |``xx_gentim2d_startda``| integer | Adjustment start date | - |``te1`` | | | - +-----------------------+-----------------------+--------------------------------+ - |``xx_gentim2d_startda``| integer | Default: model start | - |``te2`` | | date | - +-----------------------+-----------------------+--------------------------------+ - | ``xx_gentim2d_cumsum``| logical | Accumulate control | - | | | adjustments | - +-----------------------+-----------------------+--------------------------------+ - | ``xx_gentim2d_glosum``| logical | Global sum of | - | | | adjustment (output is | - | | | still 2D) | - +-----------------------+-----------------------+--------------------------------+ + +------------------------------------+------------------------------+-------------------------------------------------------------------------+ + | Name | Default value | Description | + +====================================+==============================+=========================================================================+ + | ``xx_gen*_file`` | :kbd:`' '` | control fllename: prefix from :numref:`gencost_ctrl_files` + suffix | + +------------------------------------+------------------------------+-------------------------------------------------------------------------+ + | ``xx_gen*_weight`` | :kbd:`' '` | filename for weights in the form of :math:`\sigma_{\vec{u}_j}^{-2}` | + +------------------------------------+------------------------------+-------------------------------------------------------------------------+ + | ``xx_gen*_bounds`` | 0.0, 0.0, 0.0, 0.0, 0.0 | apply bounds | + +------------------------------------+------------------------------+-------------------------------------------------------------------------+ + | ``xx_gen*_preproc`` | :kbd:`' '` | control preprocessor (see :numref:`gencost_ctrl_preproc`) | + +------------------------------------+------------------------------+-------------------------------------------------------------------------+ + | ``xx_gen*_preproc_c`` | :kbd:`' '` | preprocessor character arguments (see :numref:`genarr_preproc_c`) | + +------------------------------------+------------------------------+-------------------------------------------------------------------------+ + | ``xx_gen*_preproc_i`` | 0 | preprocessor integer arguments | + +------------------------------------+------------------------------+-------------------------------------------------------------------------+ + | ``xx_gen*_preproc_r`` | 0.0 | preprocessor real arguments | + +------------------------------------+------------------------------+-------------------------------------------------------------------------+ + | ``gen*Precond`` | 1.0 | preconditioning factor | + +------------------------------------+------------------------------+-------------------------------------------------------------------------+ + | ``mult_gen*`` | 1.0 | cost function multiplier :math:`\beta_j` | + +------------------------------------+------------------------------+-------------------------------------------------------------------------+ + | :varlink:`xx_gentim2d_period` | 0.0 | frequency of adjustments (s) | + +------------------------------------+------------------------------+-------------------------------------------------------------------------+ + | :varlink:`xx_gentim2d_startdate1` | :varlink:`startdate_1` | adjustment start date 1 yyyymmdd (default from :filelink:`pkg/cal`; | + | | | see :numref:`sub_phys_pkg_cal`) | + +------------------------------------+------------------------------+-------------------------------------------------------------------------+ + | :varlink:`xx_gentim2d_startdate2` | :varlink:`startdate_2` | adjustment start date 2 hhmmss (default from :filelink:`pkg/cal`; | + | | | see :numref:`sub_phys_pkg_cal`) | + +------------------------------------+------------------------------+-------------------------------------------------------------------------+ + | :varlink:`xx_gentim2d_cumsum` | FALSE | accumulate control adjustments | + +------------------------------------+------------------------------+-------------------------------------------------------------------------+ + | :varlink:`xx_gentim2d_glosum` | FALSE | global sum of adjustment (note: output is still 2D) | + +------------------------------------+------------------------------+-------------------------------------------------------------------------+ + +.. _gen_ctrl_fields: + +Generic Control Fields +^^^^^^^^^^^^^^^^^^^^^^ .. table:: Generic control prefixes implemented as of checkpoint 67x. :name: gencost_ctrl_files @@ -848,24 +839,34 @@ the resulting new control vector to the model grid unless CPP-flag +--------------------+-----------------------+--------------------------------+ | | ``xx_geothermal`` | geothermal heat flux | +--------------------+-----------------------+--------------------------------+ - | | ``xx_shicoefft`` | shelfice thermal transfer | - | | | coefficient | + | | ``xx_shicoefft`` | package :ref:`shelfice | + | | | ` | + | | | thermal transfer coefficient | | | | (see :numref:`shi_ctrl`) | +--------------------+-----------------------+--------------------------------+ - | | ``xx_shicoeffs`` | shelfice salinity transfer | + | | ``xx_shicoeffs`` | package :ref:`shelfice | + | | | ` | + | | | salinity transfer | | | | coefficient | | | | (see :numref:`shi_ctrl`) | +--------------------+-----------------------+--------------------------------+ - | | ``xx_shicdrag`` | shelfice drag coefficient | + | | ``xx_shicdrag`` | package :ref:`shelfice | + | | | ` | + | | | drag coefficient | | | | (see :numref:`shi_ctrl`) | +--------------------+-----------------------+--------------------------------+ - | | ``xx_depth`` | bottom topography | - | | | requires to define | + | | ``xx_depth`` | bottom topography; | + | | | requires #define | | | | :varlink:`ALLOW_DEPTH_CONTROL` | +--------------------+-----------------------+--------------------------------+ - | | ``xx_siheff`` | initial sea ice thickness | + | | ``xx_siheff`` | package :ref:`seaice | + | | | ` | + | | | initial sea ice thickness | + +--------------------+-----------------------+--------------------------------+ + | | ``xx_siarea`` | package :ref:`seaice | + | | | ` | + | | | initial sea ice area | +--------------------+-----------------------+--------------------------------+ - | | ``xx_siarea`` | initial sea ice area | +--------------------+-----------------------+--------------------------------+ | 3D, time-invariant | ``genarr3d`` | | | controls | | | @@ -878,12 +879,19 @@ the resulting new control vector to the model grid unless CPP-flag +--------------------+-----------------------+--------------------------------+ | | ``xx_vvel`` | initial meridional velocity | +--------------------+-----------------------+--------------------------------+ - | | ``xx_kapgm`` | GM coefficient | + | | ``xx_kapgm`` | package :ref:`gmredi | + | | | ` | + | | | GM thickness diffusivity | + | | | (see :numref:`GM_bolus_desc`) | +--------------------+-----------------------+--------------------------------+ - | | ``xx_kapredi`` | isopycnal diffusivity | + | | ``xx_kapredi`` | package :ref:`gmredi | + | | | ` | + | | | isopycnal ("Redi") diffusivity | + | | | (see :numref:`GM_redi_desc`) | +--------------------+-----------------------+--------------------------------+ | | ``xx_diffkr`` | diapycnal diffusivity | +--------------------+-----------------------+--------------------------------+ + +--------------------+-----------------------+--------------------------------+ | 2D, time-varying | ``gentim2D`` | | | controls | | | +--------------------+-----------------------+--------------------------------+ @@ -908,7 +916,7 @@ the resulting new control vector to the model grid unless CPP-flag | | ``xx_tauv`` | meridional wind stres | +--------------------+-----------------------+--------------------------------+ | | ``xx_gen_precip`` | globally averaged | - | | | precipitation? | + | | | precipitation | +--------------------+-----------------------+--------------------------------+ | | ``xx_hflux`` | net heat flux | +--------------------+-----------------------+--------------------------------+ @@ -917,6 +925,11 @@ the resulting new control vector to the model grid unless CPP-flag | | ``xx_shifwflx`` | shelfice melt rate | +--------------------+-----------------------+--------------------------------+ +.. _gen_ctrl_proc: + +Generic Control Processing Options +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + .. table:: ``xx_gen????d_preproc`` options implemented as of checkpoint 67x. Notes: :math:`^a`: If ``noscaling`` is false, the control adjustment is scaled by one on the square root of the weight before @@ -927,32 +940,32 @@ the resulting new control vector to the model grid unless CPP-flag +-----------------------+-----------------------+-----------------------+ | name | description | arguments | +=======================+=======================+=======================+ - | ``WC01`` | Correlation modeling | integer: operator | + | ``WC01`` | correlation modeling | integer: operator | | | | type (default: 1) | +-----------------------+-----------------------+-----------------------+ - | ``smooth`` | Smoothing without | integer: operator | + | ``smooth`` | smoothing without | integer: operator | | | normalization | type (default: 1) | +-----------------------+-----------------------+-----------------------+ - | ``docycle`` | Average period | integer: cycle length | + | ``docycle`` | average period | integer: cycle length | | | replication | | +-----------------------+-----------------------+-----------------------+ - | ``replicate`` | Alias for ``docycle`` |(units of | + | ``replicate`` | alias for ``docycle`` |(units of | | | |``xx_gentim2d_period``)| +-----------------------+-----------------------+-----------------------+ - | ``rmcycle`` | Periodic average | integer: cycle length | + | ``rmcycle`` | periodic average | integer: cycle length | | | subtraction | | +-----------------------+-----------------------+-----------------------+ - | ``variaweight`` | Use time-varying | — | + | ``variaweight`` | use time-varying | — | | | weight | | +-----------------------+-----------------------+-----------------------+ - | ``noscaling`` | Do not scale with | — | + | ``noscaling`` | do not scale with | — | | :math:`^{a}` | ``xx_gen*_weight`` | | +-----------------------+-----------------------+-----------------------+ - | ``documul`` | Sets | — | + | ``documul`` | sets | — | | | ``xx_gentim2d_cumsum``| | | | | | +-----------------------+-----------------------+-----------------------+ - | ``doglomean`` | Sets | — | + | ``doglomean`` | sets | — | | | ``xx_gentim2d_glosum``| | | | | | +-----------------------+-----------------------+-----------------------+ @@ -966,7 +979,7 @@ the resulting new control vector to the model grid unless CPP-flag | name | description | arguments | +=======================+=======================+=======================+ |``log10ctrl`` | Control adjustments to| See | - | | base 10 logarithm of | :numref:`log_ctrl` | + | | log10 of | :numref:`log_ctrl` | | | 2D or 3D array | | | | (not available for | | | | ``xx_gentim2d``). | | @@ -981,16 +994,28 @@ through multiplication by the respective uncertainty fields :math:`\mathcal{Q}` in :eq:`Upreproc`. Besides the scaling of :math:`\vec{u}_j` to physical units, the preprocessor :math:`\mathcal{Q}` can include, for example, spatial correlation -modeling (using an implementation of Weaver and Coutier, 2001) by +modeling (using an implementation of Weaver and Coutier, 2001 +:cite:`weaver:01`) by setting ``xx_gen*_preproc = ’WC01’``. Alternatively, setting ``xx_gen*_preproc = ’smooth’`` activates the smoothing part of ``WC01``, but omits the normalization. Additionally, bounds for the controls can be specified by setting ``xx_gen*_bounds``. In forward mode, adjustments to the :math:`i^\text{th}` control are clipped so that they remain -between ``xx_gen*_bounds(i,1)`` and ``xx_gen*_bounds(i,4)``. If -``xx_gen*_bounds(i,1)`` :math:`<` ``xx_gen*_bounds(i+1,1)`` for -:math:`i = 1, 2, 3`, then the bounds will “emulate a local -minimum;” otherwise, the bounds have no effect in adjoint mode. +between ``xx_gen*_bounds(i,1)`` and ``xx_gen*_bounds(i,4)``. The bounds +have no effect in adjoint mode unless ``xx_gen*_bounds(i,j)`` < +``xx_gen*_bounds(i,j+1)`` for :math:`j = 1, 3`. When this is the case, +the bounds will “emulate a local minimum” as follows in +:filelink:`pkg/ctrl/adctrl_bound.F`. On the minimum end, +when ``xx_gen*(i)`` < ``xx_gen*_bounds(i,2)`` and the gradient +``adxx_gen*(i)`` > 0.0, i.e., the derivative suggests that a +further decrease of ``xx_gen*(i)`` will decrease the cost, an adjustment +is enforced to reverse the sign of the gradient ``adxx_gen*(i)`` to be +negative such that any further decrease in ``xx_gen*(i)`` toward its minimum +bound ``xx_gen*_bounds(i,1)`` will be penalized. The opposite is enforced +at the maximum end when ``xx_gen*(i)`` > ``xx_gen*_bounds(i,3)`` +and ``adxx_gen*(i)`` < 0.0 such that the sign of the gradient +``adxx_gen*(i)`` will be reversed to positive to penalize any further +increase in ``xx_gen*(i)`` toward its maximum bound ``xx_gen*_bounds(i,4)``. For the case of time-varying controls, the frequency is specified by :varlink:`xx_gentim2d_period`. The generic control package interprets special @@ -1014,6 +1039,170 @@ state variable, as well as the net heat and salt (EmPmR) fluxes. The user must be mindful of control parameter combinations that make sense according to their specific setup, e.g., with the :ref:`EXF package `. +.. _gen_ctrl_rec: + +Generic Control Record Access +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +For each control variable ``$ctrlvar``, three pairs of ``.data`` files (and their +corresponding ``.meta``) are required or produced per adjoint run: + +:: + + 1a $ctrlvar.effective.$iternumber.data + 1b ad$ctrlvar.effective.$iternumber.data + + 2a $ctrlvar.tmp.$iternumber.data + 2b ad$ctrlvar.tmp.$iternumber.data + + 3a $ctrlvar.$iternumber.data + 3b ad$ctrlvar.$iternumber.data + +Pair 1a,b are the physical fields with physical units. Pair 2a,b are temporary +files storing a repeat cycle for use during calculations when +:varlink:`docycle` and :varlink:`rmcycle` are active. Pair 3a,b have units or +no units depending on the setting of :varlink:`noscaling`, which controls +scaling/unscaling by the corresponding ``xx_gen*_weight`` (see +:numref:`gencost_ctrl_preproc`). + +In an adjoint run with the 2-D time-dependent controls (CPP-flag +:varlink:`ALLOW_GENTIM2D_CONTROL` defined), three variables +:varlink:`startrec`, :varlink:`endrec`, and :varlink:`diffrec` = +:varlink:`endrec` - :varlink:`startrec` + 1 will be +initialized as a function of the startdate (:varlink:`startdate_1`, +:varlink:`startdate_2`) in ``data.cal``, the control variables startdates +(:varlink:`xx_gentim2d_startdate1`, :varlink:`xx_gentim2d_startdate2`) in +``data.ctrl``, and the pickup time :varlink:`nIter0` in +:filelink:`packages_init_fixed.F ` (which +calls :filelink:`ctrl_init.F `, +:filelink:`ctrl_init_rec.F `). These three variables +are subsequently used to determine the record length of the three pairs (1--3) +of the above files, in the order as follows: + +- First the ``ad$ctrlvar.[effective,tmp,].$iternumber`` files (1b,2b,3b) above + are initialized with zeros in + :filelink:`packages_init_fixed.F `--> + :filelink:`ctrl_init.F `--> + :filelink:`ctrl_init_ctrlvar.F ` + (with :varlink:`yadprefix` = ``'ad'``); 1b and 2b have size :varlink:`diffrec` + and 3b has size :varlink:`endrec`. + +.. parsed-literal :: + + Flow of :filelink:`pkg/ctrl` when the adjoint is running (below, for $iternumber=0000000001): + + Note: :filelink:`the_model_main.F ` calls :filelink:`the_main_loop.F `, but once the code is generated from TAF, + the preprocessed form the_model_main.f calls either mdthe_main_loop or adthe_main_loop + + :filelink:`the_model_main ` + \|-:filelink:`initialise_fixed ` + \|-:filelink:`ini_parms ` + \|-:filelink:`packages_boot `, :filelink:`packages_readparms ` + \|-:filelink:`set_parms `, :filelink:`ini_model_io `, :filelink:`ini_grid `, :filelink:`load_ref_files `, :filelink:`ini_eos `, :filelink:`set_ref_state `, + :filelink:`set_grid_factors `, :filelink:`ini_depths `, :filelink:`ini_masks_etc ` + + \|-:filelink:`packages_init_fixed ` + \|-:filelink:`cal_init_fixed `, :filelink:`diagnostics_init_early `, :filelink:`diagnostics_main_init `, :filelink:`gad_init_fixed `, + :filelink:`mom_init_fixed `, :filelink:`obcs_init_fixed `, :filelink:`exf_init_fixed `, :filelink:`kpp_init_fixed `, :filelink:`gmredi_init_fixed `, + :filelink:`seaice_cost_init_fixed `, :filelink:`smooth_init_fixed `, :filelink:`ecco_cost_init_fixed `, + :filelink:`profiles_init_fixed `, :filelink:`seaice_init_fixed `, :filelink:`salt_plume_init_fixed ` + + \|-:filelink:`ctrl_init ` + \|-:filelink:`active_write_xyz `\ ('wunit') + \|-:filelink:`ctrl_init_ctrlvar `\ (genarr2d, genarr3d) + + \|-:filelink:`ctrl_init_rec `\ (gentim2d_startdate, diffrec, startrec, endrec) + \|-:filelink:`ctrl_init_ctrlvar `\ (xx_atemp.effective.0000000001, 'c','xy') + \|-:filelink:`ctrl_set_fname `\ (xx_fname,fname) + **--> fname(1:3)=[,ad,hn]xx_atemp.effective.0000000001** + \|-:filelink:`ctrl_set_globfld_xy `\ (fname(2)) (with yadprefix='ad') + \|-:filelink:`mds_write_field `\ (adxx_atemp.effective.0000000001) **<- size diffrec** + \|-:filelink:`ctrl_init_ctrlvar `\ (xx_atemp.tmp.0000000001) + \|-:filelink:`ctrl_set_fname `\(xx_fname,fname) + **--> fname(1:3)=[,ad,hn]xx_atemp.tmp.0000000001** + \|-:filelink:`ctrl_set_globfld_xy `\ (fname(2)) (with yadprefix='ad') + \|-:filelink:`mds_write_field `\ (adxx_atemp.tmp.0000000001) **<- size diffrec** + \|-:filelink:`ctrl_init_ctrlvar `\ (xx_atemp.0000000001) + \|-:filelink:`ctrl_set_fname `\(xx_fname,fname) + **--> fname(1:3)=[,ad,hn]xx_atemp.0000000001** + \|-:filelink:`ctrl_set_globfld_xy `\ (fname(2)) (with yadprefix='ad') + \|-:filelink:`mds_write_field `\ (adxx_atemp.0000000001) **<- size endrec** + +- Second, within ``initiase_variamd.f`` (see below), records + :varlink:`startrec` to :varlink:`endrec` of file 3a + ``$ctrvar.$iternumber.data`` are read in :filelink:`ctrl_map_ini_gentim2d.F + `, processed if scaling or smoothing, etc., + need to be applied, and then written to (1a,2a) + ``$ctrlvar.{effective,tmp}.data`` of size :varlink:`diffrec`. Note these + routines contain a ``md`` or ``ad`` suffix and are produced by TAF, e.g., + ``s/r ctrl_map_ini_gentim2dmd`` (found in TAF-generated file + ``ctrl_map_ini_gentim2d_ad.f``) called from ``s/r initialize_variamd`` (found + in TAF-generated file ``initialize_varia_ad.f``), which in turn is called + from ``s/r adthe_main_loop`` (found in TAF-generated file + ``the_main_loop_ad.f``); alternatively, all of these routines are found the + concatenated file ``ad_taf_output.f``. + +.. parsed-literal :: + + \|-adthe_main_loop **only available in the_main_loop_ad.f, called from the_model_main.f** + \|-adopen (many tapes, ocean variables, atmos, obcs, etc) **initialize tapelev grid, etc.** + + \|-initialise_variamd + \|-packages_init_variablesmd + \|-:filelink:`diagnostics_init_varia `, :filelink:`kpp_init_varia `, :filelink:`exf_init_varia ` **store salt,theta** + \|-:filelink:`profiles_init_varia `, :filelink:`ecco_init_varia `, :filelink:`obcs_init_variables ` **some done after ctrl** + \|-ctrl_init_variablesmd + \|-:filelink:`ctrl_map_ini_genarr ` + \|-:filelink:`ctrl_map_genarr2d ` **e.g., set etan,siheff ctrl** + \|-:filelink:`ctrl_map_genarr3d ` **e.g., set logdiffkr ctrl** + \|-ctrl_map_ini_gentim2dmd + \|-:filelink:`ctrl_init_rec `\ (xx_atemp) + **example here for atemp: [startrec,endrec,diffrec]=[24,37,14]** + \|-:filelink:`active_read_xy `\ (fnamegenIn,lrec) + **read in xx_atemp.0000000001.data from 24->37** + \|-:filelink:`active_write_xy `\ (fnamegenOut,irec) + **write out to xx_atemp.effective.0000000001.data from 1->14** + \|-:filelink:`active_read_xy `\ (fnamegenOut,irec) + **read in xx_atemp.effective.0000000001.data 1->14, do some math** + \|-:filelink:`active_write_xy `\ (fnamegenTmp,irec) + **write out to xx_atemp.tmp.0000000001.data 1->14** + do irec=1,diffrec + \|-:filelink:`active_read_xy `\ (fnamegenOut,irec) + \|-:filelink:`mds_read_field `\ (xx_gentim2d_weight,jrec) + **if variaweight, jrec=lrec, else jrec=1** + \|-:filelink:`smooth_correl2d ` **or smooth2d** + \|-xx_gen/sqrt(wgentim2d) **if doscaling** + \|-exch_xy_rl + \|-:filelink:`active_write_xy `\ (fnamegenOut,irec) + **write out to xx_atemp.effective.0000000001.data (smooth/scaled)** + enddo + +The difference in length of records for 3[a,b] compared to 1[a,b] and 2[a,b] is +due to the fact that we need to access records :varlink:`startrec` thru +:varlink:`endrec` in 3a, i.e., file 3a needs a total of at least +:varlink:`endrec` records; file 3b is automatically generated to provide access +to :varlink:`endrec` thru :varlink:`startrec` (i.e., in reverse order). File +3b, in particular, is where adjoint sensitivity will be accumulated backward +and written; note the model would thus crash if its last record were +:varlink:`diffrec` rather than :varlink:`endrec`. For pairs 1[a,b] and 2[a,b], +because they are generated *after* we have already accessed the correct records +:varlink:`startrec` to :varlink:`endrec` in 3a, we simply create and write out +these records in the shorter file size :varlink:`diffrec`. After their file +size initializations, the control adjustment field with physical unit from file +1a is passed on to :filelink:`pkg/exf` for surface forcing application. + +Note, that :varlink:`xx_gentim2d_startdate` can be used to control how many +records the different :varlink:`xx_gentim2d` files +contain. :numref:`xx_var_sketch` illustrates a few examples. + + .. figure:: figs/ctrl_var_sketch.* + :width: 100% + :align: center + :alt: xx_var_sketch + :name: xx_var_sketch + + Sketch illustrating which parts of the timeline are covered by which + :varlink:`xx_gentim2d` files. + .. _shi_ctrl: Shelfice Control Parameters diff --git a/doc/phys_pkgs/gmredi.rst b/doc/phys_pkgs/gmredi.rst index 9fe5a5f66c..7048d57996 100644 --- a/doc/phys_pkgs/gmredi.rst +++ b/doc/phys_pkgs/gmredi.rst @@ -54,6 +54,8 @@ formulation and Redi scheme, substantial cancellations take place to the point that the horizontal fluxes are unmodified from the lateral diffusion parameterization. +.. _GM_redi_desc: + Redi scheme: Isopycnal diffusion -------------------------------- diff --git a/doc/phys_pkgs/mom_packages.rst b/doc/phys_pkgs/mom_packages.rst index a88ca7c0c1..e6b02d6980 100644 --- a/doc/phys_pkgs/mom_packages.rst +++ b/doc/phys_pkgs/mom_packages.rst @@ -1,10 +1,8 @@ Momentum Packages ----------------- - .. tabularcolumns:: |\Y{.4}|L|L| - +-----------------------------------------------+---------+----------------------------------------------------------------------------------------------------------------------+ | CPP Flag Name | Default | Description | +===============================================+=========+======================================================================================================================+ @@ -16,8 +14,9 @@ Momentum Packages | :varlink:`ALLOW_3D_VISCA4` | #undef | allow full 3D specification of horizontal biharmonic viscosity | | | | (:filelink:`MOM_COMMON_OPTIONS.h `) | +-----------------------------------------------+---------+----------------------------------------------------------------------------------------------------------------------+ +| :varlink:`ALLOW_BOTTOMDRAG_ROUGHNESS` | #undef | compute bottom drag coefficient based on roughness parameter | +| | | (:filelink:`MOM_COMMON_OPTIONS.h `) | ++-----------------------------------------------+---------+----------------------------------------------------------------------------------------------------------------------+ | :varlink:`MOM_BOUNDARY_CONSERVE` | #undef | conserve :math:`u,v` momentum next to a step (vertical plane) or a coastline edge (horizontal plane) | | | | (:filelink:`MOM_FLUXFORM_OPTIONS.h `) | +-----------------------------------------------+---------+----------------------------------------------------------------------------------------------------------------------+ - - diff --git a/doc/phys_pkgs/seaice.rst b/doc/phys_pkgs/seaice.rst index b7a704f993..3bf61c05fb 100644 --- a/doc/phys_pkgs/seaice.rst +++ b/doc/phys_pkgs/seaice.rst @@ -66,6 +66,7 @@ options see :filelink:`SEAICE_OPTIONS.h `. :varlink:`SEAICE_ALLOW_MCE`, #undef, enable use of Mohr-Coulomb yield curve with elliptical plastic potential :varlink:`SEAICE_ALLOW_TD`, #undef, enable use of teardrop and parabolic Lens yield curves with normal flow rules :varlink:`SEAICE_LSR_ZEBRA`, #undef, use a coloring method for LSR solver + :varlink:`SEAICE_ALLOW_FREEDRIFT`, #undef, enable solve approximate sea ice momentum equation and bypass solving for sea ice internal stress :varlink:`SEAICE_EXTERNAL_FLUXES`, #define, use :filelink:`pkg/exf`-computed fluxes as starting point :varlink:`SEAICE_ZETA_SMOOTHREG`, #define, use differentiable regularization for viscosities :varlink:`SEAICE_DELTA_SMOOTHREG`, #undef, use differentiable regularization for :math:`1/\Delta` @@ -76,6 +77,7 @@ options see :filelink:`SEAICE_OPTIONS.h `. :varlink:`ALLOW_SITRACER`, #undef, enable sea ice tracer package :varlink:`SEAICE_BICE_STRESS`, #undef, B-grid only for backward compatiblity: turn on ice-stress on ocean :varlink:`EXPLICIT_SSH_SLOPE`, #undef, B-grid only for backward compatiblity: use ETAN for tilt computations rather than geostrophic velocities + :varlink:`SEAICE_USE_GROWTH_ADX`, #undef, use of adjointable but more simplified sea ice thermodynamics model in :filelink:`seaice_growth_adx.F ` instead of :filelink:`seaice_growth.F ` .. _ssub_phys_pkg_seaice_runtime: @@ -127,6 +129,8 @@ General flags and parameters +------------------------------------+------------------------------+-------------------------------------------------------------------------+ | :varlink:`SEAICEuseEVPpickup` | TRUE | use EVP pickups | +------------------------------------+------------------------------+-------------------------------------------------------------------------+ + | :varlink:`SEAICEuseFREEDRIFT` | FALSE | solve approximate momentum equation, bypassing rheology | + +------------------------------------+------------------------------+-------------------------------------------------------------------------+ | :varlink:`SEAICEuseFluxForm` | TRUE | use flux form for 2nd central difference advection scheme | +------------------------------------+------------------------------+-------------------------------------------------------------------------+ | :varlink:`SEAICErestoreUnderIce` | FALSE | enable restoring to climatology under ice | @@ -153,6 +157,9 @@ General flags and parameters +------------------------------------+------------------------------+-------------------------------------------------------------------------+ | :varlink:`SEAICEuseFlooding` | TRUE | use flood-freeze algorithm | +------------------------------------+------------------------------+-------------------------------------------------------------------------+ + | :varlink:`SINegFac` | 1.0 | over/undershoot factor for seaice advective term in forward/adjoint | + | | | (SEAICE_USE_GROWTH_ADX only) | + +------------------------------------+------------------------------+-------------------------------------------------------------------------+ | :varlink:`SEAICE_no_slip` | FALSE | use no-slip boundary conditions instead of free-slip | +------------------------------------+------------------------------+-------------------------------------------------------------------------+ | :varlink:`SEAICE_deltaTtherm` | :varlink:`dTtracerLev` (1) | time step for seaice thermodynamics (s) | @@ -422,15 +429,27 @@ line successive over relaxation (LSOR) method of Zhang and Hibler (1997) :cite:`zhang:97` for use in a parallel configuration. An EVP model and a free-drift implementation can be selected with run-time flags. +:filelink:`pkg/seaice` includes the original so-called zero-layer +thermodynamics with a snow cover as in the appendix of Semtner (1976) +:cite:`semtner:76`. Two versions of this zero-layer thermodynamic code exist, +with a more developed version :filelink:`seaice_growth.F +` and a simplified version +:filelink:`seaice_growth_adx.F ` based on +Fenty (2013) :cite:`fenty:13` that excludes physics such as ITD, treatment for +sublimation, and frazil ice but provides a stable sea ice adjointable with +physical sensitivity. When the seaice_growth_adx code is enabled (by defining +:varlink:`SEAICE_USE_GROWTH_ADX` in :filelink:`SEAICE_OPTIONS.h +`), the regularization parameter +:varlink:`SINegFac` is set to zero in adjoint mode to disable the potential +propagation of unphysical terms associated with sea ice dynamics. + .. _para_phys_pkg_seaice_thsice: Compatibility with ice-thermodynamics package :filelink:`pkg/thsice` -------------------------------------------------------------------- -By default :filelink:`pkg/seaice` includes the original so-called zero-layer -thermodynamics with a snow cover as in the appendix of Semtner (1976) -:cite:`semtner:76`. The zero-layer thermodynamic model assumes that ice does +The zero-layer thermodynamic model assumes that ice does not store heat and, therefore, tends to exaggerate the seasonal variability in ice thickness. This exaggeration can be significantly reduced by using Winton's (Winton 2000 :cite:`winton:00`) three-layer thermodynamic model that permits @@ -465,11 +484,10 @@ sea-ice model is global: in ice-free regions bulk formulae (by default computed in package :filelink:`exf `) are used to estimate oceanic forcing from the atmospheric fields. -.. _para_phys_pkg_seaice_dynamics: +.. _ssub_phys_pkg_seaice_dynamics: Dynamics --------- - +======== The momentum equation of the sea-ice model is @@ -1380,10 +1398,10 @@ zeros. In analogy to :math:`(\epsilon_{12})^Z=0` on boundaries, we set :math:`\sigma_{21}^{Z}=0`, or equivalently :math:`\eta_{i,j}^{Z}=0`, on boundaries. -.. _para_phys_pkg_seaice_thermodynamics: +.. _ssub_phys_pkg_seaice_thermodynamics: Thermodynamics --------------- +============== **NOTE: THIS SECTION IS STILL NOT COMPLETE** diff --git a/doc/phys_pkgs/shelfice.rst b/doc/phys_pkgs/shelfice.rst index 9005047371..42386e5421 100644 --- a/doc/phys_pkgs/shelfice.rst +++ b/doc/phys_pkgs/shelfice.rst @@ -1,3 +1,5 @@ +.. _sub_phys_pkg_shelfice: + SHELFICE Package ---------------- diff --git a/doc/requirements.txt b/doc/requirements.txt index 304fd3fc15..3ad13eecdd 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -3,3 +3,4 @@ sphinx_rtd_theme sphinxcontrib-bibtex>=2 sphinxcontrib-programoutput numpy +urllib3<2 diff --git a/doc/tag-index b/doc/tag-index index 21702d01aa..8199a97d9c 100644 --- a/doc/tag-index +++ b/doc/tag-index @@ -1,6 +1,43 @@ Notes on tags used in MITgcmUV ============================== +checkpoint68p (2023/05/07) +o pkg/seaice: + - fix compile error related to ALLOW_AUTODIFF_TAMC/ALLOW_AUTODIFF mix-up + in seaice_evp.F; also replace many ALLOW_AUTODIFF_TAMC by ALLOW_AUTODIFF + where code is not specific to TAF/TAMC; + - call S/R seaice_get_dynforcing every timestep to always have valid TAUX/Y; + - move most of routine body of seaice_dynsolver.F inside the + SEAICE_ALLOW_DYNAMICS block. +o pkg/ecco: + - fix "sterGloH" output after a restart (issue related to Greatbatch + correction) by writing & reading (small) new "pickup_ecco" files. +o pkg/ctrl: + - fix record number (mostly in ctrl_map_ini_gentim2d.F) in case of restart, + using corresponding xx_gentim2d_startdate1/2 as specified from data.ctrl; + this finalizes (+ fix) changes made in PR #260 and #380; + - also add more debug print (+new CPP option ALLOW_CTRL_DEBUG); + - improve generic-control documentation in Chap.10 (State Estimation). +o pkg/mom_common: + - new expression for quadratic drag coefficient, function of cell thickness & + roughness length (logarithmic law of the wall); for now, only for z-Coords. + Turned on with CPP option ALLOW_BOTTOMDRAG_ROUGHNESS (MOM_COMMON_OPTIONS.h) + and run-time setting zRoughBot > 0 in data, PARMS01 namelist. + Tested in exp. tutorial_plume_on_slope, new secondary test "roughBot". +o model/src & pkgs: + Finish to remove code within retired CPP options: + - remove orphan code within (many) removed ALLOW_()_CONTROL (as listed in + PR #689 comments); remove seaice_ctrl_map_ini.F; + - remove code within retired CPP options, remove call to COST_TRANSPORT, + remove ALLOW_ECCO_BARSTORES and the 4 "ecco_ad_check_lev?_dir.h" files; + - remove (check & stop) "using_cost_bp" & "using_cost_scat" from "data.ecco"; + - avoid few unused variables; use default CTRL_OPTIONS.h in exp. hs94.1x64x5. +o pkg/seaice: + - SEAICE_USE_GROWTH_ADX: fix diagnostic SIatmFW and add diagnostic SIeprflx + to close seaice mass and heat budgets. +o pkg/dic: + - remove TAF storage dir for variable "OmegaC" (within wrong CPP option). + checkpoint68o (2023/03/13) o model/src: - salt/temp/ptracer_integrate.F: optimise store directives diff --git a/model/inc/DYNVARS.h b/model/inc/DYNVARS.h index 7061dec562..a51fee1298 100644 --- a/model/inc/DYNVARS.h +++ b/model/inc/DYNVARS.h @@ -124,15 +124,14 @@ C = 0 (not convecting) or 1 (convecting) _RL hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) -#if (defined (ALLOW_SIGMAR_COST_CONTRIBUTION) || defined (ALLOW_LEITH_QG)) +#ifdef ALLOW_LEITH_QG C Leith QG dynamic viscosity scheme requires buoyancy frequency. -C ECCO sometimes uses sigmaR (with ALLOW_SIGMAR_COST_CONTRIBUTION). C Store sigmaRfield to avoid computing density multiple times and give C access to all levels during the k-loop C sigmaRfield :: vertical gradient of buoyancy. COMMON /DYNVARS_sigmaR/ sigmaRfield _RL sigmaRfield (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) -#endif /* ALLOW_SIGMAR_COST_CONTRIBUTION or ALLOW_LEITH_QG */ +#endif /* ALLOW_LEITH_QG */ #ifdef ALLOW_SOLVE4_PS_AND_DRAG C Variables for Implicit friction (& vert. visc) in 2-D pressure solver diff --git a/model/inc/PARAMS.h b/model/inc/PARAMS.h index 8b1719228c..3b920cf47a 100644 --- a/model/inc/PARAMS.h +++ b/model/inc/PARAMS.h @@ -798,17 +798,20 @@ C NonLin_FrSurf & useRealFreshWater are set. C b) use model surface (local) value if set to UNSET_RL) C hMixCriteria:: criteria for mixed-layer diagnostic C dRhoSmall :: parameter for mixed-layer diagnostic -C hMixSmooth :: Smoothing parameter for mixed-layer diag (default=0=no smoothing) +C hMixSmooth :: Smoothing parameter for mixed-layer diag +C (default=0: no smoothing) C ivdc_kappa :: implicit vertical diffusivity for convection [m^2/s] C sideDragFactor :: side-drag scaling factor (used only if no_slip_sides) C (default=2: full drag ; =1: gives half-slip BC) C bottomDragLinear :: Linear bottom-drag coefficient (units of [r]/s) C bottomDragQuadratic :: Quadratic bottom-drag coefficient (units of [r]/m) C (if using zcoordinate, units becomes linear: m/s, quadratic: [-]) +C zRoughBot :: roughness length for quadratic bottom friction coefficient +C (in m, typical values are order 0.01 m) C smoothAbsFuncRange :: 1/2 of interval around zero, for which FORTRAN ABS C is to be replace by a smoother function C (affects myabs, mymin, mymax) -C nh_Am2 :: scales the non-hydrostatic terms and changes internal scales +C nh_Am2 :: scales non-hydrostatic terms and changes internal scales C (i.e. allows convection at different Rayleigh numbers) C tCylIn :: Temperature of the cylinder inner boundary C tCylOut :: Temperature of the cylinder outer boundary @@ -857,8 +860,8 @@ C psiEuler :: Euler angle, rotation about new z-axis & convertFW2Salt, temp_EvPrRn, salt_EvPrRn, & temp_addMass, salt_addMass, hFacMinDr, hFacMinDp, & ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth, - & sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2, - & smoothAbsFuncRange, sIceLoadFac, + & sideDragFactor, bottomDragLinear, bottomDragQuadratic, + & zRoughBot, nh_Am2, smoothAbsFuncRange, sIceLoadFac, & tCylIn, tCylOut, & phiEuler, thetaEuler, psiEuler @@ -1000,6 +1003,7 @@ C psiEuler :: Euler angle, rotation about new z-axis _RL sideDragFactor _RL bottomDragLinear _RL bottomDragQuadratic + _RL zRoughBot _RL smoothAbsFuncRange _RL sIceLoadFac _RL nh_Am2 diff --git a/model/src/config_check.F b/model/src/config_check.F index 18eda63d50..81192f1fbb 100644 --- a/model/src/config_check.F +++ b/model/src/config_check.F @@ -506,6 +506,18 @@ SUBROUTINE CONFIG_CHECK( myThid ) ENDIF #endif /* ALLOW_SRCG */ +#ifndef ALLOW_BOTTOMDRAG_ROUGHNESS + IF (zRoughBot .GT. 0.) THEN + WRITE(msgBuf,'(A,A)') 'CONFIG_CHECK: zRoughBot > 0.', + & ' but bottom drag code for roughness length is not compiled' + CALL PRINT_ERROR( msgBuf, myThid ) + WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: Re-compile with', + & ' #define ALLOW_BOTTOMDRAG_ROUGHNESS (MOM_COMMON_OPTIONS.h)' + CALL PRINT_ERROR( msgBuf, myThid ) + errCount = errCount + 1 + ENDIF +#endif /* ALLOW_BOTTOMDRAG_ROUGHNESS */ + IF ( useNSACGSolver .AND. useSRCGSolver ) THEN WRITE(msgBuf,'(A,A)') & 'CONFIG_CHECK: both useNSACGSolver and ', diff --git a/model/src/config_summary.F b/model/src/config_summary.F index 74664f825e..071cf9b9f1 100644 --- a/model/src/config_summary.F +++ b/model/src/config_summary.F @@ -208,6 +208,10 @@ SUBROUTINE CONFIG_SUMMARY( myThid ) CALL WRITE_0D_RL( bottomDragQuadratic, INDEX_NONE, & 'bottomDragQuadratic =', & ' /* quadratic bottom-drag coefficient (-) */') +# ifdef ALLOW_BOTTOMDRAG_ROUGHNESS + CALL WRITE_0D_RL( zRoughBot, INDEX_NONE, 'zRoughBot =', + & ' /* roughness length for bottom friction (m) */') +# endif CALL WRITE_0D_I( selectBotDragQuadr, INDEX_NONE, & 'selectBotDragQuadr =', & ' /* select quadratic bottom drag options */') diff --git a/model/src/do_oceanic_phys.F b/model/src/do_oceanic_phys.F index a729a7b341..882369ed3d 100644 --- a/model/src/do_oceanic_phys.F +++ b/model/src/do_oceanic_phys.F @@ -185,11 +185,6 @@ SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid) # ifdef ALLOW_SALT_PLUME # include "SALT_PLUME.h" # endif -# ifdef ALLOW_ECCO -# ifdef ALLOW_SIGMAR_COST_CONTRIBUTION -# include "ecco_cost.h" -# endif -# endif #endif /* ALLOW_AUTODIFF */ C !INPUT/OUTPUT PARAMETERS: @@ -388,9 +383,6 @@ SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid) # ifdef NONLIN_FRSURF CADJ STORE recip_hfacc = comlev1, key=ikey_dynamics, kind=isbyte # endif -# ifdef ANNUAL_BALANCE -CADJ STORE balance_itcount = comlev1, key=ikey_dynamics, kind=isbyte -# endif /* ANNUAL_BALANCE */ # ifdef ALLOW_THSICE C-- store thSIce vars before advection (called from SEAICE_MODEL) updates them: CADJ STORE iceMask,iceHeight = comlev1, key=ikey_dynamics, kind=isbyte @@ -553,9 +545,6 @@ SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid) sigmaX(i,j,k) = 0. _d 0 sigmaY(i,j,k) = 0. _d 0 sigmaR(i,j,k) = 0. _d 0 -#if (defined (ALLOW_SIGMAR_COST_CONTRIBUTION) || defined (ALLOW_LEITH_QG)) - sigmaRfield(i,j,k,bi,bj) = 0. _d 0 -#endif ENDDO ENDDO ENDDO @@ -796,13 +785,13 @@ SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid) O sigmaX, sigmaY, sigmaR, I myThid ) -#if (defined (ALLOW_SIGMAR_COST_CONTRIBUTION) || defined (ALLOW_LEITH_QG)) +#ifdef ALLOW_LEITH_QG DO j=jMin,jMax DO i=iMin,iMax sigmaRfield(i,j,k,bi,bj)=sigmaR(i,j,k) ENDDO ENDDO -#endif /* ALLOW_SIGMAR_COST_CONTRIBUTION or ALLOW_LEITH_QG */ +#endif /* ALLOW_LEITH_QG */ #ifdef ALLOW_AUTODIFF #ifdef GMREDI_WITH_STABLE_ADJOINT diff --git a/model/src/ini_dynvars.F b/model/src/ini_dynvars.F index 32e2d8f29a..427e523405 100644 --- a/model/src/ini_dynvars.F +++ b/model/src/ini_dynvars.F @@ -1,5 +1,8 @@ #include "PACKAGES_CONFIG.h" #include "CPP_OPTIONS.h" +#ifdef ALLOW_MOM_COMMON +# include "MOM_COMMON_OPTIONS.h" +#endif #ifdef ALLOW_CTRL # include "CTRL_OPTIONS.h" #endif @@ -88,6 +91,9 @@ SUBROUTINE INI_DYNVARS( myThid ) totPhiHyd(i,j,k,bi,bj) = 0. _d 0 rhoInSitu(i,j,k,bi,bj) = 0. _d 0 IVDConvCount(i,j,k,bi,bj) = 0. _d 0 +#ifdef ALLOW_LEITH_QG + sigmaRfield(i,j,k,bi,bj) = 0. _d 0 +#endif #ifdef ALLOW_SOLVE4_PS_AND_DRAG dU_psFacX(i,j,k,bi,bj) = 0. _d 0 dV_psFacY(i,j,k,bi,bj) = 0. _d 0 diff --git a/model/src/ini_parms.F b/model/src/ini_parms.F index 3b202583bd..dd26ddb742 100644 --- a/model/src/ini_parms.F +++ b/model/src/ini_parms.F @@ -209,7 +209,8 @@ SUBROUTINE INI_PARMS( myThid ) & eosType, selectP_inEOS_Zc, integr_GeoPot, selectFindRoSurf, & HeatCapacity_Cp, celsius2K, atm_Cp, atm_Rd, atm_Rq, atm_Po, & no_slip_sides, sideDragFactor, no_slip_bottom, bottomVisc_pCell, - & bottomDragLinear, bottomDragQuadratic, selectBotDragQuadr, + & bottomDragLinear, bottomDragQuadratic, zRoughBot, + & selectBotDragQuadr, & momViscosity, momAdvection, momForcing, momTidalForcing, & useCoriolis, useConstantF, useBetaPlaneF, useSphereF, & use3dCoriolis, momPressureForcing, @@ -533,6 +534,8 @@ SUBROUTINE INI_PARMS( myThid ) C- set default scheme for quadratic bottom-drag IF ( selectBotDragQuadr.EQ.-1 .AND. bottomDragQuadratic.NE.0. ) & selectBotDragQuadr = 0 + IF ( selectBotDragQuadr.EQ.-1 .AND. zRoughBot.NE.0. ) + & selectBotDragQuadr = 0 #endif /* ALLOW_MOM_COMMON */ IF ( smag3D_diffCoeff.NE.zeroRL .AND. .NOT.useSmag3D ) THEN diff --git a/model/src/packages_write_pickup.F b/model/src/packages_write_pickup.F index 2032edb710..5edbbeb32b 100644 --- a/model/src/packages_write_pickup.F +++ b/model/src/packages_write_pickup.F @@ -29,6 +29,8 @@ SUBROUTINE PACKAGES_WRITE_PICKUP( C | C |-- GGL90_WRITE_PICKUP C | +C |-- GMREDI_WRITE_PICKUP +C | C |-- BBL_WRITE_PICKUP C | C |-- CHEAPAML_WRITE_PICKUP @@ -57,10 +59,10 @@ SUBROUTINE PACKAGES_WRITE_PICKUP( C | C |-- DIAGNOSTICS_WRITE_PICKUP C | -C |-- GMREDI_WRITE_PICKUP -C | C |-- CPL_WRITE_PICKUP C | +C |-- ECCO_WRITE_PICKUP +C | C |-- MYPACKAGE_WRITE_PICKUP C !USES: @@ -118,6 +120,13 @@ SUBROUTINE PACKAGES_WRITE_PICKUP( ENDIF #endif /* ALLOW_GGL90 */ +#ifdef ALLOW_GMREDI + IF ( useGMRedi ) THEN + CALL GMREDI_WRITE_PICKUP( permPickup, + I suffix, myTime, myIter, myThid ) + ENDIF +#endif + #ifdef ALLOW_BBL IF (useBBL) THEN CALL BBL_WRITE_PICKUP( permPickup, @@ -217,13 +226,6 @@ SUBROUTINE PACKAGES_WRITE_PICKUP( ENDIF #endif -#ifdef ALLOW_GMREDI - IF ( useGMRedi ) THEN - CALL GMREDI_WRITE_PICKUP( permPickup, - I suffix, myTime, myIter, myThid ) - ENDIF -#endif - #ifdef COMPONENT_MODULE IF (useCoupler) THEN CALL CPL_WRITE_PICKUP( @@ -231,6 +233,13 @@ SUBROUTINE PACKAGES_WRITE_PICKUP( ENDIF #endif /* COMPONENT_MODULE */ +#ifdef ALLOW_ECCO + IF (useECCO) THEN + CALL ECCO_WRITE_PICKUP( permPickup, + I suffix, myTime, myIter, myThid ) + ENDIF +#endif /* ALLOW_ECCO */ + #ifdef ALLOW_MYPACKAGE IF (useMYPACKAGE) THEN CALL MYPACKAGE_WRITE_PICKUP( permPickup, diff --git a/model/src/set_defaults.F b/model/src/set_defaults.F index ce457a7420..c4d5eb2672 100644 --- a/model/src/set_defaults.F +++ b/model/src/set_defaults.F @@ -136,6 +136,7 @@ SUBROUTINE SET_DEFAULTS( sideDragFactor = 2. _d 0 bottomDragLinear = 0. bottomDragQuadratic = 0. + zRoughBot = 0. _d 0 selectBotDragQuadr = -1 viscA4 = 0. _d 11 viscA4Grid = 0. _d 0 diff --git a/model/src/set_parms.F b/model/src/set_parms.F index 8b24a813f7..7972467e55 100644 --- a/model/src/set_parms.F +++ b/model/src/set_parms.F @@ -120,8 +120,8 @@ SUBROUTINE SET_PARMS( myThid ) useHarmonicVisc = momViscosity .AND. useHarmonicVisc useBiharmonicVisc = momViscosity .AND. useBiharmonicVisc #endif /* ALLOW_MOM_COMMON */ - IF ( bottomDragQuadratic.EQ.0. .OR. .NOT.momViscosity ) - & selectBotDragQuadr = -1 + IF ( ( bottomDragQuadratic.EQ.0. .AND. zRoughBot.EQ.0. ) + & .OR. .NOT.momViscosity ) selectBotDragQuadr = -1 C-- Free-surface & pressure method uniformFreeSurfLev = usingZCoords diff --git a/model/src/the_main_loop.F b/model/src/the_main_loop.F index 3d5daf09b2..1aa57554b3 100644 --- a/model/src/the_main_loop.F +++ b/model/src/the_main_loop.F @@ -238,16 +238,18 @@ SUBROUTINE THE_MAIN_LOOP( myTime, myIter, myThid ) #ifdef STORE_LOADEDREC_TEST INTEGER bi,bj #endif /* STORE_LOADEDREC_TEST */ -#ifdef ALLOW_AUTODIFF_TAMC +#ifdef ALLOW_AUTODIFF +# ifdef ALLOW_TAMC_CHECKPOINTING INTEGER ilev_1 INTEGER ilev_2, max_lev2 -# ifndef AUTODIFF_2_LEVEL_CHECKPOINT +# ifndef AUTODIFF_2_LEVEL_CHECKPOINT INTEGER ilev_3, max_lev3 # endif -# ifdef AUTODIFF_4_LEVEL_CHECKPOINT +# ifdef AUTODIFF_4_LEVEL_CHECKPOINT INTEGER ilev_4, max_lev4 -# endif -#endif +# endif +# endif /* ALLOW_TAMC_CHECKPOINTING */ +#endif /* ALLOW_AUTODIFF */ CEOP #ifdef ALLOW_DEBUG @@ -316,36 +318,12 @@ SUBROUTINE THE_MAIN_LOOP( myTime, myIter, myThid ) #endif #ifdef ALLOW_OPENAD -# ifdef ALLOW_THETA0_CONTROL -c$openad INDEPENDENT(xx_theta_dummy) -# endif -# ifdef ALLOW_SALT0_CONTROL -c$openad INDEPENDENT(xx_salt_dummy) -# endif -# ifdef ALLOW_HFLUX0_CONTROL -c$openad INDEPENDENT(xx_hflux0) -# endif -# ifdef ALLOW_SFLUX0_CONTROL -c$openad INDEPENDENT(xx_sflux0) -# endif -# ifdef ALLOW_TAUU0_CONTROL -c$openad INDEPENDENT(xx_tauu0) -# endif -# ifdef ALLOW_TAUV0_CONTROL -c$openad INDEPENDENT(xx_tauv0) -# endif # ifdef ALLOW_DIFFKR_CONTROL c$openad INDEPENDENT(xx_diffkr_dummy) # endif # ifdef ALLOW_KAPGM_CONTROL c$openad INDEPENDENT(xx_kapgm) # endif -# ifdef ALLOW_TR10_CONTROL -c$openad INDEPENDENT(xx_tr1) -# endif -# ifdef ALLOW_HFLUXM_CONTROL -c$openad INDEPENDENT(xx_hfluxm) -# endif # ifdef ALLOW_GENARR2D_CONTROL cphc$openad INDEPENDENT(xx_genarr2d) c$openad INDEPENDENT(xx_genarr2d_dummy) @@ -411,15 +389,15 @@ SUBROUTINE THE_MAIN_LOOP( myTime, myIter, myThid ) do ilev_4 = 1,nchklev_4 if(ilev_4.le.max_lev4) then c************************************** -#ifdef ALLOW_AUTODIFF_WHTAPEIO +# ifdef ALLOW_AUTODIFF_WHTAPEIO CALL AUTODIFF_WHTAPEIO_SYNC( 4 , 0, myThid ) -#endif +# endif CALL AUTODIFF_STORE( myThid ) #include "checkpoint_lev4_directives.h" CALL AUTODIFF_RESTORE( myThid ) -#ifdef ALLOW_AUTODIFF_WHTAPEIO +# ifdef ALLOW_AUTODIFF_WHTAPEIO CALL AUTODIFF_WHTAPEIO_SYNC( 4 , 1, myThid ) -#endif +# endif c************************************** c-- Initialise storage for the middle loop. CADJ INIT tapelev3 = USER @@ -430,15 +408,15 @@ SUBROUTINE THE_MAIN_LOOP( myTime, myIter, myThid ) do ilev_3 = 1,nchklev_3 if(ilev_3.le.max_lev3) then c************************************** -#ifdef ALLOW_AUTODIFF_WHTAPEIO +# ifdef ALLOW_AUTODIFF_WHTAPEIO CALL AUTODIFF_WHTAPEIO_SYNC( 3 , 0, myThid ) -#endif +# endif CALL AUTODIFF_STORE( myThid ) #include "checkpoint_lev3_directives.h" CALL AUTODIFF_RESTORE( myThid ) -#ifdef ALLOW_AUTODIFF_WHTAPEIO +# ifdef ALLOW_AUTODIFF_WHTAPEIO CALL AUTODIFF_WHTAPEIO_SYNC( 3 , 1, myThid ) -#endif +# endif c************************************** c-- Initialise storage for the middle loop. CADJ INIT tapelev2 = USER @@ -448,20 +426,20 @@ SUBROUTINE THE_MAIN_LOOP( myTime, myIter, myThid ) do ilev_2 = 1,nchklev_2 if(ilev_2.le.max_lev2) then c************************************** -#ifdef ALLOW_AUTODIFF_WHTAPEIO +# ifdef ALLOW_AUTODIFF_WHTAPEIO CALL AUTODIFF_WHTAPEIO_SYNC( 2 , 0, myThid ) -#endif +# endif CALL AUTODIFF_STORE( myThid ) #include "checkpoint_lev2_directives.h" CALL AUTODIFF_RESTORE( myThid ) -#ifdef ALLOW_AUTODIFF_WHTAPEIO +# ifdef ALLOW_AUTODIFF_WHTAPEIO CALL AUTODIFF_WHTAPEIO_SYNC( 2 , 1, myThid ) -#endif +# endif c************************************** -# endif /* ALLOW_TAMC_CHECKPOINTING */ +# endif /* ALLOW_TAMC_CHECKPOINTING */ -# ifdef ALLOW_AUTODIFF_TAMC +# ifdef ALLOW_AUTODIFF_TAMC c************************************** c-- Initialize storage for the innermost loop. c-- Always check common block sizes for the checkpointing! @@ -528,7 +506,7 @@ SUBROUTINE THE_MAIN_LOOP( myTime, myIter, myThid ) CADJ INIT comlev1_bibj_k_gadice_pass = COMMON, CADJ & nchklev_1*nSx*nSy*maxpass*maxcube # endif /* DISABLE_MULTIDIM_ADVECTION */ -# endif /* ALLOW_SEAICE */ +# endif /* ALLOW_SEAICE */ c-- # ifdef ALLOW_THSICE C Tape for thsice_advection, which is called for thSIce_nAdv (=5) @@ -537,7 +515,7 @@ SUBROUTINE THE_MAIN_LOOP( myTime, myIter, myThid ) CADJ & nchklev_1*nSx*nSy*maxcube*thSIce_nAdv CADJ INIT comlev1_thsice_nlyr = COMMON,nchklev_1*nSx*nSy*nlyr CADJ INIT comlev1_thsice_s4t = COMMON,nchklev_1*nSx*nSy*MaxTsf -# if (defined ALLOW_EXF && defined ALLOW_BULKFORMULAE) +# if (defined ALLOW_EXF && defined ALLOW_BULKFORMULAE) C These tapes are only used within thsice_get_exf.F CADJ INIT comlev1_thsice_exf = COMMON, CADJ & nchklev_1*nSx*nSy*(MaxTsf+1) @@ -545,7 +523,7 @@ SUBROUTINE THE_MAIN_LOOP( myTime, myIter, myThid ) CADJ & nchklev_1*nSx*nSy*(MaxTsf+1)*niter_bulk CADJ INIT comlev1_thsice_exf_ij = COMMON, CADJ & nchklev_1*nSx*nSy*(MaxTsf+1)*niter_bulk*sNx*sNy -# endif +# endif # endif /* ALLOW_THSICE */ c-- # ifdef ALLOW_STREAMICE @@ -560,29 +538,29 @@ SUBROUTINE THE_MAIN_LOOP( myTime, myIter, myThid ) CADJ INIT comlev1_cg2d = COMMON,nchklev_1 CADJ INIT comlev1_cg2d_iter = COMMON,nchklev_1*numItersMax # endif -# endif /* ALLOW_AUTODIFF_TAMC */ +# endif /* ALLOW_AUTODIFF_TAMC */ c-- c************************************** -#ifdef STORE_LOADEDREC_TEST +# ifdef STORE_LOADEDREC_TEST DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) loadedRec(bi,bj) = 0 ENDDO ENDDO -#endif /* STORE_LOADEDREC_TEST */ +# endif /* STORE_LOADEDREC_TEST */ -#if ( defined ALLOW_AUTODIFF_TAMC && defined ALLOW_OFFLINE ) +# if ( defined ALLOW_AUTODIFF_TAMC && defined ALLOW_OFFLINE ) C The following statement forces TAF to store wVel correctly in some C outer checkpoint levels in some cases when it does not do it C automatically (similar to TICES in seaice_reg_ridge.F). This is a C TAF bug and this statement can probably be removed again, once C this bug is fixed (but it does not hurt, either). -# ifndef AUTODIFF_USE_STORE_RESTORE +# ifndef AUTODIFF_USE_STORE_RESTORE CADJ INCOMPLETE wVel -# endif -#endif -#ifdef ALLOW_TAMC_CHECKPOINTING +# endif +# endif +# ifdef ALLOW_TAMC_CHECKPOINTING do ilev_1 = 1,nchklev_1 @@ -590,12 +568,12 @@ SUBROUTINE THE_MAIN_LOOP( myTime, myIter, myThid ) c-- choice of the 3-tupel ( nchklev_1, nchklev_2, nchklev_3 ). iloop = (ilev_2 - 1)*nchklev_1 + ilev_1 -# ifndef AUTODIFF_2_LEVEL_CHECKPOINT +# ifndef AUTODIFF_2_LEVEL_CHECKPOINT & + (ilev_3 - 1)*nchklev_2*nchklev_1 -# endif -# ifdef AUTODIFF_4_LEVEL_CHECKPOINT +# endif +# ifdef AUTODIFF_4_LEVEL_CHECKPOINT & + (ilev_4 - 1)*nchklev_3*nchklev_2*nchklev_1 -# endif +# endif if ( iloop .le. nTimeSteps ) then diff --git a/model/src/the_model_main.F b/model/src/the_model_main.F index 3c21465902..13fcbfb4a8 100644 --- a/model/src/the_model_main.F +++ b/model/src/the_model_main.F @@ -468,6 +468,7 @@ C/\ | | | | |-CD_CODE_WRITE_PICKUP :: Write CD-code pickups (see pkg/cd_code) C/\ | | | | |-OBCS_WRITE_PICKUP :: Write OBCS pickups (see pkg/obcs) C/\ | | | | |-GGL90_WRITE_PICKUP :: Write GGL90 pickups (see pkg/ggl90) +C/\ | | | | |-GMREDI_WRITE_PICKUP :: Write GMREDI pickups (see pkg/gmredi) C/\ | | | | |-BBL_WRITE_PICKUP :: Write BBL pickups (see pkg/bbl) C/\ | | | | |-CHEAPAML_WRITE_PICKUP :: Write CheapAML pickups (pkg/cheapaml) C/\ | | | | |-FLT_WRITE_PICKUP :: Write Floats pickups (see pkg/flt) @@ -475,7 +476,7 @@ C/\ | | | | |-GCHEM_WRITE_PICKUP :: Write Geo-Chem pickups (see pkg/gchem) C/\ | | | | |-SEAICE_WRITE_PICKUP :: Write SeaIce pickups (see pkg/seaice) C/\ | | | | |-STREAMICE_WRITE_PICKUP :: Write StreamIce pickups (pkg/streamice) -C/\ | | | | |-SHELFICE_WRITE_PICKUP :: Write ShelfIce pickups (pkg/shelfice) +C/\ | | | | |-SHELFICE_WRITE_PICKUP :: Write ShelfIce pickups (pkg/shelfice) C/\ | | | | |-THSICE_WRITE_PICKUP :: Write ThSIce pickups (see pkg/thsice) C/\ | | | | |-LAND_WRITE_PICKUP :: Write Land pickups (see pkg/land) C/\ | | | | |-ATM_PHYS_WRITE_PICKUP :: Write Atm-Phys pickups (pkg/atm_phys) @@ -483,6 +484,7 @@ C/\ | | | | |-FIZHI_WRITE_VEGTILES :: Write Fizhi VegTiles (see pkg/fizhi) C/\ | | | | |-FIZHI_WRITE_DATETIME :: Write Fizhi DateTime (see pkg/fizhi) C/\ | | | | |-CPL_WRITE_PICKUP :: Write Coupling-Interface pickups +C/\ | | | | |-ECCO_WRITE_PICKUP :: Write ECCO pickups (see pkg/ecco) C/\ | | | | |-MYPACKAGE_WRITE_PICKUP :: Write pkg/mypackage pickups C/\ | | | | C/\ | | | |-WRITE_PICKUP :: Write main model pickup files. diff --git a/pkg/autodiff/addummy_in_stepping.F b/pkg/autodiff/addummy_in_stepping.F index 8db4956bab..62b1a144fe 100644 --- a/pkg/autodiff/addummy_in_stepping.F +++ b/pkg/autodiff/addummy_in_stepping.F @@ -148,12 +148,6 @@ SUBROUTINE ADDUMMY_IN_STEPPING( myTime, myIter, myThid ) # ifdef ALLOW_KAPREDI_CONTROL call adexch_xyz_rl( myThid, adKapRedi ) # endif -# ifdef ALLOW_SST0_CONTROL - call adexch_xy_rl( myThid,adsst ) -# endif -# ifdef ALLOW_SSS0_CONTROL - call adexch_xy_rl( myThid,adsss ) -# endif # ifdef ALLOW_BOTTOMDRAG_CONTROL call adexch_xy_rl( myThid,adbottomdragfld) # endif @@ -189,12 +183,6 @@ SUBROUTINE ADDUMMY_IN_STEPPING( myTime, myIter, myThid ) # ifdef ALLOW_KAPREDI_CONTROL CALL ADEXCH_3D_RL( adKapRedi, Nr, myThid ) # endif -# ifdef ALLOW_SST0_CONTROL - CALL ADEXCH_XY_RS( adSST, myThid ) -# endif -# ifdef ALLOW_SSS0_CONTROL - CALL ADEXCH_XY_RS( adSSS, myThid ) -# endif # ifdef ALLOW_BOTTOMDRAG_CONTROL CALL ADEXCH_3D_RL( adBottomDragFld, 1 , myThid ) # endif @@ -259,14 +247,6 @@ SUBROUTINE ADDUMMY_IN_STEPPING( myTime, myIter, myThid ) & 11, doDump, dumpAdRecMn, myTime, myIter,myThid) # endif ENDIF -# ifdef ALLOW_SST0_CONTROL - CALL DUMP_ADJ_XY(adSST, dumRL, 'ADJsst ', 'ADJsst.', - & 11, doDump, dumpAdRecMn, myTime, myIter,myThid) -# endif -# ifdef ALLOW_SSS0_CONTROL - CALL DUMP_ADJ_XY(adSSS, dumRL, 'ADJsss ', 'ADJsss.', - & 11, doDump, dumpAdRecMn, myTime, myIter,myThid) -# endif C----------------------------------------------------------------------- C---Various packages and parameters @@ -371,14 +351,6 @@ SUBROUTINE ADDUMMY_IN_STEPPING( myTime, myIter, myThid ) c & 11, doDump, dumpAdRecMn, myTime, myIter,myThid) # endif ENDIF -# ifdef ALLOW_SST0_CONTROL - CALL DUMP_ADJ_XY(SST%d, dumRL, 'ADJsst ', 'ADJsst.', - & 11, doDump, dumpAdRecMn, myTime, myIter,myThid) -# endif -# ifdef ALLOW_SSS0_CONTROL - CALL DUMP_ADJ_XY(SSS%d, dumRL, 'ADJsss ', 'ADJsss.', - & 11, doDump, dumpAdRecMn, myTime, myIter,myThid) -# endif C----------------------------------------------------------------------- C---Various packages and parameters @@ -481,14 +453,6 @@ SUBROUTINE ADDUMMY_IN_STEPPING( myTime, myIter, myThid ) CALL MNC_CW_RL_W('D','adstate',0,0,'adFu', var2Du, myThid) CALL MNC_CW_RL_W('D','adstate',0,0,'adFv', var2Dv, myThid) -#ifdef ALLOW_SST0_CONTROL - CALL COPY_ADVAR_OUTP( adSST, dumRL, var2Du, 1, 11, myThid ) - CALL MNC_CW_RL_W('D','adstate',0,0,'adSST', var2Du, myThid) -#endif -#ifdef ALLOW_SSS0_CONTROL - CALL COPY_ADVAR_OUTP( adSSS, dumRL, var2Du, 1, 11, myThid ) - CALL MNC_CW_RL_W('D','adstate',0,0,'adSSS', var2Du, myThid) -#endif #ifdef ALLOW_BOTTOMDRAG_CONTROL CALL COPY_ADVAR_OUTP( dumRS, adBottomDragFld, & var2Du, 1, 12, myThid ) @@ -523,12 +487,6 @@ SUBROUTINE ADDUMMY_IN_STEPPING( myTime, myIter, myThid ) CALL MNC_CW_RS_W('D','adstate',0,0,'adFu', adfu, myThid) CALL MNC_CW_RS_W('D','adstate',0,0,'adFv', adfv, myThid) -#ifdef ALLOW_SST0_CONTROL - CALL MNC_CW_RS_W('D','adstate',0,0,'adSST', adsst, myThid) -#endif -#ifdef ALLOW_SSS0_CONTROL - CALL MNC_CW_RS_W('D','adstate',0,0,'adSSS', adsss, myThid) -#endif #ifdef ALLOW_BOTTOMDRAG_CONTROL CALL MNC_CW_RL_W('D','adstate',0,0, & 'adBottomDrag', adbottomdragfld, myThid) diff --git a/pkg/autodiff/autodiff_ini_model_io.F b/pkg/autodiff/autodiff_ini_model_io.F index ce17994f74..3940565913 100644 --- a/pkg/autodiff/autodiff_ini_model_io.F +++ b/pkg/autodiff/autodiff_ini_model_io.F @@ -194,26 +194,6 @@ SUBROUTINE AUTODIFF_INI_MODEL_IO( myThid ) CALL MNC_CW_ADD_VATTR_TEXT('adFv', & 'coordinates','XC YC RC iter', myThid) -#ifdef ALLOW_SST0_CONTROL - CALL MNC_CW_ADD_VNAME( 'adSST', 'Cen_xy_Hn__-__t', 3,4, myThid) - CALL MNC_CW_ADD_VATTR_TEXT('adSST', - & 'units','[cost]/[degC]', myThid) - CALL MNC_CW_ADD_VATTR_TEXT('adSST','long_name', - & 'adjoint sea_surface_temperature', myThid) - CALL MNC_CW_ADD_VATTR_TEXT('adSST', - & 'coordinates','XC YC RC iter', myThid) -#endif - -#ifdef ALLOW_SSS0_CONTROL - CALL MNC_CW_ADD_VNAME( 'adSSS', 'Cen_xy_Hn__-__t', 3,4, myThid) - CALL MNC_CW_ADD_VATTR_TEXT('adSSS', - & 'units','[cost]/[g/kg]', myThid) - CALL MNC_CW_ADD_VATTR_TEXT('adSSS','long_name', - & 'adjoint sea_surface_salinity', myThid) - CALL MNC_CW_ADD_VATTR_TEXT('adSSS', - & 'coordinates','XC YC RC iter', myThid) -#endif - #ifdef ALLOW_BOTTOMDRAG_CONTROL CALL MNC_CW_ADD_VNAME('adBottomDrag', 'Cen_xy_Hn__-__t', & 3,4, myThid) diff --git a/pkg/autodiff/autodiff_restore.F b/pkg/autodiff/autodiff_restore.F index 5b2538ff0e..1bbcbd1923 100644 --- a/pkg/autodiff/autodiff_restore.F +++ b/pkg/autodiff/autodiff_restore.F @@ -14,29 +14,29 @@ SUBROUTINE AUTODIFF_RESTORE( myThid ) -c ================================================================== -c SUBROUTINE autodiff_restore -c ================================================================== -c -c packing for checkpoint storage -c -c started: Matt Mazloff mmazloff@mit.edu 03-May-2007 -c -c ================================================================== -c SUBROUTINE autodiff_restore -c ================================================================== +C ================================================================== +C SUBROUTINE autodiff_restore +C ================================================================== +C +C packing for checkpoint storage +C +C started: Matt Mazloff mmazloff@mit.edu 03-May-2007 +C +C ================================================================== +C SUBROUTINE autodiff_restore +C ================================================================== IMPLICIT NONE -c == global variables == +C == global variables == #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" -c************************************** -c These includes are needed for -c AD-checkpointing. -c They provide the fields to be stored. +C************************************** +C These includes are needed for +C AD-checkpointing. +C They provide the fields to be stored. #include "GRID.h" #include "DYNVARS.h" @@ -61,25 +61,21 @@ SUBROUTINE AUTODIFF_RESTORE( myThid ) # include "ctrl.h" # include "CTRL_OBCS.h" #endif -c it is important that this file is included after SEAICE_SIZE.h +C it is important that this file is included after SEAICE_SIZE.h #include "AUTODIFF_STORE.h" -c == routine arguments == -c note: under the multi-threaded model myIter and -c myTime are local variables passed around as routine -c arguments. Although this is fiddly it saves the need to -c impose additional synchronisation points when they are -c updated. -c myThid - thread number for this instance of the routine. +C == routine arguments == +C myThid :: my Thread Id number INTEGER myThid #ifdef ALLOW_AUTODIFF_TAMC -c == local variables == - - INTEGER bi,bj - INTEGER I,J,K - -c-- == end of interface == +C == local variables == +#if ( defined AUTODIFF_USE_STORE_RESTORE || \ + ( defined ALLOW_OBCS && defined AUTODIFF_USE_STORE_RESTORE_OBCS )) + INTEGER bi, bj + INTEGER I, J, K +#endif +C-- == end of interface == #ifdef ALLOW_DEBUG IF ( debugMode ) CALL DEBUG_ENTER('AUTODIFF_RESTORE',myThid) @@ -288,10 +284,10 @@ SUBROUTINE AUTODIFF_RESTORE( myThid ) ENDDO ENDDO C-- this 3D array comes last because it has a variable size nITD - DO k=1,nITD + DO K=1,nITD DO J=1-OLy,sNy+OLy DO I=1-OLx,sNx+OLx - TICES(I,J,k,bi,bj) = StoreSEAICE(I,J,bi,bj,16+k) + TICES(I,J,K,bi,bj) = StoreSEAICE(I,J,bi,bj,16+K) ENDDO ENDDO ENDDO @@ -450,14 +446,14 @@ SUBROUTINE AUTODIFF_RESTORE( myThid ) ENDDO ENDDO # endif /* ALLOW_OBCS_WEST */ -#endif /* ALLOW_OBCS */ +#endif /* ALLOW_OBCS & AUTODIFF_USE_STORE_RESTORE_OBCS */ #ifdef ALLOW_DEBUG IF ( debugMode ) CALL DEBUG_LEAVE('AUTODIFF_RESTORE',myThid) #endif #endif /* ALLOW_AUTODIFF_TAMC */ -c************************************** +C************************************** RETURN END diff --git a/pkg/autodiff/autodiff_store.F b/pkg/autodiff/autodiff_store.F index afad1feb83..7349b4592e 100644 --- a/pkg/autodiff/autodiff_store.F +++ b/pkg/autodiff/autodiff_store.F @@ -14,29 +14,29 @@ SUBROUTINE AUTODIFF_STORE( myThid ) -c ================================================================== -c SUBROUTINE autodiff_store -c ================================================================== -c -c packing for checkpoint storage -c -c started: Matt Mazloff mmazloff@mit.edu 03-May-2007 -c -c ================================================================== -c SUBROUTINE autodiff_store -c ================================================================== +C ================================================================== +C SUBROUTINE autodiff_store +C ================================================================== +C +C packing for checkpoint storage +C +C started: Matt Mazloff mmazloff@mit.edu 03-May-2007 +C +C ================================================================== +C SUBROUTINE autodiff_store +C ================================================================== IMPLICIT NONE -c == global variables == +C == global variables == #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" -c************************************** -c These includes are needed for -c AD-checkpointing. -c They provide the fields to be stored. +C************************************** +C These includes are needed for +C AD-checkpointing. +C They provide the fields to be stored. #include "GRID.h" #include "DYNVARS.h" @@ -61,25 +61,22 @@ SUBROUTINE AUTODIFF_STORE( myThid ) # include "ctrl.h" # include "CTRL_OBCS.h" #endif -c it is important that this file is included after SEAICE_SIZE.h +C it is important that this file is included after SEAICE_SIZE.h #include "AUTODIFF_STORE.h" -c == routine arguments == -c note: under the multi-threaded model myIter and -c myTime are local variables passed around as routine -c arguments. Although this is fiddly it saves the need to -c impose additional synchronisation points when they are -c updated. -c myThid - thread number for this instance of the routine. +C == routine arguments == +C myThid :: my Thread Id number INTEGER myThid #ifdef ALLOW_AUTODIFF_TAMC -c == local variables == - - INTEGER bi,bj - INTEGER I,J,K +C == local variables == +#if ( defined AUTODIFF_USE_STORE_RESTORE || \ + ( defined ALLOW_OBCS && defined AUTODIFF_USE_STORE_RESTORE_OBCS )) + INTEGER bi, bj + INTEGER I, J, K +#endif -c-- == end of interface == +C-- == end of interface == #ifdef ALLOW_DEBUG IF ( debugMode ) CALL DEBUG_ENTER('AUTODIFF_STORE',myThid) @@ -341,10 +338,10 @@ SUBROUTINE AUTODIFF_STORE( myThid ) ENDDO ENDDO C-- this 3D array comes last because it has a variable size nITD - DO k=1,nITD + DO K=1,nITD DO J=1-OLy,sNy+OLy DO I=1-OLx,sNx+OLx - StoreSEAICE(I,J,bi,bj,16+k) = TICES(I,J,k,bi,bj) + StoreSEAICE(I,J,bi,bj,16+K) = TICES(I,J,K,bi,bj) ENDDO ENDDO ENDDO @@ -539,14 +536,14 @@ SUBROUTINE AUTODIFF_STORE( myThid ) ENDDO ENDDO # endif /* ALLOW_OBCS_WEST */ -#endif /* ALLOW_OBCS */ +#endif /* ALLOW_OBCS & AUTODIFF_USE_STORE_RESTORE_OBCS */ #ifdef ALLOW_DEBUG IF ( debugMode ) CALL DEBUG_LEAVE('AUTODIFF_STORE',myThid) #endif #endif /* ALLOW_AUTODIFF_TAMC */ -c************************************** +C************************************** RETURN END diff --git a/pkg/autodiff/checkpoint_lev1_directives.h b/pkg/autodiff/checkpoint_lev1_directives.h index 10c4f5c6a1..260c4e77e1 100644 --- a/pkg/autodiff/checkpoint_lev1_directives.h +++ b/pkg/autodiff/checkpoint_lev1_directives.h @@ -69,10 +69,6 @@ CADJ STORE theta, salt = comlev1, key = ikey_dynamics,kind = isbyte # include "ggl90_ad_check_lev1_dir.h" #endif -#ifdef ALLOW_ECCO -# include "ecco_ad_check_lev1_dir.h" -#endif - #ifdef ALLOW_EXF # include "exf_ad_check_lev1_dir.h" #endif /* ALLOW_EXF undef */ @@ -178,7 +174,7 @@ CADJ STORE cMeanThetaUVel = comlev1, key = ikey_dynamics, kind = isbyte CADJ STORE cMeanThetaVVel = comlev1, key = ikey_dynamics, kind = isbyte #endif -#if (defined (ALLOW_COST_ATLANTIC) || defined (ALLOW_COST_ATLANTIC_HEAT)) +#ifdef ALLOW_COST_ATLANTIC_HEAT CADJ STORE theta = comlev1, key = ikey_dynamics, kind = isbyte CADJ STORE uVel = comlev1, key = ikey_dynamics, kind = isbyte CADJ STORE vVel = comlev1, key = ikey_dynamics, kind = isbyte @@ -188,17 +184,4 @@ CADJ STORE vVel = comlev1, key = ikey_dynamics, kind = isbyte # ifdef ALLOW_DOWN_SLOPE CADJ STORE ETA, ZETA = comlev1, key = ikey_dynamics, kind = isbyte # endif -C Note: code under option ALLOW_HFLUXM_CONTROL or ANNUAL_BALANCE is not -C standard MITgcm code (-> untested and not maintained). -# ifdef ALLOW_HFLUXM_CONTROL -CADJ STORE Qnetm = comlev1, key = ikey_dynamics, kind = isbyte -CADJ STORE ETA, ZETA = comlev1, key = ikey_dynamics, kind = isbyte -# endif -# ifdef ANNUAL_BALANCE -CADJ STORE balance_itcount = comlev1, key = ikey_dynamics, kind = isbyte -CADJ STORE atmfw_tilesum = comlev1, key = ikey_dynamics, kind = isbyte -CADJ STORE qnet_tilesum = comlev1, key = ikey_dynamics, kind = isbyte -CADJ STORE qnet_corr = comlev1, key = ikey_dynamics, kind = isbyte -CADJ STORE empmr_corr = comlev1, key = ikey_dynamics, kind = isbyte -# endif /* ANNUAL_BALANCE */ #endif diff --git a/pkg/autodiff/checkpoint_lev2_directives.h b/pkg/autodiff/checkpoint_lev2_directives.h index 32ba8a5eb2..bdfc70f26f 100644 --- a/pkg/autodiff/checkpoint_lev2_directives.h +++ b/pkg/autodiff/checkpoint_lev2_directives.h @@ -107,10 +107,6 @@ CADJ STORE pc, ps, pw = tapelev2, key = ilev_2 # include "ggl90_ad_check_lev2_dir.h" #endif -#ifdef ALLOW_ECCO -# include "ecco_ad_check_lev2_dir.h" -#endif - #ifdef ALLOW_EXF # include "exf_ad_check_lev2_dir.h" #endif /* ALLOW_EXF */ @@ -193,22 +189,3 @@ CADJ STORE cMeanThetaVVel = tapelev2, key = ilev_2 #ifdef ALLOW_COST_TRACER CADJ STORE objf_tracer = tapelev2, key = ilev_2 #endif - -#ifdef ALLOW_COST_TRANSPORT -CADJ STORE objf_transport = tapelev2, key = ilev_2 -#endif - -#ifdef ALLOW_HFLUXM_CONTROL -CADJ STORE qnetm = tapelev2, key = ilev_2 -#endif - -#ifdef ALLOW_SEAICE -cph temporary for HD -# ifdef ANNUAL_BALANCE -CADJ STORE balance_itcount = tapelev2, key = ilev_2 -CADJ STORE atmfw_tilesum = tapelev2, key = ilev_2 -CADJ STORE qnet_tilesum = tapelev2, key = ilev_2 -CADJ STORE empmr_corr = tapelev2, key = ilev_2 -CADJ STORE qnet_corr = tapelev2, key = ilev_2 -# endif /* ANNUAL_BALANCE */ -#endif diff --git a/pkg/autodiff/checkpoint_lev3_directives.h b/pkg/autodiff/checkpoint_lev3_directives.h index 09256c406b..026b4fe2ca 100644 --- a/pkg/autodiff/checkpoint_lev3_directives.h +++ b/pkg/autodiff/checkpoint_lev3_directives.h @@ -107,10 +107,6 @@ CADJ STORE pc, ps, pw = tapelev3, key = ilev_3 # include "ggl90_ad_check_lev3_dir.h" #endif -#ifdef ALLOW_ECCO -# include "ecco_ad_check_lev3_dir.h" -#endif - #ifdef ALLOW_EXF # include "exf_ad_check_lev3_dir.h" #endif /* ALLOW_EXF */ @@ -193,22 +189,3 @@ CADJ STORE cMeanThetaVVel = tapelev3, key = ilev_3 #ifdef ALLOW_COST_TRACER CADJ STORE objf_tracer = tapelev3, key = ilev_3 #endif - -#ifdef ALLOW_COST_TRANSPORT -CADJ STORE objf_transport = tapelev3, key = ilev_3 -#endif - -#ifdef ALLOW_HFLUXM_CONTROL -CADJ STORE qnetm = tapelev3, key = ilev_3 -#endif - -#ifdef ALLOW_SEAICE -cph temporary for HD -# ifdef ANNUAL_BALANCE -CADJ STORE balance_itcount = tapelev3, key = ilev_3 -CADJ STORE atmfw_tilesum = tapelev3, key = ilev_3 -CADJ STORE qnet_tilesum = tapelev3, key = ilev_3 -CADJ STORE empmr_corr = tapelev3, key = ilev_3 -CADJ STORE qnet_corr = tapelev3, key = ilev_3 -# endif /* ANNUAL_BALANCE */ -#endif diff --git a/pkg/autodiff/checkpoint_lev4_directives.h b/pkg/autodiff/checkpoint_lev4_directives.h index 04af653eca..1de973c3e1 100644 --- a/pkg/autodiff/checkpoint_lev4_directives.h +++ b/pkg/autodiff/checkpoint_lev4_directives.h @@ -107,10 +107,6 @@ CADJ STORE pc, ps, pw = tapelev4, key = ilev_4 # include "ggl90_ad_check_lev4_dir.h" #endif -#ifdef ALLOW_ECCO -# include "ecco_ad_check_lev4_dir.h" -#endif - #ifdef ALLOW_EXF # include "exf_ad_check_lev4_dir.h" #endif /* ALLOW_EXF */ @@ -193,22 +189,3 @@ CADJ STORE cMeanThetaVVel = tapelev4, key = ilev_4 #ifdef ALLOW_COST_TRACER CADJ STORE objf_tracer = tapelev4, key = ilev_4 #endif - -#ifdef ALLOW_COST_TRANSPORT -CADJ STORE objf_transport = tapelev4, key = ilev_4 -#endif - -#ifdef ALLOW_HFLUXM_CONTROL -CADJ STORE qnetm = tapelev4, key = ilev_4 -#endif - -#ifdef ALLOW_SEAICE -cph temporary for HD -# ifdef ANNUAL_BALANCE -CADJ STORE balance_itcount = tapelev4, key = ilev_4 -CADJ STORE atmfw_tilesum = tapelev4, key = ilev_4 -CADJ STORE qnet_tilesum = tapelev4, key = ilev_4 -CADJ STORE empmr_corr = tapelev4, key = ilev_4 -CADJ STORE qnet_corr = tapelev4, key = ilev_4 -# endif /* ANNUAL_BALANCE */ -#endif diff --git a/pkg/cost/COST_OPTIONS.h b/pkg/cost/COST_OPTIONS.h index f02cd71a06..6a06aad094 100644 --- a/pkg/cost/COST_OPTIONS.h +++ b/pkg/cost/COST_OPTIONS.h @@ -30,7 +30,6 @@ C-- Package-specific Options & Macros go here #undef ALLOW_COST_VECTOR C >>> Cost function contributions -#undef ALLOW_COST_ATLANTIC #undef ALLOW_COST_ATLANTIC_HEAT #undef ALLOW_COST_ATLANTIC_HEAT_DOMASS diff --git a/pkg/cost/cost.h b/pkg/cost/cost.h index b68b33ee2c..718f0c0df7 100644 --- a/pkg/cost/cost.h +++ b/pkg/cost/cost.h @@ -46,9 +46,6 @@ C tile_fc :: Final cost function contribution from this tile & objf_tracer, & objf_entropy, & objf_t_misfit, -#ifdef ALLOW_COST_TRANSPORT - & objf_transport, -#endif #ifdef ALLOW_COST_DEPTH & objf_depth, #endif @@ -58,21 +55,18 @@ C tile_fc :: Final cost function contribution from this tile & ,objf_temp_tut #endif - _RL objf_atl (nsx,nsy) - _RL objf_test (nsx,nsy) - _RL objf_tracer (nsx,nsy) - _RL objf_entropy (nsx,nsy) - _RL objf_t_misfit (nsx,nsy) - _RL objf_eflux (nsx,nsy) -#ifdef ALLOW_COST_TRANSPORT - _RL objf_transport (nsx,nsy) -#endif + _RL objf_atl (nSx,nSy) + _RL objf_test (nSx,nSy) + _RL objf_tracer (nSx,nSy) + _RL objf_entropy (nSx,nSy) + _RL objf_t_misfit (nSx,nSy) + _RL objf_eflux (nSx,nSy) #ifdef ALLOW_COST_DEPTH - _RL objf_depth (nsx,nsy) + _RL objf_depth (nSx,nSy) #endif #ifdef ALLOW_COST_HFLUXM - _RL objf_hflux_tut (nsx,nsy) - _RL objf_temp_tut (nsx,nsy) + _RL objf_hflux_tut (nSx,nSy) + _RL objf_temp_tut (nSx,nSy) #endif common /cost_param_r/ @@ -83,13 +77,13 @@ C tile_fc :: Final cost function contribution from this tile common /cost_state_final_r/ & objf_state_final cph _RL objf_state_final (snx,sny,nsx,nsy) - _RL objf_state_final (snx,sny,nsx,nsy,4*Nr+1) + _RL objf_state_final (sNx,sNy,nSx,nSy,4*Nr+1) #endif #ifdef ALLOW_COST_VECTOR common /cost_vector_r/ & objf_vector - _RL objf_vector (snx,nsx,nsy) + _RL objf_vector (sNx,nSx,nSy) #endif common /cost_aux_r/ @@ -103,9 +97,6 @@ cph _RL objf_state_final (snx,sny,nsx,nsy) & multSalt, & multUvel, & multVvel, -#ifdef ALLOW_COST_TRANSPORT - & mult_transport, -#endif #ifdef ALLOW_COST_DEPTH & mult_depth, #endif @@ -126,9 +117,6 @@ cph _RL objf_state_final (snx,sny,nsx,nsy) _RL multUvel _RL multVvel _RL multEtan -#ifdef ALLOW_COST_TRANSPORT - _RL mult_transport -#endif #ifdef ALLOW_COST_DEPTH _RL mult_depth #endif diff --git a/pkg/cost/cost_atlantic_heat.F b/pkg/cost/cost_atlantic_heat.F index edb291ec27..e47db44614 100644 --- a/pkg/cost/cost_atlantic_heat.F +++ b/pkg/cost/cost_atlantic_heat.F @@ -179,8 +179,6 @@ subroutine cost_atlantic_heat( myThid ) end if end do - -#if ( !defined (ALLOW_ECCO) || !defined (ALLOW_COST_ATLANTIC) ) #ifdef ALLOW_COST_ATLANTIC_HEAT_DOMASS objf_atl(bi,bj) = & sum*1.E-6 @@ -188,7 +186,6 @@ subroutine cost_atlantic_heat( myThid ) objf_atl(bi,bj) = & sum*HeatCapacity_Cp*rhoConst/petawatt #endif -#endif c-- end of bi,bj loop end do diff --git a/pkg/cost/cost_final.F b/pkg/cost/cost_final.F index 6538a6eb88..7fe5d6a5c6 100644 --- a/pkg/cost/cost_final.F +++ b/pkg/cost/cost_final.F @@ -120,11 +120,9 @@ SUBROUTINE COST_FINAL( myThid ) WRITE(standardMessageUnit,'(A,D22.15)') & ' --> objf_tracer(bi,bj) = ', objf_tracer(bi,bj) #endif -#if ( !defined (ALLOW_ECCO) || !defined (ALLOW_COST_ATLANTIC) ) -# ifdef ALLOW_COST_ATLANTIC_HEAT +#ifdef ALLOW_COST_ATLANTIC_HEAT WRITE(standardMessageUnit,'(A,D22.15)') & ' --> objf_atl(bi,bj) = ', objf_atl(bi,bj) -# endif #endif #ifdef ALLOW_COST_TEMP WRITE(standardMessageUnit,'(A,D22.15)') @@ -134,10 +132,6 @@ SUBROUTINE COST_FINAL( myThid ) WRITE(standardMessageUnit,'(A,D22.15)') & ' --> objf_hflux_tut(bi,bj) = ', objf_hflux_tut(bi,bj) #endif -#ifdef ALLOW_COST_TRANSPORT - WRITE(standardMessageUnit,'(A,D22.15)') - & ' --> objf_transport(bi,bj) = ', objf_transport(bi,bj) -#endif #ifdef ALLOW_COST_DEPTH WRITE(standardMessageUnit,'(A,D22.15)') & ' --> objf_depth(bi,bj) = ', objf_depth(bi,bj) @@ -150,13 +144,8 @@ SUBROUTINE COST_FINAL( myThid ) #ifdef ALLOW_COST_TRACER & + mult_tracer * objf_tracer(bi,bj) #endif -#if ( !defined (ALLOW_ECCO) || !defined (ALLOW_COST_ATLANTIC) ) -# ifdef ALLOW_COST_ATLANTIC_HEAT +#ifdef ALLOW_COST_ATLANTIC_HEAT & + mult_atl * objf_atl(bi,bj) -# endif -#endif -#ifdef ALLOW_COST_TRANSPORT - & + mult_transport * objf_transport(bi,bj) #endif #ifdef ALLOW_COST_TEMP & + mult_temp_tut * objf_temp_tut(bi,bj) diff --git a/pkg/cost/cost_init_varia.F b/pkg/cost/cost_init_varia.F index dc571167db..aede2abda8 100644 --- a/pkg/cost/cost_init_varia.F +++ b/pkg/cost/cost_init_varia.F @@ -25,40 +25,23 @@ SUBROUTINE COST_INIT_VARIA( mythid ) #include "EEPARAMS.h" #include "SIZE.h" - #include "cost.h" c == routine arguments == - integer mythid c == local variables == - integer i,j,k integer bi,bj - integer itlo,ithi - integer jtlo,jthi - -c == external functions == - c == end of interface == - jtlo = mybylo(mythid) - jthi = mybyhi(mythid) - itlo = mybxlo(mythid) - ithi = mybxhi(mythid) c-- Initialize the tiled cost function contributions. - do bj = jtlo,jthi - do bi = itlo,ithi + DO bj=myByLo(myThid),myByHi(myThid) + DO bi=myBxLo(myThid),myBxHi(myThid) tile_fc(bi,bj) = 0. _d 0 -#if ( !defined (ALLOW_ECCO) || !defined (ALLOW_COST_ATLANTIC) ) objf_atl(bi,bj) = 0. _d 0 -#endif objf_test(bi,bj) = 0. _d 0 objf_tracer(bi,bj) = 0. _d 0 -#ifdef ALLOW_COST_TRANSPORT - objf_transport(bi,bj) = 0. _d 0 -#endif #ifdef ALLOW_COST_DEPTH objf_depth(bi,bj) = 0. _d 0 #endif @@ -94,8 +77,8 @@ SUBROUTINE COST_INIT_VARIA( mythid ) end do end do #endif - enddo - enddo + ENDDO + ENDDO #ifdef ALLOW_SEAICE call seaice_cost_init_varia( mythid ) diff --git a/pkg/cost/cost_readparms.F b/pkg/cost/cost_readparms.F index 6d4b4818cc..8d9d59ca85 100644 --- a/pkg/cost/cost_readparms.F +++ b/pkg/cost/cost_readparms.F @@ -36,18 +36,15 @@ subroutine cost_readparms( mythid ) c-- Read the namelist input. namelist /cost_nml/ - & mult_atl, mult_test, mult_tracer - & , multTheta, multSalt, multUvel, multVvel, multEtan -#ifdef ALLOW_COST_TRANSPORT - & , mult_transport -#endif + & mult_atl, mult_test, mult_tracer, + & multTheta, multSalt, multUvel, multVvel, multEtan, #ifdef ALLOW_COST_DEPTH - & , mult_depth + & mult_depth, #endif - & , lastinterval #ifdef ALLOW_COST_HFLUXM - & , mult_temp_tut, mult_hflux_tut + & mult_temp_tut, mult_hflux_tut, #endif + & lastinterval _BEGIN_MASTER( myThid ) @@ -60,9 +57,6 @@ subroutine cost_readparms( mythid ) multUvel = 0. _d 0 multVvel = 0. _d 0 multEtan = 0. _d 0 -#ifdef ALLOW_COST_TRANSPORT - mult_transport = 0. _d 0 -#endif #ifdef ALLOW_COST_DEPTH mult_depth = 0. _d 0 #endif @@ -96,9 +90,9 @@ subroutine cost_readparms( mythid ) CLOSE(iUnit,STATUS='DELETE') #endif /* SINGLE_DISK_IO */ - IF ( MOD(lastinterval,deltaTclock) .GT. 0. ) + IF ( MOD(lastinterval,deltaTClock) .GT. 0. ) & lastinterval = MAX( - & INT(lastinterval/deltaTclock-1)*deltaTclock,deltaTclock) + & INT(lastinterval/deltaTClock-1)*deltaTClock,deltaTClock) #if (defined ALLOW_COST_HFLUXM) || (defined ALLOW_COST_TEMP) c-- get the weights for the cost functions diff --git a/pkg/cost/cost_tile.F b/pkg/cost/cost_tile.F index 5004216f31..e06283855a 100644 --- a/pkg/cost/cost_tile.F +++ b/pkg/cost/cost_tile.F @@ -143,10 +143,6 @@ subroutine cost_tile( mytime, myiter, myThid ) CALL COST_TRACER( bi, bj, myThid ) #endif -#ifdef ALLOW_COST_TRANSPORT - CALL COST_TRANSPORT( bi, bj, myTime, myIter, myThid ) -#endif /* ALLOW_COST_TRANSPORT */ - ENDDO ENDDO diff --git a/pkg/ctrl/CTRL_OPTIONS.h b/pkg/ctrl/CTRL_OPTIONS.h index 2332d0337e..020693af71 100644 --- a/pkg/ctrl/CTRL_OPTIONS.h +++ b/pkg/ctrl/CTRL_OPTIONS.h @@ -49,7 +49,7 @@ C Allows for Vertical Diffusivity controls C Allows bathymetry as a control vector C Note: keep this Option separated from generic control since this control C involves many new dependencies that we would like to avoid in general. -#define ALLOW_DEPTH_CONTROL +#undef ALLOW_DEPTH_CONTROL #ifdef ALLOW_DEPTH_CONTROL C Only relevant within DEPTH_CONTROL code: # define USE_SMOOTH_MIN @@ -58,9 +58,9 @@ C Only relevant within DEPTH_CONTROL code: #endif /* ALLOW_DEPTH_CONTROL */ C >>> Generic Control. -#undef ALLOW_GENARR2D_CONTROL -#undef ALLOW_GENARR3D_CONTROL -#undef ALLOW_GENTIM2D_CONTROL +#define ALLOW_GENARR2D_CONTROL +#define ALLOW_GENARR3D_CONTROL +#define ALLOW_GENTIM2D_CONTROL # undef ALLOW_UVEL0_CONTROL # undef ALLOW_VVEL0_CONTROL # undef CTRL_SET_OLD_MAXCVARS_30 @@ -103,9 +103,12 @@ C is inconsistent with the Weaver and Courtier, 2001 algorithm, and C should probably not be used. The corresponding 3D flag applied only C to deprecated code that is now removed. At some point we will remove C this flag and associated code as well. -C o apply pkg/smooth/smooth_diff2d.F to 2D controls (outside of ctrlSmoothCorrel2D) +C o apply pkg/smooth/smooth_diff2d.F to 2D controls (outside of Smooth_Correl2D) #undef ALLOW_SMOOTH_CTRL2D +C o Print more debug info to STDOUT +#undef ALLOW_CTRL_DEBUG + C ================================================================== #endif /* ndef ECCO_CPPOPTIONS_H */ #endif /* ALLOW_CTRL */ diff --git a/pkg/ctrl/ctrl_check.F b/pkg/ctrl/ctrl_check.F index 0dda053a0b..71e7377fbb 100644 --- a/pkg/ctrl/ctrl_check.F +++ b/pkg/ctrl/ctrl_check.F @@ -54,10 +54,6 @@ SUBROUTINE CTRL_CHECK( myThid ) C msgBuf :: Informational/error message buffer CHARACTER*(MAX_LEN_MBUF) msgBuf INTEGER errCount -#if ( defined ALLOW_USTRESS_CONTROL || defined ALLOW_VSTRESS_CONTROL ) - LOGICAL solve4Stress -#endif - #if ( defined ALLOW_GENARR2D_CONTROL || defined ALLOW_GENARR3D_CONTROL || defined ALLOW_GENTIM2D_CONTROL ) INTEGER iarr #endif @@ -215,39 +211,6 @@ SUBROUTINE CTRL_CHECK( myThid ) # endif #endif /* ALLOW_KAPREDI_CONTROL */ -#ifdef ALLOW_SEAICE -C pkg/seaice requires a particular set of control parameters -C which in turn require a particular set of input fields -# if ( defined ALLOW_USTRESS_CONTROL || defined ALLOW_VSTRESS_CONTROL ) -C needs to replaced by appropriate runtime options - IF ( useAtmWind ) THEN - solve4Stress = .TRUE. - ELSE -# ifdef ALLOW_BULK_LARGEYEAGER04 - solve4Stress = wspeedfile .NE. ' ' -# else - solve4Stress = .FALSE. -# endif - ENDIF - IF (.NOT.solve4Stress) THEN - WRITE(msgBuf,'(A)') - & 'The SEAICE adjoint does not allow the surface fluxes' - CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)') ' ALLOW_USTRESS_CONTROL' - CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)') ' ALLOW_VSTRESS_CONTROL' - CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)') 'to be control variables' - CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)') 'except if wspeedfile is specified' - CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)') 'and ifdef ALLOW_BULK_LARGEYEAGER04' - CALL PRINT_ERROR( msgBuf, myThid ) - errCount = errCount + 1 - ENDIF -# endif /* ALLOW_USTRESS_CONTROL or ALLOW_VSTRESS_CONTROL */ -#endif /* ALLOW_SEAICE */ - #ifndef ALLOW_PACKUNPACK_METHOD2 # ifndef EXCLUDE_CTRL_PACK IF ( useSingleCpuIO ) THEN @@ -262,10 +225,7 @@ SUBROUTINE CTRL_CHECK( myThid ) #ifdef ALLOW_PACKUNPACK_METHOD2 # ifndef EXCLUDE_CTRL_PACK -# if ( defined ALLOW_OBCSN_CONTROL || \ - defined ALLOW_OBCSS_CONTROL || \ - defined ALLOW_OBCSW_CONTROL || \ - defined ALLOW_OBCSE_CONTROL ) +# ifdef ALLOW_OBCS_CONTROL WRITE(msgBuf,'(2A)') & 'ALLOW_PACKUNPACK_METHOD2 does not work with', & 'open boundary controls (see verif/obcs_ctrl).' diff --git a/pkg/ctrl/ctrl_cost_gen.F b/pkg/ctrl/ctrl_cost_gen.F index f5b0aecc12..0901c2dc4f 100644 --- a/pkg/ctrl/ctrl_cost_gen.F +++ b/pkg/ctrl/ctrl_cost_gen.F @@ -132,7 +132,7 @@ subroutine ctrl_cost_gen2d( enddo c-- >>> Loop over records. - do irec = 1,nrec + do irec = startrec,endrec #ifdef ALLOW_AUTODIFF call active_read_xy( diff --git a/pkg/ctrl/ctrl_get_gen_rec.F b/pkg/ctrl/ctrl_get_gen_rec.F index fdcf63d10a..d6ed4437d8 100644 --- a/pkg/ctrl/ctrl_get_gen_rec.F +++ b/pkg/ctrl/ctrl_get_gen_rec.F @@ -133,8 +133,7 @@ subroutine ctrl_get_gen_rec( c call cal_TimePassed( fldstartdate, modelstartdate, c & difftime, mythid ) c call cal_ToSeconds ( difftime, fldsecs, mythid ) -c startrec = int((modelstart + startTime - fldsecs)/ -c & fldperiod) + 1 +c startrec = int((modelstart - fldsecs)/fldperiod) + 1 C Determine the flux record just before mycurrentdate. call cal_TimePassed( fldstartdate, mydate, difftime, diff --git a/pkg/ctrl/ctrl_init.F b/pkg/ctrl/ctrl_init.F index ed8c91408b..03272edcfb 100644 --- a/pkg/ctrl/ctrl_init.F +++ b/pkg/ctrl/ctrl_init.F @@ -312,10 +312,11 @@ subroutine ctrl_init( myThid ) & diffrecFull, startrec, endrecFull, & snx, sny, 1, ncvargrdtmp, 'xy', myThid ) C +C The length of adxx-files needs to be 1:endrec call ctrl_init_ctrlvar ( & xx_gentim2d_file(iarr)(1:MAX_LEN_FNAM), & 300+iarr, 400+iarr, - & diffrec, startrec, endrec, + & endrec, 1, endrec, & snx, sny, 1, ncvargrdtmp, 'xy', myThid ) C #ifndef ALLOW_OPENAD diff --git a/pkg/ctrl/ctrl_init_rec.F b/pkg/ctrl/ctrl_init_rec.F index 6d4bd86456..55d82f1899 100644 --- a/pkg/ctrl/ctrl_init_rec.F +++ b/pkg/ctrl/ctrl_init_rec.F @@ -58,6 +58,7 @@ subroutine ctrl_init_rec( integer i #ifdef ALLOW_CAL integer difftime(4) + INTEGER modelBaseDate(4) _RL diffsecs #endif /* ALLOW_CAL */ character*(max_len_mbuf) msgbuf @@ -90,15 +91,16 @@ subroutine ctrl_init_rec( endrec = 1*nfac else # ifdef ALLOW_CAL + call cal_FullDate( startdate_1, startdate_2, + & modelBaseDate , mythid ) call cal_FullDate( fldstartdate1, fldstartdate2, & fldstartdate , mythid ) - call cal_TimePassed( fldstartdate, modelstartdate, + call cal_TimePassed( modelBaseDate, fldstartdate, & difftime, mythid ) call cal_ToSeconds ( difftime, diffsecs, mythid ) - startrec = int((modelstart + startTime - diffsecs)/ - & fldperiod) + 1 - endrec = int((modelend + startTime - diffsecs + modelstep/2)/ - & fldperiod) + 2 + startrec = int((modelstart - diffsecs)/fldperiod) + 1 + endrec = int((modelend - diffsecs + modelstep/2) + & /fldperiod) + 2 if ( nfac .ne. 1 ) then c This is the case of obcs. startrec = (startrec - 1)*nfac + 1 @@ -124,4 +126,3 @@ subroutine ctrl_init_rec( return end - diff --git a/pkg/ctrl/ctrl_init_variables.F b/pkg/ctrl/ctrl_init_variables.F index b7b14d0b13..82e18e7ec1 100644 --- a/pkg/ctrl/ctrl_init_variables.F +++ b/pkg/ctrl/ctrl_init_variables.F @@ -48,6 +48,10 @@ SUBROUTINE CTRL_INIT_VARIABLES( myThid ) c == end of interface == CEOP +#ifdef ALLOW_DEBUG + IF (debugMode) CALL DEBUG_ENTER('CTRL_INIT_VARIABLES',myThid) +#endif + #ifdef ALLOW_BOTTOMDRAG_CONTROL DO bj = myByLo(myThid),myByHi(myThid) DO bi = myBxLo(myThid),myBxHi(myThid) @@ -67,9 +71,15 @@ SUBROUTINE CTRL_INIT_VARIABLES( myThid ) C-- Map the control variables onto the model state. C- Needs to be called after few {PKG}_init_varia (e.g., PTRACERS_INIT_VARIA) #if (defined (ALLOW_GENARR2D_CONTROL) || defined (ALLOW_GENARR3D_CONTROL)) +# ifdef ALLOW_DEBUG + IF (debugMode) CALL DEBUG_CALL('CTRL_MAP_INI_GENARR',myThid) +# endif CALL CTRL_MAP_INI_GENARR( myThid ) #endif #ifdef ALLOW_GENTIM2D_CONTROL +# ifdef ALLOW_DEBUG + IF (debugMode) CALL DEBUG_CALL('CTRL_MAP_INI_GENTIM2D',myThid) +# endif CALL CTRL_MAP_INI_GENTIM2D( myThid ) #endif @@ -104,10 +114,9 @@ SUBROUTINE CTRL_INIT_VARIABLES( myThid ) ENDDO #endif -#ifdef ALLOW_SEAICE - CALL SEAICE_CTRL_MAP_INI( myThid ) +#ifdef ALLOW_DEBUG + IF (debugMode) CALL DEBUG_LEAVE('CTRL_INIT_VARIABLES',myThid) #endif - #endif /* ALLOW_CTRL */ RETURN diff --git a/pkg/ctrl/ctrl_map_genarr.F b/pkg/ctrl/ctrl_map_genarr.F index 24cc7c6ca3..8e8cc2466f 100644 --- a/pkg/ctrl/ctrl_map_genarr.F +++ b/pkg/ctrl/ctrl_map_genarr.F @@ -67,6 +67,9 @@ SUBROUTINE CTRL_MAP_GENARR2D( fld, iarr, myThid ) INTEGER ilDir CEOP +#ifdef ALLOW_DEBUG + IF (debugMode) CALL DEBUG_ENTER('CTRL_MAP_GENARR2D', myThid ) +#endif C-- Now, read the control vector. doglobalread = .FALSE. ladinit = .FALSE. @@ -184,6 +187,9 @@ SUBROUTINE CTRL_MAP_GENARR2D( fld, iarr, myThid ) CALL WRITE_REC_3D_RL( fnamegenOut, ctrlprec, 1, & fld, 1, optimcycle, myThid ) +#ifdef ALLOW_DEBUG + IF (debugMode) CALL DEBUG_LEAVE('CTRL_MAP_GENARR2D', myThid ) +#endif #endif /* ALLOW_GENARR2D_CONTROL */ RETURN @@ -254,6 +260,9 @@ SUBROUTINE CTRL_MAP_GENARR3D( fld, iarr, myThid ) INTEGER ilDir CEOP +#ifdef ALLOW_DEBUG + IF (debugMode) CALL DEBUG_ENTER('CTRL_MAP_GENARR3D', myThid ) +#endif C-- Now, read the control vector. doglobalread = .FALSE. ladinit = .FALSE. @@ -384,6 +393,9 @@ SUBROUTINE CTRL_MAP_GENARR3D( fld, iarr, myThid ) CALL WRITE_REC_3D_RL( fnamegenOut, ctrlprec, Nr, & fld, 1, optimcycle, myThid ) +#ifdef ALLOW_DEBUG + IF (debugMode) CALL DEBUG_LEAVE('CTRL_MAP_GENARR3D', myThid ) +#endif #endif /* ALLOW_GENARR3D_CONTROL */ #endif /* ALLOW_OPENAD */ diff --git a/pkg/ctrl/ctrl_map_ini_genarr.F b/pkg/ctrl/ctrl_map_ini_genarr.F index be78c404eb..c89d17d93e 100644 --- a/pkg/ctrl/ctrl_map_ini_genarr.F +++ b/pkg/ctrl/ctrl_map_ini_genarr.F @@ -115,6 +115,9 @@ SUBROUTINE CTRL_MAP_INI_GENARR( myThid ) #endif /* ALLOW_GENARR3D_CONTROL */ CEOP +#ifdef ALLOW_DEBUG + IF (debugMode) CALL DEBUG_ENTER('CTRL_MAP_INI_GENARR', myThid ) +#endif #ifdef ALLOW_GENARR2D_CONTROL C-- generic 2D control variables @@ -346,5 +349,9 @@ SUBROUTINE CTRL_MAP_INI_GENARR( myThid ) #endif /* ALLOW_GENARR3D_CONTROL */ +#ifdef ALLOW_DEBUG + IF (debugMode) CALL DEBUG_LEAVE('CTRL_MAP_INI_GENARR', myThid ) +#endif + RETURN END diff --git a/pkg/ctrl/ctrl_map_ini_gentim2d.F b/pkg/ctrl/ctrl_map_ini_gentim2d.F index 505583dc48..4ce879b0a1 100644 --- a/pkg/ctrl/ctrl_map_ini_gentim2d.F +++ b/pkg/ctrl/ctrl_map_ini_gentim2d.F @@ -58,7 +58,7 @@ SUBROUTINE CTRL_MAP_INI_GENTIM2D( myThid ) integer startrec integer endrec integer diffrec - integer irec, jrec, krec + integer irec, jrec, krec, lrec integer replicated_nrec integer replicated_ntimes logical doglobalread @@ -79,6 +79,10 @@ SUBROUTINE CTRL_MAP_INI_GENTIM2D( myThid ) integer ilDir CEOP +#ifdef ALLOW_DEBUG + IF (debugMode) CALL DEBUG_ENTER('CTRL_MAP_INI_GENTIM2D',myThid) +#endif /* ALLOW_DEBUG */ + c-- Now, read the control vector. doglobalread = .false. ladinit = .false. @@ -121,6 +125,17 @@ SUBROUTINE CTRL_MAP_INI_GENTIM2D( myThid ) O diffrec, startrec, endrec, I myThid ) +C From CTRL_INIT_REC one gets [start,end,diff]rec. +C Below, file xx_*.$iter.data is read in from records startrec to endrec, +C followed by a write to file xx_*.effective.$iter.data of record 1 to diffrec +C (see TAF-generated S/R ctrl_map_ini_gentim2dmd). + +#ifdef ALLOW_CTRL_DEBUG +C Note: In the "md" (i.e. TAF modified) version of this fwd S/R, DEBUG calls and +C print statements are removed. See "Automatic Differentiation" chap. in the doc + write(*,*) 'AA: iarr,xx_gentim2d_startdate(1,iarr): ', + & iarr,xx_gentim2d_startdate(1,iarr) +#endif dosmooth=.false. dowc01 = .false. doscaling=.true. @@ -170,25 +185,50 @@ SUBROUTINE CTRL_MAP_INI_GENTIM2D( myThid ) endif enddo - DO jrec = 1,replicated_ntimes+1 - DO irec = 1,replicated_nrec +#ifdef ALLOW_CTRL_DEBUG + write(*,'(A,1x,5I6)') + & 'AD:[start,end,diff]rec, replicated_[nrec,ntimes]: ', + & startrec, endrec, diffrec, + & replicated_nrec,replicated_ntimes +#endif + DO jrec = 1, replicated_ntimes+1 + DO irec = 1, replicated_nrec #ifdef ALLOW_AUTODIFF_TAMC CADJ STORE xx_gentim2d_dummy = dummytape, key = 1 , kind = isbyte #endif krec=replicated_nrec*(jrec-1)+irec + lrec=startrec+irec-1 IF (krec.LE.endrec) THEN +#ifdef ALLOW_CTRL_DEBUG + ilgen=ilnblnk( fnamegenIn ) + write(*,*) 'AE: iarr,[i,j,k,l]rec: ',iarr,irec,jrec,lrec + write(*,*) 'AF: fnamegenIn: ', fnamegenIn(1:ilgen) +#endif +C fnamegenIn is xx_*.$iter.data, so the required access records starts at +C startrec+irec-1 instead of irec in the read call below. In adjoint mode, S/R +C ADACTIVE_READ_XY reads adxx_*.$iter.data in reverse order, with required +C access from endrec back to startrec. This requires creating adxx_*.$iter.data +C file of size endrec, with valid gradients from records startrec to endrec +C but all zeros from 1 to startrec-1. See documentation: +C https://mitgcm.readthedocs.io/en/latest/ocean_state_est/ocean_state_est.html#ctrl-model-parameter-adjustment-capability #ifdef ALLOW_AUTODIFF - CALL ACTIVE_READ_XY( fnamegenIn, xx_gen, irec, + CALL ACTIVE_READ_XY( fnamegenIn, xx_gen, lrec, & doglobalread, ladinit, optimcycle, & myThid, xx_gentim2d_dummy(iarr) ) #else - CALL READ_REC_XY_RL( fnamegenIn, xx_gen, iRec, 1, myThid ) + CALL READ_REC_XY_RL( fnamegenIn, xx_gen, lRec, 1, myThid ) #endif +C Here, we write record krec (from 1 to diffrec) to file xx_*.effective.$iter #ifdef ALLOW_AUTODIFF +#ifdef ALLOW_CTRL_DEBUG + ilgen=ilnblnk( fnamegenOut ) + write(*,*) 'AG: iarr,[i,j,k]rec: ',iarr,irec,jrec,krec + write(*,*) 'AH: fnamegenOut: ', fnamegenOut(1:ilgen) +#endif CALL ACTIVE_WRITE_XY( fnamegenOut, xx_gen, krec, optimcycle, & myThid, xx_gentim2d_dummy(iarr) ) #else - CALL WRITE_REC_XY_RL( fnamegenOut, xx_gen, iRec, 1, myThid ) + CALL WRITE_REC_XY_RL( fnamegenOut, xx_gen, kRec, 1, myThid ) #endif ENDIF ENDDO @@ -196,32 +236,38 @@ SUBROUTINE CTRL_MAP_INI_GENTIM2D( myThid ) c-- rmcycle #ifdef ALLOW_ECCO - replicated_nrec=endrec + replicated_nrec=diffrec replicated_ntimes=0 do k2 = 1, maxCtrlProc if (xx_gentim2d_preproc(k2,iarr).EQ.'rmcycle') then if (xx_gentim2d_preproc_i(k2,iarr).NE.0) then - replicated_nrec=min(endrec,xx_gentim2d_preproc_i(k2,iarr)) + replicated_nrec=min(diffrec,xx_gentim2d_preproc_i(k2,iarr)) replicated_ntimes= - & int(float(endrec)/float(replicated_nrec)) - if (replicated_ntimes*replicated_nrec.LT.endrec) + & int(float(diffrec)/float(replicated_nrec)) + if (replicated_ntimes*replicated_nrec.LT.diffrec) & replicated_ntimes=replicated_ntimes+1 - if (replicated_ntimes*replicated_nrec.GT.endrec) + if (replicated_ntimes*replicated_nrec.GT.diffrec) & replicated_ntimes=replicated_ntimes-1 endif endif enddo -c print*,'endrec',endrec,replicated_ntimes,replicated_nrec +#ifdef ALLOW_CTRL_DEBUG + write(*,'(A,1x,5I6)') + & 'AI:[start,end,diff]rec, replicated_[nrec,ntimes]: ', + & startrec,endrec,diffrec,replicated_nrec,replicated_ntimes +#endif IF (replicated_ntimes.GT.0) THEN c create cyclic average - nyearsINT=1+int((endrec-replicated_nrec)/replicated_nrec) + nyearsINT=1+int((diffrec-replicated_nrec)/replicated_nrec) recip_nyearsRL=1. _d 0/float(nyearsINT) -c print*,'nyearsINT',nyearsINT,nyearsRL +#ifdef ALLOW_CTRL_DEBUG + write(*,*) 'AJ: nyears[INT,RL]: ',nyearsINT,recip_nyearsRL +#endif DO irec = 1, replicated_nrec @@ -240,6 +286,11 @@ SUBROUTINE CTRL_MAP_INI_GENTIM2D( myThid ) CADJ STORE xx_gentim2d_dummy = dummytape, key = 1 , kind = isbyte #endif krec=irec+(jrec-1)*replicated_nrec +#ifdef ALLOW_CTRL_DEBUG + write(*,*) 'AK: iarr,[i,j,k]rec: ',iarr,irec,jrec,krec + ilgen=ilnblnk( fnamegenOut ) + write(*,*) 'AL: fnamegenOut: ',fnamegenOut(1:ilgen) +#endif #ifdef ALLOW_AUTODIFF call active_read_xy( fnamegenOut, xx_gen_tmp, krec, & doglobalread, ladinit, optimcycle, @@ -291,7 +342,12 @@ SUBROUTINE CTRL_MAP_INI_GENTIM2D( myThid ) CADJ STORE xx_gentim2d_dummy = dummytape, key = 1 , kind = isbyte #endif krec=replicated_nrec*(jrec-1)+irec - IF (krec.LE.endrec) THEN +#ifdef ALLOW_CTRL_DEBUG + write(*,*) 'AM: iarr,[i,j,k]rec: ',iarr,irec,jrec,krec + ilgen=ilnblnk( fnamegenOut ) + write(*,*) 'AN: fnamegenOut: ',fnamegenOut(1:ilgen) +#endif + IF (krec.LE.diffrec) THEN #ifdef ALLOW_AUTODIFF CALL active_read_xy( fnamegenOut, xx_gen, kRec, & doglobalread, ladinit, optimcycle, @@ -333,11 +389,20 @@ SUBROUTINE CTRL_MAP_INI_GENTIM2D( myThid ) c-- scaling and smoothing +C The access of records startrec to endrec in xx_*.*iter was already +C done correctly above. From here, we read in xx_*.effective.$iter.data +C of size diffrec, so no more fix of record is needed from here on out. DO irec = 1, diffrec #ifdef ALLOW_AUTODIFF_TAMC CADJ STORE xx_gentim2d_dummy = dummytape, key = 1 , kind = isbyte #endif +#ifdef ALLOW_CTRL_DEBUG + ilgen=ilnblnk( fnamegenOut ) + lrec=startrec+irec-1 + write(*,'(A,1x,A,1x,2I6)') 'AO: fnamegenOut, irec,lrec ', + & fnamegenOut(1:ilgen),irec,lrec +#endif #ifdef ALLOW_AUTODIFF call active_read_xy( fnamegenOut, xx_gen, irec, & doglobalread, ladinit, optimcycle, @@ -348,8 +413,12 @@ SUBROUTINE CTRL_MAP_INI_GENTIM2D( myThid ) #ifndef ALLOW_OPENAD jrec=1 +C Not clear which record to use for timevariable weights ; +C For now, just assumes records from startrec to endrec are available in file do k2 = 1, maxCtrlProc - if (xx_gentim2d_preproc(k2,iarr).EQ.'variaweight') jrec=irec + if (xx_gentim2d_preproc(k2,iarr).EQ.'variaweight') then + jrec=startrec+irec-1 + endif enddo CALL READ_REC_3D_RL( xx_gentim2d_weight(iarr), ctrlprec, 1, & wgentim2d(1-OLx,1-OLy,1,1,iarr), jrec, 1, myThid ) @@ -388,6 +457,11 @@ SUBROUTINE CTRL_MAP_INI_GENTIM2D( myThid ) CALL EXCH_XY_RL ( xx_gen , myThid ) +#ifdef ALLOW_CTRL_DEBUG + ilgen=ilnblnk( fnamegenOut ) + write(*,'(A,1x,I6,1x,A)') + & 'AQ: irec,fnamegenOut: ',irec,fnamegenOut(1:ilgen) +#endif #ifdef ALLOW_AUTODIFF call active_write_xy( fnamegenOut, xx_gen, irec, optimcycle, & myThid, xx_gentim2d_dummy(iarr) ) @@ -405,6 +479,9 @@ SUBROUTINE CTRL_MAP_INI_GENTIM2D( myThid ) c-- end iarr loop ENDDO +#ifdef ALLOW_DEBUG + IF (debugMode) CALL DEBUG_LEAVE('CTRL_MAP_INI_GENTIM2D',myThid) +#endif /* ALLOW_DEBUG */ #endif /* ALLOW_GENTIM2D_CONTROL */ RETURN diff --git a/pkg/dic/dic_ad_check_lev1_dir.h b/pkg/dic/dic_ad_check_lev1_dir.h index 7b9fecdb87..92ad75ce06 100644 --- a/pkg/dic/dic_ad_check_lev1_dir.h +++ b/pkg/dic/dic_ad_check_lev1_dir.h @@ -7,10 +7,6 @@ CADJ STORE fIce = comlev1, key = ikey_dynamics CADJ STORE silicaSurf = comlev1, key = ikey_dynamics CADJ STORE atmosPCO2 = comlev1, key = ikey_dynamics -#ifdef DIC_BIOTIC -CADJ STORE omegaC = comlev1, key = ikey_dynamics -#endif - CADJ STORE gsm_s = comlev1, key = ikey_dynamics CADJ STORE co2atmos = comlev1, key = ikey_dynamics CADJ STORE total_atmos_carbon = comlev1, key = ikey_dynamics diff --git a/pkg/dic/dic_ad_check_lev2_dir.h b/pkg/dic/dic_ad_check_lev2_dir.h index 20ea6f2c8f..10d341aaa3 100644 --- a/pkg/dic/dic_ad_check_lev2_dir.h +++ b/pkg/dic/dic_ad_check_lev2_dir.h @@ -7,10 +7,6 @@ CADJ STORE fIce = tapelev2, key = ilev_2 CADJ STORE silicaSurf = tapelev2, key = ilev_2 CADJ STORE atmosPCO2 = tapelev2, key = ilev_2 -#ifdef DIC_BIOTIC -CADJ STORE omegaC = tapelev2, key = ilev_2 -#endif - CADJ STORE gsm_s = tapelev2, key = ilev_2 CADJ STORE co2atmos = tapelev2, key = ilev_2 CADJ STORE total_atmos_carbon = tapelev2, key = ilev_2 diff --git a/pkg/dic/dic_ad_check_lev3_dir.h b/pkg/dic/dic_ad_check_lev3_dir.h index 09377dac22..bd1317c450 100644 --- a/pkg/dic/dic_ad_check_lev3_dir.h +++ b/pkg/dic/dic_ad_check_lev3_dir.h @@ -7,10 +7,6 @@ CADJ STORE fIce = tapelev3, key = ilev_3 CADJ STORE silicaSurf = tapelev3, key = ilev_3 CADJ STORE atmosPCO2 = tapelev3, key = ilev_3 -#ifdef DIC_BIOTIC -CADJ STORE omegaC = tapelev3, key = ilev_3 -#endif - CADJ STORE gsm_s = tapelev3, key = ilev_3 CADJ STORE co2atmos = tapelev3, key = ilev_3 CADJ STORE total_atmos_carbon = tapelev3, key = ilev_3 diff --git a/pkg/dic/dic_ad_check_lev4_dir.h b/pkg/dic/dic_ad_check_lev4_dir.h index c80b1e3e42..c0430c6f27 100644 --- a/pkg/dic/dic_ad_check_lev4_dir.h +++ b/pkg/dic/dic_ad_check_lev4_dir.h @@ -7,10 +7,6 @@ CADJ STORE fIce = tapelev4, key = ilev_4 CADJ STORE silicaSurf = tapelev4, key = ilev_4 CADJ STORE atmosPCO2 = tapelev4, key = ilev_4 -#ifdef DIC_BIOTIC -CADJ STORE omegaC = tapelev4, key = ilev_4 -#endif - CADJ STORE gsm_s = tapelev4, key = ilev_4 CADJ STORE co2atmos = tapelev4, key = ilev_4 CADJ STORE total_atmos_carbon = tapelev4, key = ilev_4 diff --git a/pkg/ecco/ECCO.h b/pkg/ecco/ECCO.h index d1b33f63aa..8fa3acad5e 100644 --- a/pkg/ecco/ECCO.h +++ b/pkg/ecco/ECCO.h @@ -90,20 +90,16 @@ C using_ers :: flag that indicates the use of ERS data & using_ers, & using_gfo, & using_cost_altim, - & using_cost_bp, & using_cost_sst, - & using_cost_scat, - & using_cost_seaice - & ,using_cost_transp + & using_cost_seaice, + & using_cost_transp LOGICAL using_mdt LOGICAL using_tpj LOGICAL using_topex LOGICAL using_ers LOGICAL using_gfo LOGICAL using_cost_altim - LOGICAL using_cost_bp LOGICAL using_cost_sst - LOGICAL using_cost_scat LOGICAL using_cost_seaice LOGICAL using_cost_transp @@ -126,40 +122,37 @@ C the current model integration. INTEGER ndaysrec COMMON /ECCO_R/ - & m_eta, m_UE, m_VN, - & m_bp, + & m_eta, m_UE, m_VN, m_bp, + & trVol, trHeat, trSalt, + & eccoVol_0, frame + _RL m_eta (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy) + _RL m_UE (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) + _RL m_VN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) + _RL m_bp (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy) + _RL trVol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) + _RL trHeat (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) + _RL trSalt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) + _RL eccoVol_0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) + _RL frame (1-OLx:sNx+OLx,1-OLy:sNy+OLy ) + #ifdef ALLOW_PSBAR_STERIC + COMMON /ECCO_R2/ & sterGloH, -#endif -#ifdef ATMOSPHERIC_LOADING -#ifdef ALLOW_IB_CORR - & m_bp_nopabar, - & m_eta_dyn, -#endif -#endif - & trVol, trHeat, trSalt, & VOLsumGlob_0, VOLsumGlob, - & RHOsumGlob_0, RHOsumGlob, - & frame, eccoVol_0 - _RL VOLsumGlob_0, VOLsumGlob, RHOsumGlob_0, RHOsumGlob - _RL frame (1-OLx:sNx+OLx,1-OLy:sNy+OLy ) - _RL m_eta(1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy) - _RL m_bp(1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy) -#ifdef ALLOW_PSBAR_STERIC + & RHOsumGlob_0, RHOsumGlob _RL sterGloH + _RL VOLsumGlob_0, VOLsumGlob, RHOsumGlob_0, RHOsumGlob #endif + #ifdef ATMOSPHERIC_LOADING #ifdef ALLOW_IB_CORR + COMMON /ECCO_R3/ + & m_bp_nopabar, + & m_eta_dyn _RL m_bp_nopabar(1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy) - _RL m_eta_dyn(1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy) + _RL m_eta_dyn (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy) #endif #endif - _RL m_UE (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) - _RL m_VN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) - _RL trVol(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) - _RL trHeat(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) - _RL trSalt(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) - _RL eccoVol_0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) C Two runtime parameters related to outputting sterGloH C ecco_output_sterGloH :: output sterGloH at each time step if true diff --git a/pkg/ecco/ECCO_OPTIONS.h b/pkg/ecco/ECCO_OPTIONS.h index c890466843..b27dcf229b 100644 --- a/pkg/ecco/ECCO_OPTIONS.h +++ b/pkg/ecco/ECCO_OPTIONS.h @@ -85,14 +85,6 @@ C-- partially retired options (i.e., only used to set default switch): # undef ALLOW_SSH_COST_CONTRIBUTION # undef ALLOW_SST_COST_CONTRIBUTION # undef ALLOW_SEAICE_COST_CONTRIBUTION -C- same except the corresponding run-time switch is never used: -# undef ALLOW_BP_COST_CONTRIBUTION -# undef ALLOW_SCAT_COST_CONTRIBUTION -# undef ALLOW_DAILYSCAT_COST_CONTRIBUTION - -C-- Retired ? options (but still with bits of code left) -# undef ALLOW_ECCO_BARSTORES -# undef ALLOW_SIGMAR_COST_CONTRIBUTION C ================================================================== #endif /* ndef ECCO_CPPOPTIONS_H */ diff --git a/pkg/ecco/ecco_ad_check_lev1_dir.h b/pkg/ecco/ecco_ad_check_lev1_dir.h deleted file mode 100644 index 665d36f8b3..0000000000 --- a/pkg/ecco/ecco_ad_check_lev1_dir.h +++ /dev/null @@ -1,55 +0,0 @@ -c -c store directives for checkpoint level 1 -c - -#ifdef ALLOW_ECCO_BARSTORES - -#ifdef ALLOW_ECCO - -CADJ STORE tbar = comlev1, key=ikey_dynamics, kind=isbyte -cccCADJ STORE tbar_daily = comlev1, key=ikey_dynamics, kind=isbyte -CADJ STORE sbar = comlev1, key=ikey_dynamics, kind=isbyte -cccCADJ STORE sbar_daily = comlev1, key=ikey_dynamics, kind=isbyte -CADJ STORE ubar = comlev1, key=ikey_dynamics, kind=isbyte -CADJ STORE vbar = comlev1, key=ikey_dynamics, kind=isbyte -CADJ STORE wbar = comlev1, key=ikey_dynamics, kind=isbyte -CADJ STORE psbar = comlev1, key=ikey_dynamics, kind=isbyte -CADJ STORE bpbar = comlev1, key=ikey_dynamics, kind=isbyte -CADJ STORE sstbar = comlev1, key=ikey_dynamics, kind=isbyte - -CADJ STORE xx_tbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_sbar_mean_dummy = dummytape, key=1, kind=isbyte -#ifdef ALLOW_SIGMAR_COST_CONTRIBUTION -CADJ STORE xx_sigmaRbar_mean_dummy = dummytape, key=1, kind=isbyte -#endif -CADJ STORE xx_ubar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_vbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_wbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_psbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_bpbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_sstbar_mean_dummy = dummytape, key=1, kind=isbyte -cccCADJ STORE xx_sssbar_mean_dummy = dummytape, key=1, kind=isbyte - -#ifdef ALLOW_GENCOST_CONTRIBUTION -CADJ STORE gencost_barfld = comlev1, key=ikey_dynamics, kind=isbyte -CADJ STORE gencost_dummy = dummytape, key=1, kind=isbyte -#endif /* ALLOW_GENCOST_CONTRIBUTION */ - -#endif /* ALLOW_ECCO */ - -#ifdef ALLOW_PROFILES -CADJ STORE profiles_dummy = dummytape, key=1, kind=isbyte -#endif /* ALLOW_PROFILES */ - -#ifdef ALLOW_SEAICE -CADJ STORE smrareabar = comlev1, key=ikey_dynamics, kind=isbyte -CADJ STORE smrsstbar = comlev1, key=ikey_dynamics, kind=isbyte -CADJ STORE smrsssbar = comlev1, key=ikey_dynamics, kind=isbyte - -CADJ STORE xx_smrareabar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_smrsstbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_smrsssbar_mean_dummy = dummytape, key=1, kind=isbyte -#endif /* ALLOW_SEAICE */ - -#endif /* ALLOW_ECCO_BARSTORES */ - diff --git a/pkg/ecco/ecco_ad_check_lev2_dir.h b/pkg/ecco/ecco_ad_check_lev2_dir.h deleted file mode 100644 index 533007b5fa..0000000000 --- a/pkg/ecco/ecco_ad_check_lev2_dir.h +++ /dev/null @@ -1,63 +0,0 @@ -c -c store directives for checkpoint level 2 -c - -#ifdef ALLOW_COST_ATLANTIC -CADJ STORE theta = tapelev2, key=ilev_2 -CADJ STORE vVel = tapelev2, key=ilev_2 -# ifdef NONLIN_FRSURF -CADJ STORE hFacS = tapelev2, key=ilev_2 -# endif -#endif - -#ifdef ALLOW_ECCO_BARSTORES - -#ifdef ALLOW_ECCO - -CADJ STORE tbar = tapelev2, key=ilev_2 -cccCADJ STORE tbar_daily = tapelev2, key=ilev_2 -CADJ STORE sbar = tapelev2, key=ilev_2 -cccCADJ STORE sbar_daily = tapelev2, key=ilev_2 -CADJ STORE ubar = tapelev2, key=ilev_2 -CADJ STORE vbar = tapelev2, key=ilev_2 -CADJ STORE wbar = tapelev2, key=ilev_2 -CADJ STORE psbar = tapelev2, key=ilev_2 -CADJ STORE bpbar = tapelev2, key=ilev_2 -CADJ STORE sstbar = tapelev2, key=ilev_2 - -CADJ STORE xx_tbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_sbar_mean_dummy = dummytape, key=1, kind=isbyte -#ifdef ALLOW_SIGMAR_COST_CONTRIBUTION -CADJ STORE xx_sigmaRbar_mean_dummy = dummytape, key=1, kind=isbyte -#endif -CADJ STORE xx_ubar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_vbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_wbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_psbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_bpbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_sstbar_mean_dummy = dummytape, key=1, kind=isbyte -cccCADJ STORE xx_sssbar_mean_dummy = dummytape, key=1, kind=isbyte - -#ifdef ALLOW_GENCOST_CONTRIBUTION -CADJ STORE gencost_barfld = tapelev2, key=ilev_2 -CADJ STORE gencost_dummy = dummytape, key=1, kind=isbyte -#endif /* ALLOW_GENCOST_CONTRIBUTION */ - -#endif /* ALLOW_ECCO */ - -#ifdef ALLOW_PROFILES -CADJ STORE profiles_dummy = dummytape, key=1, kind=isbyte -#endif /* ALLOW_PROFILES */ - -#ifdef ALLOW_SEAICE -CADJ STORE smrareabar = tapelev2, key=ilev_2 -CADJ STORE smrsstbar = tapelev2, key=ilev_2 -CADJ STORE smrsssbar = tapelev2, key=ilev_2 - -CADJ STORE xx_smrareabar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_smrsstbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_smrsssbar_mean_dummy = dummytape, key=1, kind=isbyte -#endif /* ALLOW_SEAICE */ - -#endif /* ALLOW_ECCO_BARSTORES */ - diff --git a/pkg/ecco/ecco_ad_check_lev3_dir.h b/pkg/ecco/ecco_ad_check_lev3_dir.h deleted file mode 100644 index 4b9ea806a3..0000000000 --- a/pkg/ecco/ecco_ad_check_lev3_dir.h +++ /dev/null @@ -1,63 +0,0 @@ -c -c store directives for checkpoint level 3 -c - -#ifdef ALLOW_COST_ATLANTIC -CADJ STORE theta = tapelev3, key=ilev_3 -CADJ STORE vVel = tapelev3, key=ilev_3 -# ifdef NONLIN_FRSURF -CADJ STORE hFacS = tapelev3, key=ilev_3 -# endif -#endif - -#ifdef ALLOW_ECCO_BARSTORES - -#ifdef ALLOW_ECCO - -CADJ STORE tbar = tapelev3, key=ilev_3 -cccCADJ STORE tbar_daily = tapelev3, key=ilev_3 -CADJ STORE sbar = tapelev3, key=ilev_3 -cccCADJ STORE sbar_daily = tapelev3, key=ilev_3 -CADJ STORE ubar = tapelev3, key=ilev_3 -CADJ STORE vbar = tapelev3, key=ilev_3 -CADJ STORE wbar = tapelev3, key=ilev_3 -CADJ STORE psbar = tapelev3, key=ilev_3 -CADJ STORE bpbar = tapelev3, key=ilev_3 -CADJ STORE sstbar = tapelev3, key=ilev_3 - -CADJ STORE xx_tbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_sbar_mean_dummy = dummytape, key=1, kind=isbyte -#ifdef ALLOW_SIGMAR_COST_CONTRIBUTION -CADJ STORE xx_sigmaRbar_mean_dummy = dummytape, key=1, kind=isbyte -#endif -CADJ STORE xx_ubar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_vbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_wbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_psbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_bpbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_sstbar_mean_dummy = dummytape, key=1, kind=isbyte -cccCADJ STORE xx_sssbar_mean_dummy = dummytape, key=1, kind=isbyte - -#ifdef ALLOW_GENCOST_CONTRIBUTION -CADJ STORE gencost_barfld = tapelev3, key=ilev_3 -CADJ STORE gencost_dummy = dummytape, key=1, kind=isbyte -#endif /* ALLOW_GENCOST_CONTRIBUTION */ - -#endif /* ALLOW_ECCO */ - -#ifdef ALLOW_PROFILES -CADJ STORE profiles_dummy = dummytape, key=1, kind=isbyte -#endif /* ALLOW_PROFILES */ - -#ifdef ALLOW_SEAICE -CADJ STORE smrareabar = tapelev3, key=ilev_3 -CADJ STORE smrsstbar = tapelev3, key=ilev_3 -CADJ STORE smrsssbar = tapelev3, key=ilev_3 - -CADJ STORE xx_smrareabar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_smrsstbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_smrsssbar_mean_dummy = dummytape, key=1, kind=isbyte -#endif /* ALLOW_SEAICE */ - -#endif /* ALLOW_ECCO_BARSTORES */ - diff --git a/pkg/ecco/ecco_ad_check_lev4_dir.h b/pkg/ecco/ecco_ad_check_lev4_dir.h deleted file mode 100644 index eb4f279cd2..0000000000 --- a/pkg/ecco/ecco_ad_check_lev4_dir.h +++ /dev/null @@ -1,63 +0,0 @@ -c -c store directives for checkpoint level 4 -c - -#ifdef ALLOW_COST_ATLANTIC -CADJ STORE theta = tapelev4, key=ilev_4 -CADJ STORE vVel = tapelev4, key=ilev_4 -# ifdef NONLIN_FRSURF -CADJ STORE hFacS = tapelev4, key=ilev_4 -# endif -#endif - -#ifdef ALLOW_ECCO_BARSTORES - -#ifdef ALLOW_ECCO - -CADJ STORE tbar = tapelev4, key=ilev_4 -cccCADJ STORE tbar_daily = tapelev4, key=ilev_4 -CADJ STORE sbar = tapelev4, key=ilev_4 -cccCADJ STORE sbar_daily = tapelev4, key=ilev_4 -CADJ STORE ubar = tapelev4, key=ilev_4 -CADJ STORE vbar = tapelev4, key=ilev_4 -CADJ STORE wbar = tapelev4, key=ilev_4 -CADJ STORE psbar = tapelev4, key=ilev_4 -CADJ STORE bpbar = tapelev4, key=ilev_4 -CADJ STORE sstbar = tapelev4, key=ilev_4 - -CADJ STORE xx_tbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_sbar_mean_dummy = dummytape, key=1, kind=isbyte -#ifdef ALLOW_SIGMAR_COST_CONTRIBUTION -CADJ STORE xx_sigmaRbar_mean_dummy = dummytape, key=1, kind=isbyte -#endif -CADJ STORE xx_ubar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_vbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_wbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_psbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_bpbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_sstbar_mean_dummy = dummytape, key=1, kind=isbyte -cccCADJ STORE xx_sssbar_mean_dummy = dummytape, key=1, kind=isbyte - -#ifdef ALLOW_GENCOST_CONTRIBUTION -CADJ STORE gencost_barfld = tapelev4, key=ilev_4 -CADJ STORE gencost_dummy = dummytape, key=1, kind=isbyte -#endif /* ALLOW_GENCOST_CONTRIBUTION */ - -#endif /* ALLOW_ECCO */ - -#ifdef ALLOW_PROFILES -CADJ STORE profiles_dummy = dummytape, key=1, kind=isbyte -#endif /* ALLOW_PROFILES */ - -#ifdef ALLOW_SEAICE -CADJ STORE smrareabar = tapelev4, key=ilev_4 -CADJ STORE smrsstbar = tapelev4, key=ilev_4 -CADJ STORE smrsssbar = tapelev4, key=ilev_4 - -CADJ STORE xx_smrareabar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_smrsstbar_mean_dummy = dummytape, key=1, kind=isbyte -CADJ STORE xx_smrsssbar_mean_dummy = dummytape, key=1, kind=isbyte -#endif /* ALLOW_SEAICE */ - -#endif /* ALLOW_ECCO_BARSTORES */ - diff --git a/pkg/ecco/ecco_ad_diff.list b/pkg/ecco/ecco_ad_diff.list index e269b1dcd7..d7dfcb0aa6 100644 --- a/pkg/ecco/ecco_ad_diff.list +++ b/pkg/ecco/ecco_ad_diff.list @@ -30,5 +30,6 @@ ecco_cost_driver.f ecco_cost_final.f ecco_cost_init_varia.f ecco_init_varia.f +ecco_read_pickup.f ecco_phys.f ecco_toolbox.f diff --git a/pkg/ecco/ecco_check.F b/pkg/ecco/ecco_check.F index 023244cf8a..2d74021015 100644 --- a/pkg/ecco/ecco_check.F +++ b/pkg/ecco/ecco_check.F @@ -72,8 +72,7 @@ SUBROUTINE ECCO_CHECK( myThid ) _BEGIN_MASTER(myThid) c ============ retired compile option checks - - nRetired = 0 + nRetired = 0 #ifdef ALLOW_MEAN_HFLUX_COST_CONTRIBUTION WRITE(msgBuf,'(3A)') '** WARNING ** ECCO_CHECK:', @@ -123,6 +122,13 @@ SUBROUTINE ECCO_CHECK( myThid ) & SQUEEZE_RIGHT , myThid ) nRetired = nRetired + 1 #endif +#ifdef ALLOW_BP_COST_CONTRIBUTION + WRITE(msgBuf,'(3A)') 'ECCO_CHECK:', + & ' "ALLOW_BP_COST_CONTRIBUTION" has been removed', + & ' since cost_bp has been retired' + CALL PRINT_ERROR( msgBuf, myThid ) + nRetired = nRetired + 1 +#endif #ifdef ALLOW_SCAT_COST_CONTRIBUTION WRITE(msgBuf,'(3A)') '** WARNING ** ECCO_CHECK:', & 'ALLOW_SCAT_COST_CONTRIBUTION has no', @@ -222,14 +228,14 @@ SUBROUTINE ECCO_CHECK( myThid ) IF ( nRetired .GT. 0 ) THEN WRITE(msgBuf,'(2A)') 'S/R ECCO_CHECK: ', - & ' retired compile-time options need to be undefined' + & ' retired compile-time options need to be removed' CALL PRINT_ERROR( msgBuf, myThid ) + CALL ALL_PROC_DIE( 0 ) STOP 'ABNORMAL END: S/R ECCO_CHECK' ENDIF c ============ retired run-time parameter checks - - nRetired = 0 + nRetired = 0 #ifdef ALLOW_GENCOST_CONTRIBUTION DO k=1,NGENCOST @@ -273,6 +279,7 @@ SUBROUTINE ECCO_CHECK( myThid ) WRITE(msgBuf,'(2A)') 'S/R ECCO_CHECK: ', & ' retired run-time options were found in data.ecco' CALL PRINT_ERROR( msgBuf, myThid ) + CALL ALL_PROC_DIE( 0 ) STOP 'ABNORMAL END: S/R ECCO_CHECK' ENDIF diff --git a/pkg/ecco/ecco_init_varia.F b/pkg/ecco/ecco_init_varia.F index 5c156b6392..03a8ddc43c 100644 --- a/pkg/ecco/ecco_init_varia.F +++ b/pkg/ecco/ecco_init_varia.F @@ -2,20 +2,19 @@ SUBROUTINE ECCO_INIT_VARIA( myThid ) -c ================================================================== -c SUBROUTINE ecco_init_varia -c ================================================================== -c -c o Initialise ecco variables. -c -c ================================================================== -c SUBROUTINE ecco_cost_init_varia -c ================================================================== +C ================================================================== +C SUBROUTINE ecco_init_varia +C ================================================================== +C +C o Initialise ecco variables. +C +C ================================================================== +C SUBROUTINE ecco_cost_init_varia +C ================================================================== IMPLICIT NONE -c == global variables == - +C == global variables == #include "EEPARAMS.h" #include "SIZE.h" #include "PARAMS.h" @@ -26,24 +25,41 @@ SUBROUTINE ECCO_INIT_VARIA( myThid ) # include "cost.h" #endif -c == routine arguments == - +C == routine arguments == INTEGER myThid -c == local variables == +C == local variables == -c == end of interface == +C == end of interface == #ifdef ALLOW_PSBAR_STERIC - RHOsumGlob_0=0. _d 0 - VOLsumGlob_0=0. _d 0 -#endif +# ifndef ALLOW_AUTODIFF + _BEGIN_MASTER(myThid) +# endif + RHOsumGlob_0 = 0. _d 0 + VOLsumGlob_0 = 0. _d 0 +# ifndef ALLOW_AUTODIFF + _END_MASTER(myThid) +# endif + IF ( .NOT. ( startTime .EQ. baseTime .AND. nIter0 .EQ. 0 + & .AND. pickupSuff .EQ. ' ') ) THEN + CALL ECCO_READ_PICKUP ( nIter0, myThid ) + ENDIF +#endif /* ALLOW_PSBAR_STERIC */ CALL ECCO_PHYS( startTime, -1, myThid ) #ifdef ALLOW_PSBAR_STERIC - RHOsumGlob_0=RHOsumGlob - VOLsumGlob_0=VOLsumGlob +C RHO/VOLsumGlob_0 are zeros if S/R ECCO_READ_PICKUP is not called +C or pickup files (pickup_ecco.*.data/meta) do not exist. Assign +C RHO/VOLsumGlob calculated in S/R ECCO_PHYS to RHO/VOLsumGlob_0. + _BEGIN_MASTER(myThid) + IF ( RHOsumGlob_0 .EQ. 0. _d 0 .AND. + & VOLsumGlob_0 .EQ. 0. _d 0 ) THEN + RHOsumGlob_0 = RHOsumGlob + VOLsumGlob_0 = VOLsumGlob + ENDIF + _END_MASTER(myThid) #endif CALL ECCO_COST_INIT_VARIA( myThid ) diff --git a/pkg/ecco/ecco_local_params.h b/pkg/ecco/ecco_local_params.h index 0c7b2a9c54..c08298774a 100644 --- a/pkg/ecco/ecco_local_params.h +++ b/pkg/ecco/ecco_local_params.h @@ -7,9 +7,6 @@ C ================================================================== character*(MAX_LEN_FNAM) tbarfile character*(MAX_LEN_FNAM) sbarfile -#ifdef ALLOW_SIGMAR_COST_CONTRIBUTION - character*(MAX_LEN_FNAM) sigmaRbarfile -#endif character*(MAX_LEN_FNAM) sstbarfile character*(MAX_LEN_FNAM) psbarfile character*(MAX_LEN_FNAM) bpbarfile @@ -23,12 +20,6 @@ C ================================================================== character*(MAX_LEN_FNAM) sfluxmeanbarfile character*(MAX_LEN_FNAM) costTranspDataFile -#ifdef ALLOW_TRANSPORT_COST_CONTRIBUTION - _RL transpbar(maxNumDays,nSx,nSy) - _RL transpobs(maxNumDays) - _RL wtransp(maxNumDays) -#endif - _RL mult_hflux _RL mult_sflux _RL mult_hfluxmm @@ -41,9 +32,6 @@ C ================================================================== _RL mult_ers _RL mult_gfo _RL mult_sshv4cost(NSSHV4COST) -#ifdef ALLOW_SIGMAR_COST_CONTRIBUTION - _RL mult_sigmaR -#endif _RL mult_temp _RL mult_salt _RL mult_temp0 @@ -119,9 +107,6 @@ c character*(MAX_LEN_FNAM) ctds_errfile c character*(MAX_LEN_FNAM) drift_errfile character*(MAX_LEN_FNAM) udrifterrfile character*(MAX_LEN_FNAM) vdrifterrfile -#ifdef ALLOW_SIGMAR_COST_CONTRIBUTION - character*(MAX_LEN_FNAM) sigmaRerrfile -#endif character*(MAX_LEN_FNAM) salterrfile character*(MAX_LEN_FNAM) temperrfile character*(MAX_LEN_FNAM) velerrfile @@ -192,9 +177,6 @@ c _RL wrunoff0 c _RL wmean_runoff _RL wmean_wind -#ifdef ALLOW_SIGMAR_COST_CONTRIBUTION - character*(MAX_LEN_FNAM) sigmaRdatfile -#endif character*(MAX_LEN_FNAM) tdatfile character*(MAX_LEN_FNAM) sdatfile character*(MAX_LEN_FNAM) scatxdatfile diff --git a/pkg/ecco/ecco_phys.F b/pkg/ecco/ecco_phys.F index 79f4b2bef3..72729bc2ac 100644 --- a/pkg/ecco/ecco_phys.F +++ b/pkg/ecco/ecco_phys.F @@ -75,6 +75,7 @@ SUBROUTINE ECCO_PHYS( myTime, myIter, myThid ) _RL rhoLoc(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) #ifdef ALLOW_PSBAR_STERIC _RL VOLsumTile(nSx,nSy), RHOsumTile(nSx,nSy) + _RL VOLsumGlob_1, RHOsumGlob_1 c CHARACTER*(MAX_LEN_MBUF) msgBuf #endif C Mload :: total mass load (kg/m**2) @@ -126,9 +127,14 @@ SUBROUTINE ECCO_PHYS( myTime, myIter, myThid ) ENDDO ENDDO ENDDO - CALL GLOBAL_SUM_TILE_RL( VOLsumTile, VOLsumGlob, myThid ) - CALL GLOBAL_SUM_TILE_RL( RHOsumTile, RHOsumGlob, myThid ) - RHOsumGlob = RHOsumGlob/VOLsumGlob + CALL GLOBAL_SUM_TILE_RL( VOLsumTile, VOLsumGlob_1, myThid ) + CALL GLOBAL_SUM_TILE_RL( RHOsumTile, RHOsumGlob_1, myThid ) + +# ifndef ALLOW_AUTODIFF + _BEGIN_MASTER(myThid) +# endif + VOLsumGlob = VOLsumGlob_1 + RHOsumGlob = RHOsumGlob_1/VOLsumGlob IF (RHOsumGlob_0.GT.0. _d 0) THEN sterGloH = VOLsumGlob_0/globalArea @@ -140,6 +146,10 @@ SUBROUTINE ECCO_PHYS( myTime, myIter, myThid ) c WRITE(msgBuf,'(A,1PE21.14)') ' sterGloH= ', sterGloH c CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, c & SQUEEZE_RIGHT, myThid ) +# ifndef ALLOW_AUTODIFF + _END_MASTER(myThid) + _BARRIER +# endif #endif /* ALLOW_PSBAR_STERIC */ diff --git a/pkg/ecco/ecco_read_pickup.F b/pkg/ecco/ecco_read_pickup.F new file mode 100644 index 0000000000..0068400ede --- /dev/null +++ b/pkg/ecco/ecco_read_pickup.F @@ -0,0 +1,104 @@ +#include "ECCO_OPTIONS.h" + +CBOP +C !ROUTINE: ECCO_READ_PICKUP +C !INTERFACE: + SUBROUTINE ECCO_READ_PICKUP( myIter, myThid ) + +C !DESCRIPTION: \bv +C *================================================================* +C | SUBROUTINE ECCO_READ_PICKUP +C | o read ecco pickups +C *================================================================* +C \ev + +C !USES: + IMPLICIT NONE +C === Global variables === +#include "SIZE.h" +#include "EEPARAMS.h" +#include "PARAMS.h" +#include "ECCO_SIZE.h" +#include "ECCO.h" + +C !INPUT/OUTPUT PARAMETERS: +C myThid :: my Thread Id number + INTEGER myIter + INTEGER myThid + +#ifdef ALLOW_PSBAR_STERIC +C !FUNCTIONS: + INTEGER ILNBLNK + EXTERNAL ILNBLNK + +C !LOCAL VARIABLES: + CHARACTER*(MAX_LEN_FNAM) fn, fntmp + CHARACTER*(10) suff + CHARACTER*(MAX_LEN_MBUF) msgBuf + INTEGER prec, IL, ioUnit + LOGICAL exst + _RL tmparr(2), dummyRS(1) +CEOP + +C-- Suffix for pickup files + IF (pickupSuff.EQ.' ') THEN + IF ( rwSuffixType.EQ.0 ) THEN + WRITE(suff,'(I10.10)') myIter + ELSE + CALL RW_GET_SUFFIX( suff, startTime, myIter, myThid ) + ENDIF + ELSE + WRITE(suff,'(A10)') pickupSuff + ENDIF + + _BEGIN_MASTER(myThid) + + WRITE(fn,'(A,A10)') 'pickup_ecco.', suff +c#ifdef ALLOW_MDSIO +c useCurrentDir = .FALSE. +c CALL MDS_CHECK4FILE( +c I fn, '.data', 'ECCO_READ_PICKUP', +c O filNam, fileExist, +c I useCurrentDir, myThid ) +c#endif +C- Check first for global file with simple name (ie. fn) + INQUIRE( file=fn, exist=exst ) + IF ( .NOT.exst ) THEN +C- Check for global file with ".data" suffix + IL = ILNBLNK( fn ) + WRITE(fntmp,'(2A)') fn(1:IL),'.data' + INQUIRE( file=fntmp, exist=exst ) + ENDIF + + IF (exst) THEN + ioUnit = 0 + prec = precFloat64 +#ifdef ALLOW_MDSIO + CALL MDS_READVEC_LOC( fn, prec, ioUnit, 'RL', + & 2, tmparr, dummyRS, 0, 0, 1, myThid ) +#else + STOP 'ABNORMAL END: S/R ECCO_READ_PICKUP: Needs MDSIO pkg' +#endif + VOLsumGlob_0 = tmparr(1) + RHOsumGlob_0 = tmparr(2) + ELSE + WRITE(msgBuf,'(2A)') 'ECCO_READ_PICKUP: ', + & fn(1:IL)//' and '//fntmp(1:iL+5)//' not provided.' + CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, + & SQUEEZE_RIGHT, myThid ) + CALL PRINT_MESSAGE( msgBuf, errorMessageUnit, + & SQUEEZE_RIGHT, myThid ) + WRITE(msgBuf,'(2A,I10)') 'ECCO_READ_PICKUP: ', + & 'sterGloH is referenced to its value at time step:', nIter0 + CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, + & SQUEEZE_RIGHT, myThid ) + CALL PRINT_MESSAGE( msgBuf, errorMessageUnit, + & SQUEEZE_RIGHT, myThid ) + ENDIF + + _END_MASTER(myThid) + +#endif /* ALLOW_PSBAR_STERIC */ + + RETURN + END diff --git a/pkg/ecco/ecco_readparms.F b/pkg/ecco/ecco_readparms.F index 5437f7d45e..9756eb724a 100644 --- a/pkg/ecco/ecco_readparms.F +++ b/pkg/ecco/ecco_readparms.F @@ -3,7 +3,7 @@ # include "CTRL_OPTIONS.h" #endif - subroutine ecco_readparms( myThid ) + SUBROUTINE ECCO_READPARMS( myThid ) c ================================================================== c SUBROUTINE ecco_readparms @@ -56,9 +56,10 @@ subroutine ecco_readparms( myThid ) #endif Catn-- retired parameters - CHARACTER*(MAX_LEN_FNAM) topexmeanfile - CHARACTER*(2) cost_yftype INTEGER nRetired + CHARACTER*(2) cost_yftype + CHARACTER*(MAX_LEN_FNAM) topexmeanfile + LOGICAL using_cost_bp, using_cost_scat c == end of interface == @@ -219,6 +220,7 @@ subroutine ecco_readparms( myThid ) ENDIF _BEGIN_MASTER( myThid ) + nRetired = 0 c-- Set default values. @@ -238,22 +240,11 @@ subroutine ecco_readparms( myThid ) c- set default to false using_cost_transp=.FALSE. -#ifdef ALLOW_BP_COST_CONTRIBUTION - using_cost_bp=.TRUE. -#else - using_cost_bp=.FALSE. -#endif #ifdef ALLOW_SST_COST_CONTRIBUTION using_cost_sst=.TRUE. #else using_cost_sst=.FALSE. #endif -#if (defined (ALLOW_SCAT_COST_CONTRIBUTION) || \ - defined (ALLOW_DAILYSCAT_COST_CONTRIBUTION) ) - using_cost_scat=.TRUE. -#else - using_cost_scat=.FALSE. -#endif c other run time parameters data_errfile = ' ' @@ -382,8 +373,8 @@ subroutine ecco_readparms( myThid ) kapredi_errfile = ' ' diffkr_errfile = ' ' do k=1,NUSERCOST - usercost_datafile(k) = ' ' - usercost_errfile(k) = ' ' + usercost_datafile(k) = ' ' + usercost_errfile(k) = ' ' enddo do k=1,NSSHV4COST sshv4cost_scalefile(k) = ' ' @@ -452,15 +443,15 @@ subroutine ecco_readparms( myThid ) #endif mult_curmtr = 0. _d 0 mult_kapgm = 0. _d 0 - mult_kapredi = 0. _d 0 + mult_kapredi = 0. _d 0 mult_diffkr = 0. _d 0 mult_edtau = 0. _d 0 mult_bottomdrag = 0. _d 0 do k=1,NUSERCOST - mult_usercost(k) = 0. _d 0 + mult_usercost(k) = 0. _d 0 enddo do k=1,NSSHV4COST - mult_sshv4cost(k) = 0. _d 0 + mult_sshv4cost(k) = 0. _d 0 enddo mult_smooth_ic = 0. _d 0 mult_smooth_bc = 0. _d 0 @@ -478,7 +469,7 @@ subroutine ecco_readparms( myThid ) wwind0 = 0. _d 0 wdiffkr0 = 1. _d 0 wkapgm0 = 1. _d 0 - wkapredi0 = 1. _d 0 + wkapredi0 = 1. _d 0 wedtau0 = 1. _d 0 whflux0 = 0. _d 0 wsflux0 = 0. _d 0 @@ -502,10 +493,11 @@ subroutine ecco_readparms( myThid ) ecco_output_sterGloH = .FALSE. ecco_keepTSeriesOutp_open = .FALSE. -Catn-- retired parameters - topexmeanfile = ' ' - cost_yftype = 'RL' - nRetired = 0 +C-- retired parameters + cost_yftype = 'RL' + topexmeanfile = ' ' + using_cost_bp = .FALSE. + using_cost_scat = .FALSE. c-- Next, read the data.ecco file. WRITE(msgBuf,'(A)') 'ECCO_READPARMS: opening data.ecco' @@ -525,12 +517,26 @@ subroutine ecco_readparms( myThid ) & SQUEEZE_RIGHT, myThid ) C-- Check parameters: - IF ( cost_yftype.NE.'RL' ) THEN - STOP 'ABNORMAL END: S/R ECCO_READPARMS: invalid cost_yftype' - ENDIF -Catn -- retired parameters - IF ( topexmeanfile .NE. ' ' ) THEN +C- retired parameters: + IF ( cost_yftype.NE.'RL' ) THEN + WRITE(msgBuf,'(2A)') 'S/R ECCO_READPARMS: ', + & '"cost_yftype" is no longer allowed in file "data.ecco"' + CALL PRINT_ERROR( msgBuf, myThid ) nRetired = nRetired + 1 + ENDIF + IF ( using_cost_bp ) THEN + WRITE(msgBuf,'(2A)') 'S/R ECCO_READPARMS: ', + & '"using_cost_bp" is no longer allowed in file "data.ecco"' + CALL PRINT_ERROR( msgBuf, myThid ) + nRetired = nRetired + 1 + ENDIF + IF ( using_cost_scat ) THEN + WRITE(msgBuf,'(2A)') 'S/R ECCO_READPARMS: ', + & '"using_cost_scat" is no longer allowed in file "data.ecco"' + CALL PRINT_ERROR( msgBuf, myThid ) + nRetired = nRetired + 1 + ENDIF + IF ( topexmeanfile .NE. ' ' ) THEN WRITE(msgBuf,'(A,A)') & 'S/R ECCO_READPARMS: "topexmeanfile" ', & 'is no longer allowed in file "data.ecco"' @@ -538,15 +544,16 @@ subroutine ecco_readparms( myThid ) WRITE(msgBuf,'(A)') & 'S/R ECCO_READPARMS: set "mdtdatfile" instead' CALL PRINT_ERROR( msgBuf, myThid ) - STOP 'ABNORMAL END: S/R ECCO_READPARMS' + nRetired = nRetired + 1 ENDIF IF ( nRetired .GT. 0 ) THEN WRITE(msgBuf,'(2A)') 'S/R ECCO_READPARMS: ', & 'Error reading parameter file "data.ecco"' CALL PRINT_ERROR( msgBuf, myThid ) WRITE(msgBuf,'(A)') - & 'some out of date parameters were found in the namelist' + & 'some out-of-date parameters were found in the namelist(s)' CALL PRINT_ERROR( msgBuf, myThid ) + CALL ALL_PROC_DIE( 0 ) STOP 'ABNORMAL END: S/R ECCO_READPARMS' ENDIF diff --git a/pkg/ecco/ecco_write_pickup.F b/pkg/ecco/ecco_write_pickup.F new file mode 100644 index 0000000000..8adb382a06 --- /dev/null +++ b/pkg/ecco/ecco_write_pickup.F @@ -0,0 +1,65 @@ +#include "ECCO_OPTIONS.h" + +CBOP +C !ROUTINE: ECCO_WRITE_PICKUP +C !INTERFACE: + SUBROUTINE ECCO_WRITE_PICKUP( permPickup, suff, + I myTime, myIter, myThid ) + +C !DESCRIPTION: \bv +C *================================================================* +C | SUBROUTINE ECCO_WRITE_PICKUP +C | o write ecco pickups +C *================================================================* +C \ev + +C !USES: + IMPLICIT NONE +C === Global variables === +#include "SIZE.h" +#include "EEPARAMS.h" +#include "PARAMS.h" +#include "ECCO_SIZE.h" +#include "ECCO.h" + +C !INPUT/OUTPUT PARAMETERS: +C permPickup :: write a permanent pickup +C suff :: suffix for pickup file (eg. ckptA or 0000000010) +C myTime :: Current time in simulation +C myIter :: Current iteration number in simulation +C myThid :: My Thread Id number + LOGICAL permPickup + CHARACTER*(*) suff + _RL myTime + INTEGER myIter + INTEGER myThid + +#ifdef ALLOW_PSBAR_STERIC +C !LOCAL VARIABLES: + CHARACTER*(MAX_LEN_FNAM) fn +c CHARACTER*(MAX_LEN_MBUF) msgBuf + INTEGER prec, ioUnit + _RL tmparr(2), dummyRS(1) +CEOP + + WRITE(fn,'(A,A10)') 'pickup_ecco.',suff + IF ( fn .NE. ' ' ) THEN + ioUnit = 0 + prec = precFloat64 + + tmparr(1) = VOLsumGlob_0 + tmparr(2) = RHOsumGlob_0 +#ifdef ALLOW_MDSIO + CALL MDS_WRITEVEC_LOC( + I fn, prec, ioUnit, + I 'RL', 2, tmparr, dummyRS, + I 0, 0, 1, myIter, myThid ) +#else + STOP 'ABNORMAL END: S/R ECCO_WRITE_PICKUP: Needs MDSIO pkg' +#endif + ENDIF + +#endif /* ALLOW_PSBAR_STERIC */ + + RETURN + END diff --git a/pkg/exf/EXF_OPTIONS.h b/pkg/exf/EXF_OPTIONS.h index f9705fec8e..c5874c11eb 100644 --- a/pkg/exf/EXF_OPTIONS.h +++ b/pkg/exf/EXF_OPTIONS.h @@ -1,3 +1,8 @@ +#ifndef EXF_OPTIONS_H +#define EXF_OPTIONS_H +#include "PACKAGES_CONFIG.h" +#include "CPP_OPTIONS.h" + CBOP C !ROUTINE: EXF_OPTIONS.h C !INTERFACE: @@ -10,11 +15,6 @@ C | Control which optional features to compile in this package code. C *==================================================================* CEOP -#ifndef EXF_OPTIONS_H -#define EXF_OPTIONS_H -#include "PACKAGES_CONFIG.h" -#include "CPP_OPTIONS.h" - #ifdef ALLOW_EXF #ifdef ECCO_CPPOPTIONS_H @@ -98,12 +98,12 @@ C >>> EXF_SEAICE_FRACTION <<< C If defined, seaice fraction can be read-in from files (areaMaskFile) C C >>> ALLOW_CLIMSST_RELAXATION <<< -C Allow the relaxation to a monthly climatology of sea surface -C temperature, e.g. the Reynolds climatology. +C Allow the relaxation of surface level temperature to SST (climatology), +C e.g. the Reynolds climatology. C C >>> ALLOW_CLIMSSS_RELAXATION <<< -C Allow the relaxation to a monthly climatology of sea surface -C salinity, e.g. the Levitus climatology. +C Allow the relaxation of surface level salinity to SSS (climatology), +C e.g. the Levitus climatology. C C >>> USE_EXF_INTERPOLATION <<< C Allows to provide input field on arbitrary Lat-Lon input grid @@ -206,7 +206,7 @@ C unless to reproduce old results (obtained with inconsistent old code) # define EXF_LWDOWN_WITH_EMISSIVITY #endif -C- Relaxation to monthly climatologies. +C- Surface level relaxation to prescribed fields (e.g., climatologies) #define ALLOW_CLIMSST_RELAXATION #define ALLOW_CLIMSSS_RELAXATION @@ -231,6 +231,10 @@ C (no pole symmetry, single vector-comp interp, reset to 0 zonal-comp @ N.pole # define EXF_IREAD_USE_GLOBAL_POINTER #endif +C- Not recommended (not tested nor maintained) and un-documented Options: +#undef ALLOW_BULK_OFFLINE +#undef ALLOW_CLIMSTRESS_RELAXATION + #endif /* ndef ECCO_CPPOPTIONS_H */ #endif /* ALLOW_EXF */ #endif /* EXF_OPTIONS_H */ diff --git a/pkg/exf/exf_ad_check_lev1_dir.h b/pkg/exf/exf_ad_check_lev1_dir.h index 8193229b0f..953a04388f 100644 --- a/pkg/exf/exf_ad_check_lev1_dir.h +++ b/pkg/exf/exf_ad_check_lev1_dir.h @@ -77,16 +77,6 @@ CADJ STORE climsss1 = comlev1, key=ikey_dynamics, kind=isbyte CADJ STORE climsst0 = comlev1, key=ikey_dynamics, kind=isbyte CADJ STORE climsst1 = comlev1, key=ikey_dynamics, kind=isbyte # endif -# ifdef ALLOW_CLIMSALT_RELAXATION -cph not used so far -cphCADJ STORE climsalt0 = comlev1, key=ikey_dynamics, kind=isbyte -cphCADJ STORE climsalt1 = comlev1, key=ikey_dynamics, kind=isbyte -# endif -# ifdef ALLOW_CLIMTEMP_RELAXATION -cph not used so far -cphCADJ STORE climtemp0 = comlev1, key=ikey_dynamics, kind=isbyte -cphCADJ STORE climtemp1 = comlev1, key=ikey_dynamics, kind=isbyte -# endif # ifdef ATMOSPHERIC_LOADING CADJ STORE apressure0 = comlev1, key=ikey_dynamics, kind=isbyte CADJ STORE apressure1 = comlev1, key=ikey_dynamics, kind=isbyte diff --git a/pkg/mom_common/MOM_COMMON_OPTIONS.h b/pkg/mom_common/MOM_COMMON_OPTIONS.h index 48affb3818..d295357b8f 100644 --- a/pkg/mom_common/MOM_COMMON_OPTIONS.h +++ b/pkg/mom_common/MOM_COMMON_OPTIONS.h @@ -21,5 +21,10 @@ C allow full 3D specification of horizontal Laplacian Viscosity C allow full 3D specification of horizontal Biharmonic Viscosity #undef ALLOW_3D_VISCA4 +C Compute bottom drag coefficents, following the logarithmic law of the wall, +C as a function of grid cell thickness and roughness length +C zRoughBot (order 0.01m), assuming a von Karman constant = 0.4. +#undef ALLOW_BOTTOMDRAG_ROUGHNESS + #endif /* ALLOW_MOM_COMMON */ #endif /* MOM_COMMON_OPTIONS_H */ diff --git a/pkg/mom_common/MOM_VISC.h b/pkg/mom_common/MOM_VISC.h index 5946bc0001..3a7905c95f 100644 --- a/pkg/mom_common/MOM_VISC.h +++ b/pkg/mom_common/MOM_VISC.h @@ -61,4 +61,13 @@ C viscA4_W :: Horizontal biharmonic viscosity for vertical momentum _RL viscA4_W(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) #endif /* ALLOW_NONHYDROSTATIC */ +#ifdef ALLOW_BOTTOMDRAG_ROUGHNESS +C-- bottom drag coefficents as a function of grid cell thickness +C and roughness length + COMMON /GRID_DRAGCOEFFS_RS/ + & bottomDragCoeffW, bottomDragCoeffS + _RS bottomDragCoeffW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RS bottomDragCoeffS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) +#endif + #endif /* ALLOW_MOM_COMMON */ diff --git a/pkg/mom_common/mom_init_fixed.F b/pkg/mom_common/mom_init_fixed.F index 048ffff02b..9b3000b581 100644 --- a/pkg/mom_common/mom_init_fixed.F +++ b/pkg/mom_common/mom_init_fixed.F @@ -30,11 +30,18 @@ SUBROUTINE MOM_INIT_FIXED( myThid ) INTEGER i,j,k,bi,bj _RL recip_dt _RL twoThird +#ifdef ALLOW_BOTTOMDRAG_ROUGHNESS +C msgBuf :: Informational/error message buffer + INTEGER kLow + _RL hLoc + _RL recip_zRoughBot + CHARACTER*(MAX_LEN_MBUF) msgBuf +#endif k = 1 twoThird = 2. _d 0 / 3. _d 0 recip_dt = 1. _d 0 - IF ( deltaTmom.NE.0. ) recip_dt = 1. _d 0/deltaTmom + IF ( deltaTMom.NE.0. ) recip_dt = 1. _d 0/deltaTMom DO bj=myByLo(myThid), myByHi(myThid) DO bi=myBxLo(myThid), myBxHi(myThid) @@ -156,6 +163,56 @@ SUBROUTINE MOM_INIT_FIXED( myThid ) ENDIF #endif /* ALLOW_3D_VISCA4 */ +#ifdef ALLOW_BOTTOMDRAG_ROUGHNESS +C-- Compute bottom drag coefficents as a function of grid cell thickness +C and roughness length, assuming von Karman constant = 0.4 + DO bj=myByLo(myThid), myByHi(myThid) + DO bi=myBxLo(myThid), myBxHi(myThid) + DO j=1-OLy,sNy+OLy + DO i=1-OLx,sNx+OLx + bottomDragCoeffW(i,j,bi,bj) = bottomDragQuadratic + bottomDragCoeffS(i,j,bi,bj) = bottomDragQuadratic + ENDDO + ENDDO + IF ( zRoughBot .GT. 0. _d 0 .AND. usingZCoords ) THEN + recip_zRoughBot = 1. _d 0 / zRoughBot + DO j=1-OLy,sNy+OLy + DO i=1-OLx+1,sNx+OLx + kLow = MIN( kLowC(i-1,j,bi,bj), kLowC(i,j,bi,bj) ) + IF ( kLow .GE. 1 ) THEN + hLoc = ( oneRL + + & 0.5*drF(kLow)*hFacW(i,j,kLow,bi,bj)*recip_zRoughBot ) + hLoc = 0.4 _d 0/LOG(hLoc) + bottomDragCoeffW(i,j,bi,bj) = hLoc*hLoc + ELSE + bottomDragCoeffW(i,j,bi,bj) = 0. _d 0 + ENDIF + ENDDO + ENDDO + DO j=1-OLy+1,sNy+OLy + DO i=1-OLx,sNx+OLx + kLow = MIN( kLowC(i,j-1,bi,bj), kLowC(i,j,bi,bj) ) + IF ( kLow .GE. 1 ) THEN + hLoc = ( oneRL + + & 0.5*drF(kLow)*hFacS(i,j,kLow,bi,bj)*recip_zRoughBot ) + hLoc = 0.4 _d 0/LOG(hLoc) + bottomDragCoeffS(i,j,bi,bj) = hLoc*hLoc + ELSE + bottomDragCoeffS(i,j,bi,bj) = 0. _d 0 + ENDIF + ENDDO + ENDDO + ELSEIF ( zRoughBot .GT. 0. _d 0 ) THEN +C- Roughness dependent drag not yet coded for P-Coordinates + WRITE(msgBuf,'(2A)') 'MOM_INIT_FIXED: zRoughBot > 0.', + & ' not yet implemented for P-Coordinate' + CALL PRINT_ERROR( msgBuf, myThid ) + STOP 'ABNORMAL END: S/R MOM_INIT_FIXED' + ENDIF + ENDDO + ENDDO +#endif /* ALLOW_BOTTOMDRAG_ROUGHNESS */ + #ifdef ALLOW_DIAGNOSTICS IF ( useDiagnostics ) THEN CALL MOM_DIAGNOSTICS_INIT( myThid ) diff --git a/pkg/mom_common/mom_u_botdrag_coeff.F b/pkg/mom_common/mom_u_botdrag_coeff.F index 7c934fe360..63d8c2b5ff 100644 --- a/pkg/mom_common/mom_u_botdrag_coeff.F +++ b/pkg/mom_common/mom_u_botdrag_coeff.F @@ -25,6 +25,9 @@ SUBROUTINE MOM_U_BOTDRAG_COEFF( #include "EEPARAMS.h" #include "PARAMS.h" #include "GRID.h" +#ifdef ALLOW_BOTTOMDRAG_ROUGHNESS +# include "MOM_VISC.h" +#endif #ifdef ALLOW_CTRL # include "CTRL_FIELDS.h" #endif @@ -136,7 +139,13 @@ SUBROUTINE MOM_U_BOTDRAG_COEFF( DO i=1-OLx+1,sNx+OLx-1 IF ( (KE(i,j)+KE(i-1,j)).GT.zeroRL ) THEN cDrag(i,j) = cDrag(i,j) - & + bottomDragQuadratic*SQRT(KE(i,j)+KE(i-1,j))*dragFac + & + ( +#ifdef ALLOW_BOTTOMDRAG_ROUGHNESS + & bottomDragCoeffW(i,j,bi,bj) +#else + & bottomDragQuadratic +#endif + & )*SQRT(KE(i,j)+KE(i-1,j))*dragFac ENDIF ENDDO ENDDO @@ -152,7 +161,13 @@ SUBROUTINE MOM_U_BOTDRAG_COEFF( & )*recip_hFacW(i,j,k,bi,bj)*0.25 _d 0 IF ( uSq.GT.zeroRL ) THEN cDrag(i,j) = cDrag(i,j) - & + bottomDragQuadratic*SQRT(uSq)*dragFac + & + ( +#ifdef ALLOW_BOTTOMDRAG_ROUGHNESS + & bottomDragCoeffW(i,j,bi,bj) +#else + & bottomDragQuadratic +#endif + & )*SQRT(uSq)*dragFac ENDIF ENDDO ENDDO @@ -174,7 +189,13 @@ SUBROUTINE MOM_U_BOTDRAG_COEFF( ENDIF IF ( uSq.GT.zeroRL ) THEN cDrag(i,j) = cDrag(i,j) - & + bottomDragQuadratic*SQRT(uSq)*dragFac + & + ( +#ifdef ALLOW_BOTTOMDRAG_ROUGHNESS + & bottomDragCoeffW(i,j,bi,bj) +#else + & bottomDragQuadratic +#endif + & )*SQRT(uSq)*dragFac ENDIF ENDDO ENDDO diff --git a/pkg/mom_common/mom_v_botdrag_coeff.F b/pkg/mom_common/mom_v_botdrag_coeff.F index ba2ace41e3..fa3f808030 100644 --- a/pkg/mom_common/mom_v_botdrag_coeff.F +++ b/pkg/mom_common/mom_v_botdrag_coeff.F @@ -25,6 +25,9 @@ SUBROUTINE MOM_V_BOTDRAG_COEFF( #include "EEPARAMS.h" #include "PARAMS.h" #include "GRID.h" +#ifdef ALLOW_BOTTOMDRAG_ROUGHNESS +# include "MOM_VISC.h" +#endif #ifdef ALLOW_CTRL # include "CTRL_FIELDS.h" #endif @@ -136,7 +139,13 @@ SUBROUTINE MOM_V_BOTDRAG_COEFF( DO i=1-OLx,sNx+OLx-1 IF ( (KE(i,j)+KE(i,j-1)).GT.zeroRL ) THEN cDrag(i,j) = cDrag(i,j) - & + bottomDragQuadratic*SQRT(KE(i,j)+KE(i,j-1))*dragFac + & + ( +#ifdef ALLOW_BOTTOMDRAG_ROUGHNESS + & bottomDragCoeffS(i,j,bi,bj) +#else + & bottomDragQuadratic +#endif + & )*SQRT(KE(i,j)+KE(i,j-1))*dragFac ENDIF ENDDO ENDDO @@ -152,7 +161,13 @@ SUBROUTINE MOM_V_BOTDRAG_COEFF( & )*recip_hFacS(i,j,k,bi,bj)*0.25 _d 0 IF ( vSq.GT.zeroRL ) THEN cDrag(i,j) = cDrag(i,j) - & + bottomDragQuadratic*SQRT(vSq)*dragFac + & + ( +#ifdef ALLOW_BOTTOMDRAG_ROUGHNESS + & bottomDragCoeffS(i,j,bi,bj) +#else + & bottomDragQuadratic +#endif + & )*SQRT(vSq)*dragFac ENDIF ENDDO ENDDO @@ -174,7 +189,13 @@ SUBROUTINE MOM_V_BOTDRAG_COEFF( ENDIF IF ( vSq.GT.zeroRL ) THEN cDrag(i,j) = cDrag(i,j) - & + bottomDragQuadratic*SQRT(vSq)*dragFac + & + ( +#ifdef ALLOW_BOTTOMDRAG_ROUGHNESS + & bottomDragCoeffS(i,j,bi,bj) +#else + & bottomDragQuadratic +#endif + & )*SQRT(vSq)*dragFac ENDIF ENDDO ENDDO diff --git a/pkg/mom_fluxform/mom_fluxform.F b/pkg/mom_fluxform/mom_fluxform.F index b91645342e..055d77ed17 100644 --- a/pkg/mom_fluxform/mom_fluxform.F +++ b/pkg/mom_fluxform/mom_fluxform.F @@ -32,6 +32,8 @@ #ifdef ALLOW_GGL90 # include "GGL90_OPTIONS.h" #endif +C- to switch back to (very) old accounting of geometry/Area factor +#undef OLD_UV_GEOM CBOP C !ROUTINE: MOM_FLUXFORM diff --git a/pkg/openad/openad_dumpAdjoint.F b/pkg/openad/openad_dumpAdjoint.F index defe97adb8..6340201f53 100644 --- a/pkg/openad/openad_dumpAdjoint.F +++ b/pkg/openad/openad_dumpAdjoint.F @@ -116,26 +116,6 @@ SUBROUTINE openad_dumpAdjoint( myTime, myIter, myThid ) foo5=diffkr%d call write_fld_xy_rl('adjdiffkr.',suff,foo5,myIter,1) # endif -# ifdef ALLOW_HFLUX0_CONTROL - foo4=qnet%d - call write_fld_xy_rl('adjqnet.',suff,foo4,myIter,1) -# endif -# ifdef ALLOW_SFLUX0_CONTROL - foo4=empmr%d - call write_fld_xy_rl('adjempmr.',suff,foo4,myIter,1) -# endif -# ifdef ALLOW_TAUU0_CONTROL - foo4=fu%d - call write_fld_xy_rl('adjfu.',suff,foo4,myIter,1) -# endif -# ifdef ALLOW_TAUV0_CONTROL - foo4=fv%d - call write_fld_xy_rl('adjfv.',suff,foo4,myIter,1) -# endif -# ifdef ALLOW_HFLUXM_CONTROL - foo4=qnetm%d - call write_fld_xy_rl('adjhfluxm.',suff,foo4,myIter,1) -#endif ENDIF RETURN diff --git a/pkg/openad/the_model_main.F b/pkg/openad/the_model_main.F index 10a4712549..6b7ddf35ac 100644 --- a/pkg/openad/the_model_main.F +++ b/pkg/openad/the_model_main.F @@ -622,7 +622,7 @@ SUBROUTINE THE_MODEL_MAIN(myThid) LOGICAL exst LOGICAL lastdiva C -->> OpenAD - _RL foo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nr,nSx,nSy) + _RL foo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) _RL foo2D(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) CHARACTER*(10) suff CHARACTER*(MAX_LEN_FNAM) fname @@ -776,44 +776,11 @@ SUBROUTINE THE_MODEL_MAIN(myThid) our_rev_mode%plain=.TRUE. our_rev_mode%tape=.FALSE. our_rev_mode%adjoint=.FALSE. -# ifdef OAD_DEBUG -# if (defined (ALLOW_THETA0_CONTROL) && defined (ALLOW_SALT0_CONTROL)) - DO i1=1-OLx,sNx+OLx - DO i2=1-OLy,sNy+OLy - DO i3=1,nr - DO i4=1,nSx - DO i5=1,nSy - write (standardmessageunit, - +'(A,5(I3,A),E25.17E3,A,E25.17E3)') - +'OAD: (', - +i1,',',i2,',',i3,',',i4,',',i5,') salt/theta ', - +xx_salt(i1,i2,i3,i4,i5)%d,'/',xx_theta(i1,i2,i3,i4,i5)%d - ENDDO - ENDDO - ENDDO - ENDDO - ENDDO -# endif -# endif /* OAD_DEBUG */ C Temporarily change setting of writeBinaryPrec tmpprec = writeBinaryPrec writeBinaryPrec = ctrlprec WRITE(suff,'(I10.10)') optimcycle # ifndef ALLOW_OPENAD_ACTIVE_READ_XYZ -# ifdef ALLOW_THETA0_CONTROL - foo=xx_theta%d - il=ILNBLNK( xx_theta_file ) - write(fname(1:MAX_LEN_FNAM),'(3a)') - & 'ad',xx_theta_file(1:il),'.' - CALL WRITE_FLD_XYZ_RL(fname,suff,foo,myIter,1) -# endif -# ifdef ALLOW_SALT0_CONTROL - foo=xx_salt%d - il=ILNBLNK( xx_salt_file ) - write(fname(1:MAX_LEN_FNAM),'(3a)') - & 'ad',xx_salt_file(1:il),'.' - CALL WRITE_FLD_XYZ_RL(fname,suff,foo,myIter,1) -# endif # ifdef ALLOW_DIFFKR_CONTROL foo=diffkr%d il=ILNBLNK( xx_diffkr_file ) @@ -823,48 +790,6 @@ SUBROUTINE THE_MODEL_MAIN(myThid) # endif # endif /* ALLOW_OPENAD_ACTIVE_READ_XYZ */ -# ifdef ALLOW_TAUU0_CONTROL - foo2D=fu%d - il=ILNBLNK( xx_tauu_file ) - write(fname(1:MAX_LEN_FNAM),'(3a)') - & 'ad',xx_tauu_file(1:il),'.' - CALL WRITE_FLD_XY_RL(fname,suff,foo2D,myIter,1) -# endif -# ifdef ALLOW_TAUV0_CONTROL - foo2D=fv%d - il=ILNBLNK( xx_tauv_file ) - write(fname(1:MAX_LEN_FNAM),'(3a)') - & 'ad',xx_tauv_file(1:il),'.' - CALL WRITE_FLD_XY_RL(fname,suff,foo2D,myIter,1) -# endif -# ifdef ALLOW_HFLUX0_CONTROL - foo2D=qnet%d - il=ILNBLNK( xx_hflux_file ) - write(fname(1:MAX_LEN_FNAM),'(3a)') - & 'ad',xx_hflux_file(1:il),'.' - CALL WRITE_FLD_XY_RL(fname,suff,foo2D,myIter,1) -# endif -# ifdef ALLOW_SFLUX0_CONTROL - foo2D=empmr%d - il=ILNBLNK( xx_sflux_file ) - write(fname(1:MAX_LEN_FNAM),'(3a)') - & 'ad',xx_sflux_file(1:il),'.' - CALL WRITE_FLD_XY_RL(fname,suff,foo2D,myIter,1) -# endif -# ifdef ALLOW_HFLUXM_CONTROL - foo2D=xx_hfluxm%d - il=ILNBLNK( xx_hfluxm_file ) - write(fname(1:MAX_LEN_FNAM),'(3a)') - & 'ad',xx_hfluxm_file(1:il),'.' - CALL WRITE_FLD_XY_RL(fname,suff,foo2D,myIter,1) -# endif -# ifdef ALLOW_ETAN0_CONTROL - foo2D=etan%d - il=ILNBLNK( xx_etan_file ) - write(fname(1:MAX_LEN_FNAM),'(3a)') - & 'ad',xx_etan_file(1:il),'.' - CALL WRITE_FLD_XY_RL(fname,suff,foo2D,myIter,1) -# endif cc# ifdef ALLOW_GENARR2D_CONTROL cc do ik = 1, maxCtrlArr2D cc foo2d=xx_genarr2d(:,:,:,:,ik)%d diff --git a/pkg/seaice/SEAICE.h b/pkg/seaice/SEAICE.h index 831a4df9d7..c5edafebef 100644 --- a/pkg/seaice/SEAICE.h +++ b/pkg/seaice/SEAICE.h @@ -25,15 +25,15 @@ C note: for non-zero AREA, actual ice thickness is HEFF / AREA C HSNOW :: effective snow thickness in m C at center of grid, i.e., tracer point C note: for non-zero AREA, actual snow thickness is HSNOW / AREA -C HSALT :: effective sea ice salinity in g/m^2 -C at center of grid, i.e., tracer point C \ev CEOP C-- Grid variables for seaice +C static masks (depend only on geometry) +C HEFFM :: land-sea mask at C-points (copy of maskC(k=kSrf)) +C SIMaskU/V :: land-sea mask at U/V-points (copies of maskW/S(k=kSrf)) COMMON/ARRAY/HEFFM, SIMaskU, SIMaskV _RL HEFFM (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) -C static masks (depend only on geometry) _RL SIMaskU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL SIMaskV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #ifdef SEAICE_CGRID @@ -49,6 +49,7 @@ C k1/2AtC for metric terms in U/V ice equations. _RS k2AtC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RS k2AtZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #else +C UVM :: B-grid velocity-point mask COMMON/ARRAYB/ UVM _RS UVM (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) C k1/2AtC/U/V :: coefficients at C, U, and V points @@ -68,10 +69,16 @@ C-- Dynamical variables #ifdef SEAICE_ITD & ,AREAITD,HEFFITD,HSNOWITD, & opnWtrFrac, fw2ObyRidge +C Fields for dynamic ice thickness distribution (ITD) +C AREAITD :: area classes +C HEFFITD :: ice thickenss classes (in meters) +C HSNOWITD :: snow thickness classes (in meters) +C openWtrFrac :: fraction of open water (= 1-AREA) for ridging param. +C fw2ObyRidge :: fresh water flux (kg/m^2/s) due to snow pushed into +C ocean during ridging _RL AREAITD (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nITD,nSx,nSy) _RL HEFFITD (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nITD,nSx,nSy) _RL HSNOWITD (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nITD,nSx,nSy) -C fraction of open water (= 1-AREA) needed for ridging parameterization _RL opnWtrFrac (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL fw2ObyRidge(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif /* SEAICE_ITD */ @@ -81,8 +88,15 @@ C fraction of open water (= 1-AREA) needed for ridging parameterization _RL UICE (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL VICE (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) -C uIceC :: average of UICE between last two time steps -C vIceC :: average of VICE between last two time steps +C ETA, etaZ :: shear viscosity as C-points, at Z-points (N s/m = kg/s) +C ZETA, zetaA :: bulk viscosity at C-points, at Z-points +C PRESS :: maximum vertically integrated ice strength/pressure (N/m) +C e11, e22, e12 :: components strain rate tensor (1/s) +C deltaC :: deformation rate tensor invariant, for VP sea ice +C = sqrt( (e11+e22)**2 + (1/e)*(e11-e22)**2 + 4*e12**2) ) +C FORCEX/Y :: momentum forcing +C ( units of [rho * h * u / deltaT] = kg/m/s^2 ) +C u/vIceNm1 :: sea ice drift velocities of previous timestep (m/s) COMMON/SEAICE_DYNVARS_3/ & ETA,etaZ,ZETA,zetaZ,PRESS, e11, e22, e12, deltaC, & FORCEX,FORCEY, @@ -106,35 +120,104 @@ C _RL uIceNm1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL vIceNm1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) -#ifndef SEAICE_CGRID - COMMON/SEAICE_DYNVARS_BGRID/ AMASS, DAIRN, uIceC, vIceC - _RL AMASS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) - _RL DAIRN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) - _RL uIceC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) - _RL vIceC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) -#else +C DWATN :: (linear) ice-ocean drag coefficient +C ( units of [rho|u|] = kg/m^2/s ) +C PRESS0 :: maximal compressive stress/strength (N/m) +C FORCEX/Y0 :: external momentum forcing fields (part of FORCEX/Y) +C ZMAX/ZMIN :: maximum/minimum bulk viscosities +C tensileStrFac :: factor k to compute the maximal tensile stress k*PRESS0 + COMMON/SEAICE_DYNVARS_4/ + & DWATN, PRESS0, FORCEX0, FORCEY0, ZMAX, ZMIN, tensileStrFac + _RL DWATN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RL PRESS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RL FORCEX0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RL FORCEY0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RL ZMAX (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RL ZMIN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RL tensileStrFac(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + +#ifdef SEAICE_CGRID +C seaiceMassC/U/V :: mass (ice+snow) at C/U/V-points ( kg/m^2 ) COMMON/SEAICE_DYNVARS_CGRID/ & seaiceMassC, seaiceMassU, seaiceMassV _RL seaiceMassC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL seaiceMassU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL seaiceMassV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) -#endif +C stressDivergenceX/Y :: div of (vert. integr.) stress tensor (N/m^2) + COMMON /SEAICE_STRESSDIV/ + & stressDivergenceX, stressDivergenceY + _RL stressDivergenceX(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RL stressDivergenceY(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) +# ifdef SEAICE_ALLOW_FREEDRIFT +C u/vice_fd :: free drift velocities (m/s) + COMMON /SEAICE_FD_FIELDS/ + & uice_fd, vice_fd + _RL uice_fd (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RL vice_fd (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) +# endif - COMMON/SEAICE_DYNVARS_4/ - & DWATN, PRESS0, FORCEX0, FORCEY0, ZMAX, ZMIN, tensileStrFac - _RL DWATN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) - _RL PRESS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) - _RL FORCEX0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) - _RL FORCEY0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) - _RL ZMAX (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) - _RL ZMIN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) -C factor k to compute the maximal tensile stress from k*PRESS0, -C in analogy to the maximal compressive stress PRESS0 - _RL tensileStrFac(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) -#ifdef SEAICE_ALLOW_BOTTOMDRAG +# ifdef SEAICE_ALLOW_EVP +C-- Additional fields needed by the EVP solver: +C (vertically integrated) stress tensor, with diagonal terms sigma11/22 +C seaice_sigma1 :: sigma11+sigma22, defined at C-points (N/m) +C seaice_sigma2 :: sigma11-sigma22, defined at C-points (N/m) +C seaice_sigma12 :: off-diagonal term, defined at Z-points (N/m) + COMMON /SEAICE_EVP_FIELDS/ + & seaice_sigma1, seaice_sigma2, seaice_sigma12 + _RL seaice_sigma1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RL seaice_sigma2 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RL seaice_sigma12 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) +# endif /* SEAICE_ALLOW_EVP */ + +# ifdef SEAICE_ALLOW_BOTTOMDRAG +C CbobC :: (linear) bottom drag coefficient for basals stress param. COMMON/SEAICE_BOTTOMDRAG/ CbotC _RL CbotC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) -#endif /* SEAICE_ALLOW_BOTTOMDRAG */ +# endif /* SEAICE_ALLOW_BOTTOMDRAG */ + +# if (defined SEAICE_ALLOW_JFNK) || (defined SEAICE_ALLOW_KRYLOV) +C diagnostics for the JFNK and Krylov solver + INTEGER totalNewtonIters + INTEGER totalNewtonFails + INTEGER totalKrylovIters + INTEGER totalKrylovFails + INTEGER totalJFNKtimeSteps + COMMON /SEAICE_SOLVER_I/ + & totalNewtonIters, totalNewtonFails, + & totalKrylovIters, totalKrylovFails, + & totalJFNKtimeSteps + INTEGER nVec + PARAMETER ( nVec=2*sNx*sNy ) + _RL scalarProductMetric( nVec, 1, nSx, nSy ) + COMMON /SEAICE_KRYLOV_RL/ scalarProductMetric +# endif /* SEAICE_ALLOW_JFNK or SEAICE_ALLOW_KRYLOV */ + +#else /* ndef SEAICE_CGRID */ +C AMASS :: sea ice mass +C DAIRN :: (linear) atmosphere-ice drag coefficient +C uIceC :: average of UICE between last two time steps +C vIceC :: average of VICE between last two time steps + COMMON/SEAICE_DYNVARS_BGRID/ AMASS, DAIRN, uIceC, vIceC + _RL AMASS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RL DAIRN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RL uIceC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RL vIceC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + + COMMON/WIND_STRESS_OCE/WINDX,WINDY +C WINDX - zonal wind stress over water at C points +C WINDY - meridional wind stress over water at C points + _RL WINDX (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RL WINDY (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + +C GWATX/Y :: geostrophic ocean velocities + COMMON/GWATXY/GWATX,GWATY + _RL GWATX (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RL GWATY (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + +C-- KGEO Level used as a proxy for geostrophic velocity. + COMMON/SEAICE_KGEO/KGEO + INTEGER KGEO (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) +#endif /* SEAICE_CGRID */ COMMON/SEAICE_REG_NEG/d_HEFFbyNEG,d_HSNWbyNEG C The change of mean ice thickness due to out-of-bounds values following @@ -149,16 +232,19 @@ C ICE/SNOW stocks tendency associated with relaxation towards observation C The change of mean ice thickness due to relaxation _RL d_HEFFbyRLX (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif /* EXF_SEAICE_FRACTION */ + #ifdef SEAICE_VARIABLE_SALINITY +C HSALT :: effective sea ice salinity in g/m^2 +C at center of grid, i.e., tracer point +C saltFluxAdjust :: adjust salt flux, if HSALT < 0 (e.g. due to advection) COMMON/SEAICE_SALINITY_R/HSALT, saltFluxAdjust _RL HSALT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL saltFluxAdjust(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif /* SEAICE_VARIABLE_SALINITY */ -C saltWtrIce contains m of salty ice melted (<0) or created (>0) -C frWtrIce contains m of freshwater ice melted (<0) or created (>0) -C that is, ice due to precipitation or snow -C frWtrAtm contains freshwater flux from the atmosphere +C saltWtrIce :: contains m of salty ice melted (<0) or created (>0) +C frWtrIce :: contains m of freshwater ice melted (<0) or created (>0) +C that is, ice due to precipitation or snow COMMON/ICEFLUX/ saltWtrIce, frWtrIce _RL saltWtrIce (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL frWtrIce (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) @@ -167,74 +253,12 @@ C TICES :: Seaice/snow surface temperature for each category COMMON/MULTICATEGORY/TICES _RL TICES (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nITD,nSx,nSy) -#if (defined (SEAICE_CGRID) && defined (SEAICE_ALLOW_FREEDRIFT)) - COMMON /SEAICE_FD_FIELDS/ - & uice_fd, vice_fd - _RL uice_fd (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) - _RL vice_fd (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) -#endif - -#if (defined (SEAICE_CGRID) && defined (SEAICE_ALLOW_EVP)) -C -C additional fields needed by the EVP solver -C -C seaice_sigma1 - sigma11+sigma22, defined at C-points -C seaice_sigma2 - sigma11-sigma22, defined at C-points -C seaice_sigma12 - off-diagonal term, defined at Z-points - COMMON /SEAICE_EVP_FIELDS/ - & seaice_sigma1, seaice_sigma2, seaice_sigma12 - _RL seaice_sigma1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) - _RL seaice_sigma2 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) - _RL seaice_sigma12 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) -#endif /* SEAICE_ALLOW_EVP and SEAICE_CGRID */ - -#ifdef SEAICE_CGRID -C stressDivergenceX/Y - divergence of stress tensor - COMMON /SEAICE_STRESSDIV/ - & stressDivergenceX, stressDivergenceY - _RL stressDivergenceX(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) - _RL stressDivergenceY(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) -#endif /* SEAICE_CGRID */ - -#ifndef SEAICE_CGRID - COMMON/WIND_STRESS_OCE/WINDX,WINDY -C WINDX - zonal wind stress over water at C points -C WINDY - meridional wind stress over water at C points - _RL WINDX (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) - _RL WINDY (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) - - COMMON/GWATXY/GWATX,GWATY - _RL GWATX (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) - _RL GWATY (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) - -C-- KGEO Level used as a proxy for geostrophic velocity. - COMMON/SEAICE_KGEO/KGEO - INTEGER KGEO (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) -#endif - C SWFracB :: fraction of surface Short-Wave radiation reaching C the bottom of ocean surface level _RL SWFracB COMMON /SEAICE_SW_R/ & SWFracB -#if (defined SEAICE_ALLOW_JFNK) || (defined SEAICE_ALLOW_KRYLOV) -C diagnostics for the JFNK and Krylov solver - INTEGER totalNewtonIters - INTEGER totalNewtonFails - INTEGER totalKrylovIters - INTEGER totalKrylovFails - INTEGER totalJFNKtimeSteps - COMMON /SEAICE_SOLVER_I/ - & totalNewtonIters, totalNewtonFails, - & totalKrylovIters, totalKrylovFails, - & totalJFNKtimeSteps - INTEGER nVec - PARAMETER ( nVec=2*sNx*sNy ) - _RL scalarProductMetric( nVec, 1, nSx, nSy ) - COMMON /SEAICE_KRYLOV_RL/ scalarProductMetric -#endif /* SEAICE_ALLOW_JFNK or SEAICE_ALLOW_KRYLOV */ - CEH3 ;;; Local Variables: *** CEH3 ;;; mode:fortran *** CEH3 ;;; End: *** diff --git a/pkg/seaice/SEAICE_OPTIONS.h b/pkg/seaice/SEAICE_OPTIONS.h index 5e080299a6..425e9afcff 100644 --- a/pkg/seaice/SEAICE_OPTIONS.h +++ b/pkg/seaice/SEAICE_OPTIONS.h @@ -227,6 +227,8 @@ C- Special seaice flag for AD testing C-- Use the adjointable sea-ice thermodynamic model C in seaice_growth_adx.F instead of seaice_growth.F +C This options excludes more complex physics such +C as sublimation, ITD, and frazil. #undef SEAICE_USE_GROWTH_ADX C-- These flags are not strictly AD-related but may help obtaining diff --git a/pkg/seaice/dynsolver.F b/pkg/seaice/dynsolver.F index 504dfbcab7..b1fdfdb076 100644 --- a/pkg/seaice/dynsolver.F +++ b/pkg/seaice/dynsolver.F @@ -1,4 +1,7 @@ #include "SEAICE_OPTIONS.h" +#ifdef ALLOW_EXF +# include "EXF_OPTIONS.h" +#endif #ifdef ALLOW_AUTODIFF # include "AUTODIFF_OPTIONS.h" #endif @@ -24,7 +27,6 @@ SUBROUTINE DYNSOLVER( myTime, myIter, myThid ) #include "SEAICE_PARAMS.h" #include "SEAICE.h" #ifdef ALLOW_EXF -# include "EXF_OPTIONS.h" # include "EXF_FIELDS.h" #endif #ifdef ALLOW_AUTODIFF_TAMC @@ -75,10 +77,10 @@ SUBROUTINE DYNSOLVER( myTime, myIter, myThid ) DO bi=myBxLo(myThid),myBxHi(myThid) DO j=0,sNy+1 DO i=0,sNx+1 - GWATX(I,J,bi,bj)=HALF*(uVel(i,j,KGEO(I,J,bi,bj),bi,bj) - & +uVel(i,j-1,KGEO(I,J,bi,bj),bi,bj)) - GWATY(I,J,bi,bj)=HALF*(vVel(i,j,KGEO(I,J,bi,bj),bi,bj) - & +vVel(i-1,j,KGEO(I,J,bi,bj),bi,bj)) + GWATX(i,j,bi,bj)=HALF*(uVel(i,j,KGEO(i,j,bi,bj),bi,bj) + & +uVel(i,j-1,KGEO(i,j,bi,bj),bi,bj)) + GWATY(i,j,bi,bj)=HALF*(vVel(i,j,KGEO(i,j,bi,bj),bi,bj) + & +vVel(i-1,j,KGEO(i,j,bi,bj),bi,bj)) #ifdef SEAICE_DEBUG c write(*,'(2i4,2i2,f7.1,7f12.3)') c & ,i,j,bi,bj,UVM(I,J,bi,bj) @@ -101,10 +103,10 @@ SUBROUTINE DYNSOLVER( myTime, myIter, myThid ) ENDDO DO j=1,sNy DO i=1,sNx - AMASS(I,J,bi,bj)=RHOICE*QUART*( + AMASS(i,j,bi,bj)=RHOICE*QUART*( & HEFF(i,j ,bi,bj) + HEFF(i-1,j ,bi,bj) & +HEFF(i,j-1,bi,bj) + HEFF(i-1,j-1,bi,bj) ) - COR_ICE(I,J,bi,bj)=AMASS(I,J,bi,bj) * _fCoriG(I,J,bi,bj) + COR_ICE(i,j,bi,bj)=AMASS(i,j,bi,bj) * _fCoriG(i,j,bi,bj) ENDDO ENDDO ENDDO @@ -118,10 +120,10 @@ SUBROUTINE DYNSOLVER( myTime, myIter, myThid ) DO bi=myBxLo(myThid),myBxHi(myThid) DO j=1,sNy DO i=1,sNx - U1=QUART*(UWIND(I-1,J-1,bi,bj)+UWIND(I-1,J,bi,bj) - & +UWIND(I ,J-1,bi,bj)+UWIND(I ,J,bi,bj)) - V1=QUART*(VWIND(I-1,J-1,bi,bj)+VWIND(I-1,J,bi,bj) - & +VWIND(I ,J-1,bi,bj)+VWIND(I ,J,bi,bj)) + U1=QUART*(UWIND(i-1,j-1,bi,bj)+UWIND(i-1,j,bi,bj) + & +UWIND(i ,j-1,bi,bj)+UWIND(i ,j,bi,bj)) + V1=QUART*(VWIND(i-1,j-1,bi,bj)+VWIND(i-1,j,bi,bj) + & +VWIND(i ,j-1,bi,bj)+VWIND(i ,j,bi,bj)) AAA=U1**2+V1**2 IF ( AAA .LE. SEAICE_EPS_SQ ) THEN AAA=SEAICE_EPS @@ -129,29 +131,29 @@ SUBROUTINE DYNSOLVER( myTime, myIter, myThid ) AAA=SQRT(AAA) ENDIF C first ocean surface stress - DAIRN(I,J,bi,bj)=RHOAIR*OCEAN_drag + DAIRN(i,j,bi,bj)=RHOAIR*OCEAN_drag & *(2.70 _d 0+0.142 _d 0*AAA+0.0764 _d 0*AAA*AAA) - WINDX(I,J,bi,bj)=DAIRN(I,J,bi,bj)* - & (COSWIN*U1-SIGN(SINWIN, _fCori(I,J,bi,bj))*V1) - WINDY(I,J,bi,bj)=DAIRN(I,J,bi,bj)* - & (SIGN(SINWIN, _fCori(I,J,bi,bj))*U1+COSWIN*V1) + WINDX(i,j,bi,bj)=DAIRN(i,j,bi,bj)* + & (COSWIN*U1-SIGN(SINWIN, _fCori(i,j,bi,bj))*V1) + WINDY(i,j,bi,bj)=DAIRN(i,j,bi,bj)* + & (SIGN(SINWIN, _fCori(i,j,bi,bj))*U1+COSWIN*V1) C now ice surface stress - IF ( YC(I,J,bi,bj) .LT. ZERO ) THEN - DAIRN(I,J,bi,bj) = - & RHOAIR*(SEAICE_drag_south*AAA*AREA(I,J,bi,bj) + IF ( YC(i,j,bi,bj) .LT. ZERO ) THEN + DAIRN(i,j,bi,bj) = + & RHOAIR*(SEAICE_drag_south*AAA*AREA(i,j,bi,bj) & +OCEAN_drag*(2.70 _d 0+0.142 _d 0*AAA - & +0.0764 _d 0*AAA*AAA)*(ONE-AREA(I,J,bi,bj))) + & +0.0764 _d 0*AAA*AAA)*(ONE-AREA(i,j,bi,bj))) ELSE - DAIRN(I,J,bi,bj) = - & RHOAIR*(SEAICE_drag*AAA*AREA(I,J,bi,bj) + DAIRN(i,j,bi,bj) = + & RHOAIR*(SEAICE_drag*AAA*AREA(i,j,bi,bj) & +OCEAN_drag*(2.70 _d 0+0.142 _d 0*AAA - & +0.0764 _d 0*AAA*AAA)*(ONE-AREA(I,J,bi,bj))) + & +0.0764 _d 0*AAA*AAA)*(ONE-AREA(i,j,bi,bj))) ENDIF - FORCEX(I,J,bi,bj)=DAIRN(I,J,bi,bj)* - & (COSWIN*U1-SIGN(SINWIN, _fCori(I,J,bi,bj))*V1) - FORCEY(I,J,bi,bj)=DAIRN(I,J,bi,bj)* - & (SIGN(SINWIN, _fCori(I,J,bi,bj))*U1+COSWIN*V1) + FORCEX(i,j,bi,bj)=DAIRN(i,j,bi,bj)* + & (COSWIN*U1-SIGN(SINWIN, _fCori(i,j,bi,bj))*V1) + FORCEY(i,j,bi,bj)=DAIRN(i,j,bi,bj)* + & (SIGN(SINWIN, _fCori(i,j,bi,bj))*U1+COSWIN*V1) ENDDO ENDDO ENDDO @@ -190,19 +192,19 @@ SUBROUTINE DYNSOLVER( myTime, myIter, myThid ) DO j=1-OLy+1,sNy+OLy DO i=1-OLx+1,sNx+OLx C-- NOW ADD IN TILT - FORCEX(I,J,bi,bj)=FORCEX(I,J,bi,bj) - & -AMASS(I,J,bi,bj) + FORCEX(i,j,bi,bj)=FORCEX(i,j,bi,bj) + & -AMASS(i,j,bi,bj) & *( (phiSurf(i, j )-phiSurf(i-1, j ))*SIMaskU(i, j ,bi,bj) & +(phiSurf(i,j-1)-phiSurf(i-1,j-1))*SIMaskV(i,j-1,bi,bj) - & )*HALF*_recip_dxV(I,J,bi,bj) - FORCEY(I,J,bi,bj)=FORCEY(I,J,bi,bj) - & -AMASS(I,J,bi,bj) + & )*HALF*_recip_dxV(i,j,bi,bj) + FORCEY(i,j,bi,bj)=FORCEY(i,j,bi,bj) + & -AMASS(i,j,bi,bj) & *( (phiSurf( i ,j)-phiSurf( i ,j-1))*SIMaskV( i ,j,bi,bj) & +(phiSurf(i-1,j)-phiSurf(i-1,j-1))*SIMaskV(i-1,j,bi,bj) - & )*HALF*_recip_dyU(I,J,bi,bj) + & )*HALF*_recip_dyU(i,j,bi,bj) C NOW KEEP FORCEX0 - FORCEX0(I,J,bi,bj)=FORCEX(I,J,bi,bj) - FORCEY0(I,J,bi,bj)=FORCEY(I,J,bi,bj) + FORCEX0(i,j,bi,bj)=FORCEX(i,j,bi,bj) + FORCEY0(i,j,bi,bj)=FORCEY(i,j,bi,bj) ENDDO ENDDO #endif /* EXPLICIT_SSH_SLOPE */ @@ -210,22 +212,22 @@ SUBROUTINE DYNSOLVER( myTime, myIter, myThid ) DO i=1-OLx,sNx+OLx #ifndef EXPLICIT_SSH_SLOPE C-- NOW ADD IN TILT - FORCEX(I,J,bi,bj)=FORCEX(I,J,bi,bj) - & -COR_ICE(I,J,bi,bj)*GWATY(I,J,bi,bj) - FORCEY(I,J,bi,bj)=FORCEY(I,J,bi,bj) - & +COR_ICE(I,J,bi,bj)*GWATX(I,J,bi,bj) + FORCEX(i,j,bi,bj)=FORCEX(i,j,bi,bj) + & -COR_ICE(i,j,bi,bj)*GWATY(i,j,bi,bj) + FORCEY(i,j,bi,bj)=FORCEY(i,j,bi,bj) + & +COR_ICE(i,j,bi,bj)*GWATX(i,j,bi,bj) C NOW KEEP FORCEX0 - FORCEX0(I,J,bi,bj)=FORCEX(I,J,bi,bj) - FORCEY0(I,J,bi,bj)=FORCEY(I,J,bi,bj) + FORCEX0(i,j,bi,bj)=FORCEX(i,j,bi,bj) + FORCEY0(i,j,bi,bj)=FORCEY(i,j,bi,bj) #endif /* EXPLICIT_SSH_SLOPE */ C-- NOW SET UP ICE PRESSURE AND VISCOSITIES - PRESS0(I,J,bi,bj)=PSTAR*HEFF(I,J,bi,bj) + PRESS0(i,j,bi,bj)=PSTAR*HEFF(i,j,bi,bj) & *EXP(-SEAICE_cStar*(ONE-AREA(i,j,bi,bj))) CML ZMAX(I,J,bi,bj)=(5.0 _d +12/(2.0 _d +04))*PRESS0(I,J,bi,bj) - ZMAX(I,J,bi,bj)=SEAICE_zetaMaxFac*PRESS0(I,J,bi,bj) + ZMAX(i,j,bi,bj)=SEAICE_zetaMaxFac*PRESS0(i,j,bi,bj) CML ZMIN(I,J,bi,bj)=4.0 _d +08 - ZMIN(I,J,bi,bj)=SEAICE_zetaMin - PRESS0(I,J,bi,bj)=PRESS0(I,J,bi,bj)*HEFFM(I,J,bi,bj) + ZMIN(i,j,bi,bj)=SEAICE_zetaMin + PRESS0(i,j,bi,bj)=PRESS0(i,j,bi,bj)*HEFFM(i,j,bi,bj) ENDDO ENDDO ENDDO @@ -251,10 +253,10 @@ SUBROUTINE DYNSOLVER( myTime, myIter, myThid ) DO bi=myBxLo(myThid),myBxHi(myThid) DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx - UICENM1(I,J,bi,bj)=UICE(I,J,bi,bj) - VICENM1(I,J,bi,bj)=VICE(I,J,bi,bj) - UICEC(I,J,bi,bj)=UICE(I,J,bi,bj) - VICEC(I,J,bi,bj)=VICE(I,J,bi,bj) + UICENM1(i,j,bi,bj)=UICE(i,j,bi,bj) + VICENM1(i,j,bi,bj)=VICE(i,j,bi,bj) + UICEC(i,j,bi,bj)=UICE(i,j,bi,bj) + VICEC(i,j,bi,bj)=VICE(i,j,bi,bj) ENDDO ENDDO ENDDO @@ -272,10 +274,10 @@ SUBROUTINE DYNSOLVER( myTime, myIter, myThid ) DO bi=myBxLo(myThid),myBxHi(myThid) DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx - UICE(I,J,bi,bj)=HALF*(UICE(I,J,bi,bj)+UICENM1(I,J,bi,bj)) - VICE(I,J,bi,bj)=HALF*(VICE(I,J,bi,bj)+VICENM1(I,J,bi,bj)) - UICEC(I,J,bi,bj)=UICE(I,J,bi,bj) - VICEC(I,J,bi,bj)=VICE(I,J,bi,bj) + UICE(i,j,bi,bj)=HALF*(UICE(i,j,bi,bj)+UICENM1(i,j,bi,bj)) + VICE(i,j,bi,bj)=HALF*(VICE(i,j,bi,bj)+VICENM1(i,j,bi,bj)) + UICEC(i,j,bi,bj)=UICE(i,j,bi,bj) + VICEC(i,j,bi,bj)=VICE(i,j,bi,bj) ENDDO ENDDO ENDDO diff --git a/pkg/seaice/lsr.F b/pkg/seaice/lsr.F index 36a1d7539d..2675e584a8 100644 --- a/pkg/seaice/lsr.F +++ b/pkg/seaice/lsr.F @@ -1,13 +1,12 @@ -#ifndef SEAICE_LSRBNEW -C for an alternative discretization of d/dx[ (zeta-eta) dV/dy] -C and d/dy[ (zeta-eta) dU/dx] uncomment this option -C#define SEAICE_TEST -#endif - #include "SEAICE_OPTIONS.h" #ifdef ALLOW_AUTODIFF # include "AUTODIFF_OPTIONS.h" #endif +#ifndef SEAICE_LSRBNEW +C Define this option below for an alternative discretization of +C d/dx[ (zeta-eta) dV/dy] and d/dy[ (zeta-eta) dU/dx] +# undef SEAICE_TEST +#endif CStartOfInterface SUBROUTINE lsr( ilcall, myThid ) diff --git a/pkg/seaice/seaice_ad_diff.list b/pkg/seaice/seaice_ad_diff.list index 4a36474de4..c99968e899 100644 --- a/pkg/seaice/seaice_ad_diff.list +++ b/pkg/seaice/seaice_ad_diff.list @@ -21,7 +21,6 @@ seaice_cost_export.f seaice_cost_final.f seaice_cost_init_varia.f seaice_cost_sensi.f -seaice_ctrl_map_ini.f seaice_cost_test.f seaice_calc_strainrates.f seaice_calc_viscosities.f diff --git a/pkg/seaice/seaice_advdiff.F b/pkg/seaice/seaice_advdiff.F index c7ca131716..e9a6987551 100644 --- a/pkg/seaice/seaice_advdiff.F +++ b/pkg/seaice/seaice_advdiff.F @@ -136,14 +136,16 @@ SUBROUTINE SEAICE_ADVDIFF( DO bi=myBxLo(myThid),myBxHi(myThid) C--- loops on tile indices bi,bj -#ifdef ALLOW_AUTODIFF_TAMC -C Initialise for TAF +#ifdef ALLOW_AUTODIFF +C Initialise to help AD-tools DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx - gFld(i,j) = 0. _d 0 + gFld(i,j) = 0. _d 0 ENDDO ENDDO +#endif C +#ifdef ALLOW_AUTODIFF_TAMC tkey = bi + (bj-1)*nSx + (ikey_dynamics-1)*nSx*nSy CADJ STORE area(:,:,bi,bj) = comlev1_bibj, key=tkey, kind=isbyte CADJ STORE heff(:,:,bi,bj) = comlev1_bibj, key=tkey, kind=isbyte @@ -433,7 +435,7 @@ SUBROUTINE SEAICE_ADVDIFF( SItrPrev(i,j,bi,bj)=SItracer(i,j,bi,bj,iTr) #endif #ifdef ALLOW_SITRACER_DEBUG_DIAG - diagArray(I,J,2+(iTr-1)*5) = SItrExt(i,j,bi,bj) + diagArray(i,j,2+(iTr-1)*5) = SItrExt(i,j,bi,bj) #endif ENDDO ENDDO @@ -465,39 +467,40 @@ SUBROUTINE SEAICE_ADVDIFF( IF (SItrMate(iTr).EQ.'HEFF') THEN DO j=1,sNy DO i=1,sNx - if (HEFF(I,J,bi,bj).GE.siEps) then - SItracer(i,j,bi,bj,iTr)=SItrExt(i,j,bi,bj)/HEFF(I,J,bi,bj) - SItrBucket(i,j,bi,bj,iTr)=0. _d 0 - else - SItracer(i,j,bi,bj,iTr)=0. _d 0 - SItrBucket(i,j,bi,bj,iTr)=SItrExt(i,j,bi,bj) - endif + IF (HEFF(i,j,bi,bj).GE.siEps) THEN + SItracer(i,j,bi,bj,iTr)=SItrExt(i,j,bi,bj)/HEFF(i,j,bi,bj) + SItrBucket(i,j,bi,bj,iTr)=0. _d 0 + ELSE + SItracer(i,j,bi,bj,iTr)=0. _d 0 + SItrBucket(i,j,bi,bj,iTr)=SItrExt(i,j,bi,bj) + ENDIF #ifdef ALLOW_SITRACER_ADVCAP C hack to try avoid 'spontaneous generation' of maxima, which supposedly would C occur less frequently if we advected SItr with uXheff instead SItrXheff with u - tmpscal1=max(SItrPrev(i,j,bi,bj), + tmpscal1=max(SItrPrev(i,j,bi,bj), & SItrPrev(i+1,j,bi,bj),SItrPrev(i-1,j,bi,bj), & SItrPrev(i,j+1,bi,bj),SItrPrev(i,j-1,bi,bj)) - tmpscal2=MAX(ZERO,SItracer(i,j,bi,bj,iTr)-tmpscal1) - SItracer(i,j,bi,bj,iTr)=SItracer(i,j,bi,bj,iTr)-tmpscal2 - SItrBucket(i,j,bi,bj,iTr)=SItrBucket(i,j,bi,bj,iTr) - & +tmpscal2*HEFF(I,J,bi,bj) + tmpscal2=MAX(ZERO,SItracer(i,j,bi,bj,iTr)-tmpscal1) + SItracer(i,j,bi,bj,iTr)=SItracer(i,j,bi,bj,iTr)-tmpscal2 + SItrBucket(i,j,bi,bj,iTr)=SItrBucket(i,j,bi,bj,iTr) + & +tmpscal2*HEFF(i,j,bi,bj) #endif C treat case of potential negative value - if (HEFF(I,J,bi,bj).GE.siEps) then - tmpscal1=MIN(0. _d 0,SItracer(i,j,bi,bj,iTr)) - SItracer(i,j,bi,bj,iTr)=SItracer(i,j,bi,bj,iTr)-tmpscal1 - SItrBucket(i,j,bi,bj,iTr)=SItrBucket(i,j,bi,bj,iTr) - & +HEFF(I,J,bi,bj)*tmpscal1 - endif + IF (HEFF(i,j,bi,bj).GE.siEps) THEN + tmpscal1=MIN(0. _d 0,SItracer(i,j,bi,bj,iTr)) + SItracer(i,j,bi,bj,iTr)=SItracer(i,j,bi,bj,iTr)-tmpscal1 + SItrBucket(i,j,bi,bj,iTr)=SItrBucket(i,j,bi,bj,iTr) + & +HEFF(i,j,bi,bj)*tmpscal1 + ENDIF #ifdef ALLOW_SITRACER_DEBUG_DIAG - diagArray(I,J,1+(iTr-1)*5)= - SItrBucket(i,j,bi,bj,iTr) - & *HEFFM(I,J,bi,bj)/SEAICE_deltaTtherm*SEAICE_rhoIce - tmpscal1= ( HEFF(I,J,bi,bj)*SItracer(i,j,bi,bj,iTr) - & + SItrBucket(i,j,bi,bj,iTr) )*HEFFM(I,J,bi,bj) - diagArray(I,J,2+(iTr-1)*5)= tmpscal1-diagArray(I,J,2+(iTr-1)*5) - diagArray(I,J,3+(iTr-1)*5)=HEFFM(i,j,bi,bj) * - & SEAICE_deltaTtherm * gFld(i,j) + diagArray(i,j,1+(iTr-1)*5)= -SItrBucket(i,j,bi,bj,iTr) + & * HEFFM(i,j,bi,bj)/SEAICE_deltaTtherm*SEAICE_rhoIce + tmpscal1= ( HEFF(i,j,bi,bj)*SItracer(i,j,bi,bj,iTr) + & + SItrBucket(i,j,bi,bj,iTr) )*HEFFM(i,j,bi,bj) + diagArray(i,j,2+(iTr-1)*5)= tmpscal1 + & - diagArray(i,j,2+(iTr-1)*5) + diagArray(i,j,3+(iTr-1)*5)= HEFFM(i,j,bi,bj) + & * SEAICE_deltaTtherm * gFld(i,j) #endif ENDDO ENDDO @@ -505,30 +508,30 @@ SUBROUTINE SEAICE_ADVDIFF( ELSE DO j=1,sNy DO i=1,sNx - if (AREA(I,J,bi,bj).GE.SEAICE_area_floor) then - SItracer(i,j,bi,bj,iTr)=SItrExt(i,j,bi,bj)/AREA(I,J,bi,bj) - else - SItracer(i,j,bi,bj,iTr)=0. _d 0 - endif + IF (AREA(i,j,bi,bj).GE.SEAICE_area_floor) THEN + SItracer(i,j,bi,bj,iTr)=SItrExt(i,j,bi,bj)/AREA(i,j,bi,bj) + ELSE + SItracer(i,j,bi,bj,iTr)=0. _d 0 + ENDIF SItrBucket(i,j,bi,bj,iTr)=0. _d 0 #ifdef ALLOW_SITRACER_ADVCAP - tmpscal1=max(SItrPrev(i,j,bi,bj), + tmpscal1=max(SItrPrev(i,j,bi,bj), & SItrPrev(i+1,j,bi,bj),SItrPrev(i-1,j,bi,bj), & SItrPrev(i,j+1,bi,bj),SItrPrev(i,j-1,bi,bj)) - tmpscal2=MAX(ZERO,SItracer(i,j,bi,bj,iTr)-tmpscal1) - SItracer(i,j,bi,bj,iTr)=SItracer(i,j,bi,bj,iTr)-tmpscal2 + tmpscal2=MAX(ZERO,SItracer(i,j,bi,bj,iTr)-tmpscal1) + SItracer(i,j,bi,bj,iTr)=SItracer(i,j,bi,bj,iTr)-tmpscal2 #endif C treat case of potential negative value - if (AREA(I,J,bi,bj).GE.SEAICE_area_floor) then + IF (AREA(i,j,bi,bj).GE.SEAICE_area_floor) THEN tmpscal1=MIN(0. _d 0,SItracer(i,j,bi,bj,iTr)) SItracer(i,j,bi,bj,iTr)=SItracer(i,j,bi,bj,iTr)-tmpscal1 - endif + ENDIF #ifdef ALLOW_SITRACER_DEBUG_DIAG - diagArray(I,J,1+(iTr-1)*5)= 0. _d 0 - diagArray(I,J,2+(iTr-1)*5)= - diagArray(I,J,2+(iTr-1)*5) - & + AREA(I,J,bi,bj)*SItracer(i,j,bi,bj,iTr)*HEFFM(I,J,bi,bj) - diagArray(I,J,3+(iTr-1)*5)=HEFFM(i,j,bi,bj) * - & SEAICE_deltaTtherm * gFld(i,j) + diagArray(i,j,1+(iTr-1)*5)= 0. _d 0 + diagArray(i,j,2+(iTr-1)*5)= - diagArray(i,j,2+(iTr-1)*5) + & + AREA(i,j,bi,bj)*SItracer(i,j,bi,bj,iTr)*HEFFM(i,j,bi,bj) + diagArray(i,j,3+(iTr-1)*5)=HEFFM(i,j,bi,bj) + & * SEAICE_deltaTtherm * gFld(i,j) #endif ENDDO ENDDO @@ -546,28 +549,28 @@ SUBROUTINE SEAICE_ADVDIFF( ENDDO #else /* not ALLOW_GENERIC_ADVDIFF */ - WRITE(msgBuf,'(2A)') + WRITE(msgBuf,'(2A)') & 'SEAICE_ADVDIFF: cannot use SEAICEmultiDimAdvection', & ' without pkg/generic_advdiff' - CALL PRINT_ERROR( msgBuf , myThid ) - WRITE(msgBuf,'(2A)') 'SEAICE_ADVDIFF: ', + CALL PRINT_ERROR( msgBuf , myThid ) + WRITE(msgBuf,'(2A)') 'SEAICE_ADVDIFF: ', & 'Re-compile with pkg "generic_advdiff" in packages.conf' - CALL PRINT_ERROR( msgBuf , myThid ) - CALL ALL_PROC_DIE( myThid ) - STOP 'ABNORMAL END: S/R SEAICE_ADVDIFF' + CALL PRINT_ERROR( msgBuf , myThid ) + CALL ALL_PROC_DIE( myThid ) + STOP 'ABNORMAL END: S/R SEAICE_ADVDIFF' #endif /* ALLOW_GENERIC_ADVDIFF */ ELSE C-- if not multiDimAdvection #ifdef SEAICE_ITD C just for safety - WRITE(msgBuf,'(2A)') 'SEAICE_ADVDIFF: ', + WRITE(msgBuf,'(2A)') 'SEAICE_ADVDIFF: ', & 'ITD with SEAICEmultiDimAdvection=.False. is not allowed,' - CALL PRINT_ERROR( msgBuf , myThid ) - WRITE(msgBuf,'(2A)') 'SEAICE_ADVDIFF: ', + CALL PRINT_ERROR( msgBuf , myThid ) + WRITE(msgBuf,'(2A)') 'SEAICE_ADVDIFF: ', & 'use a multidimensional advection scheme (in data.seaice)' - CALL PRINT_ERROR( msgBuf , myThid ) - CALL ALL_PROC_DIE( myThid ) - STOP 'ABNORMAL END: S/R SEAICE_ADVDIFF' + CALL PRINT_ERROR( msgBuf , myThid ) + CALL ALL_PROC_DIE( myThid ) + STOP 'ABNORMAL END: S/R SEAICE_ADVDIFF' #endif /* SEAICE_ITD */ IF ( SEAICEadvHEff ) THEN diff --git a/pkg/seaice/seaice_advection.F b/pkg/seaice/seaice_advection.F index 7fc6d949b1..8a872c899e 100644 --- a/pkg/seaice/seaice_advection.F +++ b/pkg/seaice/seaice_advection.F @@ -170,7 +170,9 @@ SUBROUTINE SEAICE_ADVECTION( CALL PRINT_ERROR( msgBuf, myThid ) STOP 'ABNORMAL END: S/R SEAICE_ADVECTION' ENDIF +#endif /* ALLOW_AUTODIFF_TAMC */ C +#ifdef ALLOW_AUTODIFF IF ( inAdMode .AND. useApproxAdvectionInAdMode ) THEN C In AD-mode, we change non-linear, potentially unstable AD advection C schemes to linear schemes with more stability. So far only DST3 with @@ -180,7 +182,7 @@ SUBROUTINE SEAICE_ADVECTION( & advectionScheme = ENUM_DST3 C here is room for more advection schemes as this becomes necessary ENDIF -#endif /* ALLOW_AUTODIFF_TAMC */ +#endif /* ALLOW_AUTODIFF */ #ifdef ALLOW_DIAGNOSTICS C-- Set diagnostic suffix for the current tracer @@ -201,7 +203,7 @@ SUBROUTINE SEAICE_ADVECTION( C just ensure that all memory references are to valid floating C point numbers. This prevents spurious hardware signals due to C uninitialised but inert locations. -#ifdef ALLOW_AUTODIFF_TAMC +#ifdef ALLOW_AUTODIFF DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx localTij(i,j) = 0. _d 0 @@ -272,7 +274,7 @@ SUBROUTINE SEAICE_ADVECTION( ENDDO ENDDO -#ifdef ALLOW_AUTODIFF_TAMC +#ifdef ALLOW_AUTODIFF C- Initialise Advective flux in X & Y DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx @@ -387,7 +389,7 @@ SUBROUTINE SEAICE_ADVECTION( CALL GAD_DST3FL_ADV_X( bi,bj,k, .TRUE., I SEAICE_deltaTtherm, uTrans, uFld, maskLocW, localTij, O af, myThid ) -#ifndef ALLOW_AUTODIFF_TAMC +#ifndef ALLOW_AUTODIFF ELSEIF ( advectionScheme.EQ.ENUM_OS7MP ) THEN CALL GAD_OS7MP_ADV_X( bi,bj,k, .TRUE., I SEAICE_deltaTtherm, uTrans, uFld, maskLocW, localTij, @@ -601,7 +603,7 @@ SUBROUTINE SEAICE_ADVECTION( CALL GAD_DST3FL_ADV_Y( bi,bj,k, .TRUE., I SEAICE_deltaTtherm, vTrans, vFld, maskLocS, localTij, O af, myThid ) -#ifndef ALLOW_AUTODIFF_TAMC +#ifndef ALLOW_AUTODIFF ELSEIF ( advectionScheme.EQ.ENUM_OS7MP ) THEN CALL GAD_OS7MP_ADV_Y( bi,bj,k, .TRUE., I SEAICE_deltaTtherm, vTrans, vFld, maskLocS, localTij, diff --git a/pkg/seaice/seaice_budget_ocean.F b/pkg/seaice/seaice_budget_ocean.F index f3657dd645..1d59ab8ac2 100644 --- a/pkg/seaice/seaice_budget_ocean.F +++ b/pkg/seaice/seaice_budget_ocean.F @@ -1,4 +1,7 @@ #include "SEAICE_OPTIONS.h" +#ifdef ALLOW_EXF +# include "EXF_OPTIONS.h" +#endif CStartOfInterface SUBROUTINE SEAICE_BUDGET_OCEAN( @@ -25,7 +28,6 @@ SUBROUTINE SEAICE_BUDGET_OCEAN( # include "SEAICE_SIZE.h" # include "SEAICE_PARAMS.h" # ifdef ALLOW_EXF -# include "EXF_OPTIONS.h" # include "EXF_FIELDS.h" # endif #endif @@ -79,20 +81,20 @@ SUBROUTINE SEAICE_BUDGET_OCEAN( recip_lhEvap = 1./SEAICE_lhEvap recip_rhoConstFresh = 1./rhoConstFresh - DO J=1,sNy - DO I=1,sNx - netHeatFlux(I,J) = 0. _d 0 - SWHeatFlux (I,J) = 0. _d 0 + DO j=1,sNy + DO i=1,sNx + netHeatFlux(i,j) = 0. _d 0 + SWHeatFlux (i,j) = 0. _d 0 C C MAX_TICE does not exist anly longer, lets see if it works without C tsurfLoc (I,J) = MIN(celsius2K+MAX_TICE,TSURF(I,J)) - tsurfLoc (I,J) = TSURF(I,J) + tsurfLoc (i,j) = TSURF(i,j) # ifdef ALLOW_ATM_TEMP C Is this necessary? - atempLoc (I,J) = MAX(celsius2K+MIN_ATEMP,ATEMP(I,J,bi,bj)) + atempLoc (i,j) = MAX(celsius2K+MIN_ATEMP,ATEMP(i,j,bi,bj)) # endif # ifdef ALLOW_DOWNWARD_RADIATION - lwdownLoc(I,J) = MAX(MIN_LWDOWN,LWDOWN(I,J,bi,bj)) + lwdownLoc(i,j) = MAX(MIN_LWDOWN,LWDOWN(i,j,bi,bj)) # endif ENDDO ENDDO @@ -100,11 +102,11 @@ SUBROUTINE SEAICE_BUDGET_OCEAN( C NOW DETERMINE OPEN WATER HEAT BUD. ASSUMING TSURF=WATER TEMP. C WATER ALBEDO IS ASSUMED TO BE THE CONSTANT SEAICE_waterAlbedo - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx #ifdef SEAICE_EXTERNAL_FLUXES - netHeatFlux(I,J) = Qnet(I,J,bi,bj) - SWHeatFlux (I,J) = Qsw(I,J,bi,bj) + netHeatFlux(i,j) = Qnet(i,j,bi,bj) + SWHeatFlux (i,j) = Qsw(i,j,bi,bj) #else /* SEAICE_EXTERNAL_FLUXES undefined */ C This is an example of how one could implement surface fluxes C over the ocean (if one dislikes the fluxes computed in pkg/exf). @@ -114,28 +116,28 @@ SUBROUTINE SEAICE_BUDGET_OCEAN( C diagnose them, one has to save them again as different (SI-)fields. # ifdef ALLOW_DOWNWARD_RADIATION C net upward short wave heat flux - SWHeatFlux(I,J) = (SEAICE_waterAlbedo - 1. _d 0) - & *swdown(I,J,bi,bj) + SWHeatFlux(i,j) = (SEAICE_waterAlbedo - 1. _d 0) + & *swdown(i,j,bi,bj) C lwup = emissivity*stefanBoltzmann*Tsrf^4 + (1-emissivity)*lwdown C the second terms is the reflected incoming long wave radiation C so that the net upward long wave heat flux is: - lwflux(I,J,bi,bj) = - lwdownLoc(I,J)*SEAICE_emissivity - & + D3*tsurfLoc(I,J)**4 - sstdegC = tsurfLoc(I,J) - TMELT + lwflux(i,j,bi,bj) = - lwdownLoc(i,j)*SEAICE_emissivity + & + D3*tsurfLoc(i,j)**4 + sstdegC = tsurfLoc(i,j) - TMELT C downward sensible heat - hs(I,J,bi,bj) = D1*UG(I,J)*(atempLoc(I,J)-tsurfLoc(I,J)) + hs(i,j,bi,bj) = D1*UG(i,j)*(atempLoc(i,j)-tsurfLoc(i,j)) C saturation humidity ssq = QS1*6.11 _d 0 *EXP( 17.2694 _d 0 & *sstdegC/(sstdegC+237.3 _d 0) ) C downward latent heat - hl(I,J,bi,bj) = D1W*UG(I,J)*(AQH(I,J,bi,bj)-ssq) + hl(i,j,bi,bj) = D1W*UG(i,j)*(AQH(i,j,bi,bj)-ssq) C net heat is positive upward - netHeatFlux(I,J)=SWHeatFlux(I,J) - & + lwflux(I,J,bi,bj) - & - hs(I,J,bi,bj) - hl(I,J,bi,bj) + netHeatFlux(i,j)=SWHeatFlux(i,j) + & + lwflux(i,j,bi,bj) + & - hs(i,j,bi,bj) - hl(i,j,bi,bj) C compute evaporation here again because latent heat is different C from its previous value - evap(i,j,bi,bj) = -hl(I,J,bi,bj) + evap(i,j,bi,bj) = -hl(i,j,bi,bj) & *recip_lhEvap*recip_rhoConstFresh C Salt flux from Precipitation and Evaporation. sflux(i,j,bi,bj) = evap(i,j,bi,bj) - precip(i,j,bi,bj) diff --git a/pkg/seaice/seaice_calc_viscosities.F b/pkg/seaice/seaice_calc_viscosities.F index 87a13a5f0e..21f7527795 100644 --- a/pkg/seaice/seaice_calc_viscosities.F +++ b/pkg/seaice/seaice_calc_viscosities.F @@ -103,7 +103,7 @@ SUBROUTINE SEAICE_CALC_VISCOSITIES( C DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) -#ifdef ALLOW_AUTODIFF_TAMC +#ifdef ALLOW_AUTODIFF DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx deltaCreg (i,j) = SEAICE_deltaMin @@ -111,7 +111,7 @@ SUBROUTINE SEAICE_CALC_VISCOSITIES( recip_shear(i,j) = 0. _d 0 ENDDO ENDDO -#endif /* ALLOW_AUTODIFF_TAMC */ +#endif /* ALLOW_AUTODIFF */ C need to do this beforehand for easier vectorization after C TAFization IF ( SEAICEetaZmethod .EQ. 0 ) THEN @@ -145,13 +145,13 @@ SUBROUTINE SEAICE_CALC_VISCOSITIES( & / SQRT( shearDefSq + smallNbrSq ) C recip_shear(i,j) = 1. _d 0 / ( shearDef + smallNbr ) #else -# ifdef ALLOW_AUTODIFF_TAMC +# ifdef ALLOW_AUTODIFF C avoid sqrt of 0 shearDef = 0. _d 0 IF ( shearDefSq .GT. 0. _d 0 ) shearDef = SQRT(shearDefSq) # else shearDef = SQRT(shearDefSq) -# endif /* ALLOW_AUTODIFF_TAMC */ +# endif /* ALLOW_AUTODIFF */ recip_shear(i,j) = 1. _d 0 / MAX( ShearDef, smallNbr ) #endif /* SEAICE_DELTA_SMOOTHREG */ ENDDO @@ -346,14 +346,14 @@ SUBROUTINE SEAICE_CALC_VISCOSITIES( CML & (e11(i,j,bi,bj)**2+e22(i,j,bi,bj)**2)*(ONE+recip_e2) CML & + 4. _d 0*recip_e2*e12Csq(i,j) CML & + 2. _d 0*e11(i,j,bi,bj)*e22(i,j,bi,bj)*(ONE-recip_e2) -#ifdef ALLOW_AUTODIFF_TAMC +#ifdef ALLOW_AUTODIFF C avoid sqrt of 0 deltaC(i,j,bi,bj) = 0. _d 0 IF ( deltaCsq .GT. 0. _d 0 ) & deltaC(i,j,bi,bj) = SQRT(deltaCsq) #else deltaC(i,j,bi,bj) = SQRT(deltaCsq) -#endif /* ALLOW_AUTODIFF_TAMC */ +#endif /* ALLOW_AUTODIFF */ #ifdef SEAICE_DELTA_SMOOTHREG C smooth regularization (without max-function) of delta for C better differentiability diff --git a/pkg/seaice/seaice_check.F b/pkg/seaice/seaice_check.F index 2011551a2b..621e194a0f 100644 --- a/pkg/seaice/seaice_check.F +++ b/pkg/seaice/seaice_check.F @@ -596,7 +596,7 @@ SUBROUTINE SEAICE_CHECK( myThid ) CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) #endif /* SEAICE_MULTICATEGORY */ -C-- SEAICE_ALLOW_TD_IF is obsolete: issue warning and stop. +C-- SEAICE_ALLOW_TD_IF is obsolete: issue error and stop. #ifdef SEAICE_ALLOW_TD_IF WRITE(msgBuf,'(A)') & 'SEAICE_ALLOW_TD_IF option is obsolete:' @@ -607,7 +607,7 @@ SUBROUTINE SEAICE_CHECK( myThid ) errCount = errCount + 1 #endif /* SEAICE_ALLOW_TD_IF */ -C-- SEAICE_DO_OPEN_WATER_GROWTH is obsolete: issue warning and stop. +C-- SEAICE_DO_OPEN_WATER_GROWTH is obsolete: issue error and stop. #if defined(SEAICE_DO_OPEN_WATER_GROWTH) || \ defined(SEAICE_DO_OPEN_WATER_MELT) WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: ', @@ -619,7 +619,7 @@ SUBROUTINE SEAICE_CHECK( myThid ) errCount = errCount + 1 #endif /* SEAICE_DO_OPEN_WATER_GROWTH */ -C-- SEAICE_OCN_MELT_ACT_ON_AREA is obsolete: issue warning and stop. +C-- SEAICE_OCN_MELT_ACT_ON_AREA is obsolete: issue error and stop. #ifdef SEAICE_OCN_MELT_ACT_ON_AREA WRITE(msgBuf,'(A)') & 'SEAICE_OCN_MELT_ACT_ON_AREA option is obsolete:' @@ -630,7 +630,7 @@ SUBROUTINE SEAICE_CHECK( myThid ) errCount = errCount + 1 #endif /* SEAICE_OCN_MELT_ACT_ON_AREA */ -C-- FENTY_AREA_EXPANSION_CONTRACTION is obsolete: issue warning and stop. +C-- FENTY_AREA_EXPANSION_CONTRACTION is obsolete: issue error and stop. #ifdef FENTY_AREA_EXPANSION_CONTRACTION WRITE(msgBuf,'(A)') & 'FENTY_AREA_EXPANSION_CONTRACTION option is obsolete:' @@ -641,7 +641,7 @@ SUBROUTINE SEAICE_CHECK( myThid ) errCount = errCount + 1 #endif /* SEAICE_DO_OPEN_WATER_MELT */ -C-- SEAICE_AGE is obsolete: issue warning and stop. +C-- SEAICE_AGE is obsolete: issue error and stop. #ifdef SEAICE_AGE WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: ', & 'SEAICE_AGE option is obsolete: ' @@ -652,7 +652,7 @@ SUBROUTINE SEAICE_CHECK( myThid ) errCount = errCount + 1 #endif /* SEAICE_AGE */ -C-- SEAICE_SALINITY is obsolete: issue warning and stop. +C-- SEAICE_SALINITY is obsolete: issue error and stop. #ifdef SEAICE_SALINITY WRITE(msgBuf,'(A)') & 'SEAICE_SALINITY option is obsolete' @@ -663,7 +663,7 @@ SUBROUTINE SEAICE_CHECK( myThid ) errCount = errCount + 1 #endif /* SEAICE_SALINITY */ -C-- SEAICE_OLD_AND_BAD_DISCRETIZATION is obsolete: issue warning and stop. +C-- SEAICE_OLD_AND_BAD_DISCRETIZATION is obsolete: issue error and stop. #ifdef SEAICE_OLD_AND_BAD_DISCRETIZATION WRITE(msgBuf,'(A)') & 'SEAICE_OLD_AND_BAD_DISCRETIZATION option is obsolete' @@ -723,8 +723,8 @@ SUBROUTINE SEAICE_CHECK( myThid ) WRITE(msgBuf,'(A,A)') & 'lwFlux is read from lwfluxfile = ',lwfluxfile(1:i) CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)') - & 'implying that lwdown = 0. For pkg/seaice to work '// + WRITE(msgBuf,'(2A)') + & 'implying that lwdown = 0. For pkg/seaice to work ', & 'properly lwdown should be read from lwdownfile!' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 @@ -734,8 +734,8 @@ SUBROUTINE SEAICE_CHECK( myThid ) WRITE(msgBuf,'(A,A)') & 'swFlux is read from swfluxfile = ',swfluxfile(1:i) CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)') - & 'implying that swdown = 0. For pkg/seaice to work '// + WRITE(msgBuf,'(2A)') + & 'implying that swdown = 0. For pkg/seaice to work ', & 'properly swdown should be read from swdownfile!' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 @@ -785,6 +785,7 @@ SUBROUTINE SEAICE_CHECK( myThid ) #ifdef SEAICE_ALLOW_DYNAMICS IF ( SEAICEuseDynamics ) THEN +C-- Check Overlap size: IF ( SEAICEuseJFNK ) THEN IF ( OLx.LT.3 .OR. OLy.LT.3 ) THEN WRITE(msgBuf,'(A,A)') @@ -838,8 +839,8 @@ SUBROUTINE SEAICE_CHECK( myThid ) IF ( SEAICEuseEVP ) THEN # ifdef ALLOW_AUTODIFF_TAMC IF ( SEAICEnEVPstarSteps.GT.nEVPstepMax ) THEN - WRITE(msgBuf,'(A)') - & 'SEAICE_CHECK: need to set nEVPstepMax to >= '// + WRITE(msgBuf,'(2A)') + & 'SEAICE_CHECK: need to set nEVPstepMax to >= ', & 'SEAICEnEVPstarSteps' CALL PRINT_ERROR( msgBuf, myThid ) WRITE(msgBuf,'(A,I4)') @@ -851,13 +852,13 @@ SUBROUTINE SEAICE_CHECK( myThid ) IF ( .NOT.(SEAICEuseEVPstar.OR.SEAICEuseEVPrev) & .AND. SEAICEnEVPstarSteps.NE. & INT(SEAICE_deltaTdyn/SEAICE_deltaTevp) ) THEN - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: SEAICEnEVPstarSteps is '// + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: SEAICEnEVPstarSteps is ', & 'set in namelist, but SEAICEuseEVPstar = .FALSE.' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 ENDIF ENDIF -# else +# else /* SEAICE_ALLOW_EVP */ IF ( SEAICEuseEVP ) THEN WRITE(msgBuf,'(A)') & 'SEAICE_CHECK: SEAICEuseEVP = .TRUE., so EVP is turned on' @@ -865,23 +866,23 @@ SUBROUTINE SEAICE_CHECK( myThid ) WRITE(msgBuf,'(A)') & 'SEAICE_CHECK: by setting appropriate runtime parameters,' CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: but cpp-flag '// + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: but cpp-flag ', & 'SEAICE_ALLOW_EVP is not defined in SEAICE_OPTIONS.h' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 ENDIF -# endif +# endif /* SEAICE_ALLOW_EVP */ #ifdef SEAICE_ALLOW_EVP IF ( SEAICEuseEVP .AND. (SEAICE_eccfr.NE.SEAICE_eccen) ) THEN - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: SEAICEuseEVP = .TRUE., '// + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: SEAICEuseEVP = .TRUE., ', & 'so EVP is turned on by setting appropriate' CALL PRINT_ERROR( msgBuf, myThid ) WRITE(msgBuf,'(A,F5.2,A,F5.2,A)') & 'SEAICE_CHECK: runtime parameters, but SEAICE_eccfr(=', & SEAICE_eccfr , ')/=SEAICE_eccen(=', SEAICE_eccen, ')' CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)')'SEAICE_CHECK: implies a non-normal flow '// + WRITE(msgBuf,'(2A)')'SEAICE_CHECK: implies a non-normal flow ', & 'rule for the elliptical yield curve,' CALL PRINT_ERROR( msgBuf, myThid ) WRITE(msgBuf,'(A)') @@ -889,21 +890,13 @@ SUBROUTINE SEAICE_CHECK( myThid ) CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 ENDIF - IF ( SEAICEuseEVP .AND. ( -# ifdef SEAICE_ALLOW_TEARDROP - & SEAICEuseTD .OR. SEAICEusePL .OR. -# endif -# ifdef SEAICE_ALLOW_MCE - & SEAICEuseMCE .OR. -# endif -# ifdef SEAICE_ALLOW_MCS - & SEAICEuseMCS .OR. -# endif - & .FALSE. ) ) THEN - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: SEAICEuseMCS, '// + IF ( SEAICEuseEVP .AND. + & ( SEAICEuseTD .OR. SEAICEusePL .OR. + & SEAICEuseMCE .OR. SEAICEuseMCS ) ) THEN + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: SEAICEuseMCS, ', & 'SEAICEuseTD, SEAICEusePL, or SEAICEuseMCE = .TRUE.,' CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: and SEAICEuseEVP = '// + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: and SEAICEuseEVP = ', & '.TRUE., but these non-standard rheologies' CALL PRINT_ERROR( msgBuf, myThid ) WRITE(msgBuf,'(A)') @@ -934,7 +927,7 @@ SUBROUTINE SEAICE_CHECK( myThid ) WRITE(msgBuf,'(A)') & 'SEAICE_CHECK: SEAICE_clipVelocities = .TRUE.' CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: but cpp-flag '// + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: but cpp-flag ', & 'SEAICE_ALLOW_CLIPVELS is not defined in SEAICE_OPTIONS.h' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 @@ -944,11 +937,11 @@ SUBROUTINE SEAICE_CHECK( myThid ) #ifndef SEAICE_ALLOW_CLIPZETA IF ( SEAICE_evpDampC .GT. 0. _d 0 .OR. & SEAICE_zetaMin .GT. 0. _d 0 ) THEN - WRITE(msgBuf,'(A)') - & 'SEAICE_CHECK: SEAICE_evpDampC and/or SEAICE_zetaMin '// + WRITE(msgBuf,'(2A)') + & 'SEAICE_CHECK: SEAICE_evpDampC and/or SEAICE_zetaMin ', & 'are set in data.seaice' CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: but cpp-flag '// + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: but cpp-flag ', & 'SEAICE_ALLOW_CLIPZETA is not defined in SEAICE_OPTIONS.h' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 @@ -957,7 +950,7 @@ SUBROUTINE SEAICE_CHECK( myThid ) #ifndef SEAICE_ALLOW_TEM IF ( SEAICEuseTEM ) THEN - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: SEAICEuseTEM requires '// + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: SEAICEuseTEM requires ', & 'that SEAICE_ALLOW_TEM is defined.' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 @@ -965,7 +958,7 @@ SUBROUTINE SEAICE_CHECK( myThid ) #endif #ifndef SEAICE_ALLOW_MCE IF ( SEAICEuseMCE ) THEN - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: SEAICEuseMCE requires '// + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: SEAICEuseMCE requires ', & 'that SEAICE_ALLOW_MCE is defined.' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 @@ -973,7 +966,7 @@ SUBROUTINE SEAICE_CHECK( myThid ) #endif #ifndef SEAICE_ALLOW_MCS IF ( SEAICEuseMCS ) THEN - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: SEAICEuseMCS requires '// + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: SEAICEuseMCS requires ', & 'that SEAICE_ALLOW_MCS is defined.' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 @@ -981,33 +974,39 @@ SUBROUTINE SEAICE_CHECK( myThid ) #endif #ifndef SEAICE_ALLOW_TEARDROP IF (SEAICEuseTD ) THEN - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: SEAICEuseTD requires '// + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: SEAICEuseTD requires ', & 'that SEAICE_ALLOW_TEARDROP is defined.' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 ENDIF IF ( SEAICEusePL ) THEN - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: SEAICEusePL requires '// + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: SEAICEusePL requires ', & 'that SEAICE_ALLOW_TEARDROP is defined.' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 ENDIF #endif + i = 0 + IF ( SEAICEuseTEM ) i = i + 1 + IF ( SEAICEuseMCS ) i = i + 1 + IF ( SEAICEuseMCE ) i = i + 1 + IF ( SEAICEuseTD ) i = i + 1 + IF ( SEAICEusePL ) i = i + 1 + IF ( i .GT. 1 ) THEN + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: More than one rheology ', + & 'flag = .TRUE.,' + CALL PRINT_ERROR( msgBuf, myThid ) + WRITE(msgBuf,'(A)') + & 'SEAICE_CHECK: but only one can be .TRUE. at a time.' + CALL PRINT_ERROR( msgBuf, myThid ) + errCount = errCount + 1 + ENDIF + #ifndef SEAICE_CGRID - IF ( SEAICEuseTEM -# ifdef SEAICE_ALLOW_TEARDROP - & .OR. SEAICEuseTD .OR. SEAICEusePL -# endif -# ifdef SEAICE_ALLOW_MCE - & .OR. SEAICEuseMCE -# endif -# ifdef SEAICE_ALLOW_MCS - & .OR. SEAICEuseMCS -# endif - & .OR. FALSE ) THEN - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: non-default rheologies '// + IF ( i .GE. 1 ) THEN + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: non-default rheologies ', & 'require that SEAICE_CGRID is defined.' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 @@ -1039,29 +1038,6 @@ SUBROUTINE SEAICE_CHECK( myThid ) ENDIF #endif /* ndef SEAICE_CGRID */ -#if ( defined SEAICE_ALLOW_TEARDROP || defined SEAICE_ALLOW_MCS || \ - defined SEAICE_ALLOW_MCE || defined SEAICE_ALLOW_TEM ) - IF ( (SEAICEuseMCE .AND. SEAICEuseMCS) .OR. - & (SEAICEuseMCE .AND. SEAICEuseTD) .OR. - & (SEAICEuseMCE .AND. SEAICEusePL) .OR. - & (SEAICEuseMCE .AND. SEAICEuseTEM) .OR. - & (SEAICEuseMCS .AND. SEAICEuseTD) .OR. - & (SEAICEuseMCS .AND. SEAICEusePL) .OR. - & (SEAICEuseMCS .AND. SEAICEuseTEM) .OR. - & (SEAICEuseTD .AND. SEAICEusePL) .OR. - & (SEAICEuseTD .AND. SEAICEuseTEM) .OR. - & (SEAICEusePL .AND. SEAICEuseTEM) - & ) THEN - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: More than one rheology '// - & 'flag = .TRUE.,' - CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)') - & 'SEAICE_CHECK: but only one can be .TRUE. at a time.' - CALL PRINT_ERROR( msgBuf, myThid ) - errCount = errCount + 1 - ENDIF -#endif - C-- SEAICE_ALLOW_FREEDRIFT and SEAICEuseFREEDRIFT #ifndef SEAICE_ALLOW_FREEDRIFT IF (SEAICEuseFREEDRIFT) THEN @@ -1083,7 +1059,7 @@ SUBROUTINE SEAICE_CHECK( myThid ) WRITE(msgBuf,'(A)') & 'SEAICE_CHECK: SEAICEadvSalt = .TRUE. but cpp-flag' CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: '// + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: ', & 'SEAICE_VARIABLE_SALINITY is undef in SEAICE_OPTIONS.h' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 @@ -1124,7 +1100,7 @@ SUBROUTINE SEAICE_CHECK( myThid ) WRITE(msgBuf,'(A)') & 'SEAICE_CHECK: SEAICEuseJFNK = .TRUE. but cpp-flag' CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: '// + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: ', & 'SEAICE_ALLOW_JFNK is undef in SEAICE_OPTIONS.h' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 @@ -1135,7 +1111,7 @@ SUBROUTINE SEAICE_CHECK( myThid ) WRITE(msgBuf,'(A)') & 'SEAICE_CHECK: SEAICEuseKRYLOV = .TRUE. but cpp-flag' CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: '// + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: ', & 'SEAICE_ALLOW_KRYLOV is undef in SEAICE_OPTIONS.h' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 @@ -1144,21 +1120,21 @@ SUBROUTINE SEAICE_CHECK( myThid ) IF ( SEAICEuseDynamics .AND. .NOT.SEAICEuseJFNK ) THEN IF ( SEAICEuseBDF2 ) THEN - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: SEAICEuseBDF2 = .TRUE. '// + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: SEAICEuseBDF2 = .TRUE. ', & 'only allowed with SEAICEuseJFNK = .TRUE.' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 ENDIF IF ( SEAICEuseIMEX ) THEN - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: SEAICEuseIMEX = .TRUE. '// + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: SEAICEuseIMEX = .TRUE. ', & 'only allowed with SEAICEuseJFNK = .TRUE.' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 ENDIF ENDIF IF ( SEAICEuseIMEX ) THEN - WRITE(msgBuf,'(A)') '** WARNING ** SEAICE_CHECK: '// - & 'SEAICEuseIMEX = .TRUE. '// + WRITE(msgBuf,'(3A)') '** WARNING ** SEAICE_CHECK: ', + & 'SEAICEuseIMEX = .TRUE. ', & 'currently has no effect, because the code is missing' CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) ENDIF @@ -1167,7 +1143,7 @@ SUBROUTINE SEAICE_CHECK( myThid ) WRITE(msgBuf,'(A,I2)') & 'SEAICE_CHECK: SEAICEetaZmethod = ', SEAICEetaZmethod CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: '// + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: ', & 'is no longer allowed; allowed values are 0 and 3' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 @@ -1178,8 +1154,7 @@ SUBROUTINE SEAICE_CHECK( myThid ) WRITE(msgBuf,'(A,I2)') & 'SEAICE_CHECK: SEAICEpressReplFac = ', SEAICEpressReplFac CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: '// - & 'cannot < 0 or > 1' + WRITE(msgBuf,'(A)') 'SEAICE_CHECK: cannot be < 0 or > 1' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 ENDIF @@ -1222,7 +1197,7 @@ SUBROUTINE SEAICE_CHECK( myThid ) WRITE(msgBuf,'(A,I2)') & 'SEAICE_CHECK: SEAICEbasalDragK2 = ', SEAICEbasalDragK2 CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: is greater than 0, '// + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: is greater than 0, ', & 'but SEAICE_ALLOW_BOTTOMDRAG is not defined' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 @@ -1235,17 +1210,17 @@ SUBROUTINE SEAICE_CHECK( myThid ) C advection in S/R SEAICE_ADVDIFF C If useThSice=.TRUE., do not reset it here, but issue a warning IF ( useThSice ) THEN - WRITE(msgBuf,'(A)') '** WARNING ** SEAICE_CHECK: '// + WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_CHECK: ', & 'SEAICE_ITD is defined, but useThSice = .TRUE.' CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT, myThid ) - WRITE(msgBuf,'(A)') '** WARNING ** SEAICE_CHECK: '// + WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_CHECK: ', & 'avoids the ice thickness distribution code.' CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT, myThid ) - WRITE(msgBuf,'(A)') '** WARNING ** SEAICE_CHECK: '// + WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_CHECK: ', & 'If you want the ITD code, set useThSice=.FALSE.' CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, @@ -1257,10 +1232,10 @@ SUBROUTINE SEAICE_CHECK( myThid ) & 'SEAICE_CHECK: SEAICEmultiDimAdvection = ', & SEAICEmultiDimAdvection CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: is not allowed when '// + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: is not allowed when ', & 'SEAICE_ITD is defined' CALL PRINT_ERROR( msgBuf, myThid ) - WRITE(msgBuf,'(A)') 'SEAICE_CHECK: use a multiDimAdvection '// + WRITE(msgBuf,'(2A)') 'SEAICE_CHECK: use a multiDimAdvection ', & 'scheme instead' CALL PRINT_ERROR( msgBuf, myThid ) errCount = errCount + 1 @@ -1268,8 +1243,8 @@ SUBROUTINE SEAICE_CHECK( myThid ) #endif #ifdef ALLOW_SEAICE_COST_SMR_AREA - WRITE(msgBuf,'(A)') - & 'SEAICE_CHECK: cpp-flag ALLOW_SEAICE_COST_SMR_AREA '// + WRITE(msgBuf,'(2A)') + & 'SEAICE_CHECK: cpp-flag ALLOW_SEAICE_COST_SMR_AREA ', & 'is not allowed anymore.' CALL PRINT_ERROR( msgBuf, myThid ) WRITE(msgBuf,'(A)') @@ -1279,9 +1254,9 @@ SUBROUTINE SEAICE_CHECK( myThid ) #endif IF ( errCount .GE. 1 ) THEN - WRITE(msgBuf,'(A,I3,A)') 'SEAICE_CHECK: ', errCount, - & ' parameter/CPP-flag combinations are '// - & 'inconsistent or incomplete' + WRITE(msgBuf,'(A,I3,2A)') 'SEAICE_CHECK: ', errCount, + & ' parameter/CPP-flag combinations are', + & ' inconsistent or incomplete' CALL PRINT_ERROR( msgBuf, myThid ) WRITE(msgBuf,'(A,I3,A)') & 'SEAICE_CHECK: detected', errCount,' fatal error(s)' diff --git a/pkg/seaice/seaice_ctrl_map_ini.F b/pkg/seaice/seaice_ctrl_map_ini.F deleted file mode 100644 index 6f7ce88ac9..0000000000 --- a/pkg/seaice/seaice_ctrl_map_ini.F +++ /dev/null @@ -1,158 +0,0 @@ -#include "SEAICE_OPTIONS.h" -#ifdef ALLOW_CTRL -# include "CTRL_OPTIONS.h" -#endif - -CBOP -C !ROUTINE: seaice_ctrl_map_ini -C !INTERFACE: - subroutine seaice_ctrl_map_ini( mythid ) - -C !DESCRIPTION: \bv -c *================================================================= -c | SUBROUTINE seaice_ctrl_map_ini -c | Add the temperature, salinity, and diffusivity parts of the -c | control vector to the model state and update the tile halos. -c | The control vector is defined in the header file "ctrl.h". -c *================================================================= -C \ev - -C !USES: - implicit none - -c == global variables == -#include "SIZE.h" -#include "EEPARAMS.h" -#include "PARAMS.h" -#include "GRID.h" -#include "DYNVARS.h" -#include "FFIELDS.h" -#include "SEAICE_SIZE.h" -#include "SEAICE.h" -#ifdef ALLOW_CTRL -# include "CTRL_SIZE.h" -# include "ctrl.h" -# include "ctrl_dummy.h" -# include "optim.h" -#endif - -C !INPUT/OUTPUT PARAMETERS: -c == routine arguments == - integer mythid - -#ifdef ALLOW_CTRL -c == external == - integer ilnblnk - external ilnblnk - -C !LOCAL VARIABLES: -c == local variables == - integer bi,bj - integer i,j - integer jmin,jmax - integer imin,imax - integer il - logical doglobalread - logical ladinit - character*(80) fnamegeneric - _RL tmpfld2d(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) - -c == end of interface == -CEOP - - jmin = 1 - jmax = sNy - imin = 1 - imax = sNx - - doglobalread = .false. - ladinit = .false. - - do bj = myByLo(myThid), myByHi(myThid) - do bi = myBxLo(myThid), myBxHi(myThid) - do j = 1-OLy,sNy+OLy - do i = 1-OLx,sNx+OLx - tmpfld2d(i,j,bi,bj) = 0. _d 0 - enddo - enddo - enddo - enddo - -#ifdef ALLOW_SIAREA_CONTROL -c-- siarea. - il=ilnblnk( xx_siarea_file ) - write(fnamegeneric(1:80),'(2a,i10.10)') - & xx_siarea_file(1:il),'.',optimcycle - call active_read_xy( fnamegeneric, tmpfld2d, 1, - & doglobalread, ladinit, optimcycle, - & mythid, xx_siarea_dummy ) - do bj = myByLo(myThid), myByHi(myThid) - do bi = myBxLo(myThid), myBxHi(myThid) - do j = jmin,jmax - do i = imin,imax - area(i,j,bi,bj) = area(i,j,bi,bj) + - & tmpfld2d(i,j,bi,bj) - enddo - enddo - enddo - enddo -#endif - -#ifdef ALLOW_SIHEFF_CONTROL -c-- siheff. - il=ilnblnk( xx_siheff_file ) - write(fnamegeneric(1:80),'(2a,i10.10)') - & xx_siheff_file(1:il),'.',optimcycle - call active_read_xy( fnamegeneric, tmpfld2d, 1, - & doglobalread, ladinit, optimcycle, - & mythid, xx_siheff_dummy ) - do bj = myByLo(myThid), myByHi(myThid) - do bi = myBxLo(myThid), myBxHi(myThid) - do j = jmin,jmax - do i = imin,imax - heff(i,j,bi,bj) = heff(i,j,bi,bj) + - & tmpfld2d(i,j,bi,bj) - enddo - enddo - enddo - enddo -#endif - -#ifdef ALLOW_SIHSNOW_CONTROL -c-- sihsnow. - il=ilnblnk( xx_sihsnow_file ) - write(fnamegeneric(1:80),'(2a,i10.10)') - & xx_sihsnow_file(1:il),'.',optimcycle - call active_read_xy( fnamegeneric, tmpfld2d, 1, - & doglobalread, ladinit, optimcycle, - & mythid, xx_sihsnow_dummy ) - do bj = myByLo(myThid), myByHi(myThid) - do bi = myBxLo(myThid), myBxHi(myThid) - do j = jmin,jmax - do i = imin,imax - hsnow(i,j,bi,bj) = hsnow(i,j,bi,bj) + - & tmpfld2d(i,j,bi,bj) - enddo - enddo - enddo - enddo -#endif - -c-- Update the tile edges. - -#ifdef ALLOW_SIAREA_CONTROL - _EXCH_XY_RL( area, mythid ) -#endif - -#ifdef ALLOW_SIHEFF_CONTROL - _EXCH_XY_RL( heff, mythid ) -#endif - -#ifdef ALLOW_SIHSNOW_CONTROL - _EXCH_XY_RL( hsnow, mythid ) -#endif - -#endif /* ALLOW_CTRL */ - - return - end diff --git a/pkg/seaice/seaice_diagnostics_init.F b/pkg/seaice/seaice_diagnostics_init.F index a8627c81e9..c4d5ef1ea0 100644 --- a/pkg/seaice/seaice_diagnostics_init.F +++ b/pkg/seaice/seaice_diagnostics_init.F @@ -376,7 +376,14 @@ SUBROUTINE SEAICE_DIAGNOSTICS_INIT( myThid ) diagCode = 'SM U1 ' CALL DIAGNOSTICS_ADDTOLIST( diagNum, I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) - +#ifdef SEAICE_USE_GROWTH_ADX + diagName = 'SIeprflx' + diagTitle = 'heat flux adjustment associated with EmPmR' + diagUnits = 'W/m^2 ' + diagCode = 'SM U1 ' + CALL DIAGNOSTICS_ADDTOLIST( diagNum, + I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) +#else #ifndef SEAICE_DISABLE_HEATCONSFIX diagName = 'SIaaflux' diagTitle = 'conservative ocn<->seaice adv. heat flux adjust.' @@ -384,6 +391,7 @@ SUBROUTINE SEAICE_DIAGNOSTICS_INIT( myThid ) diagCode = 'SM U1 ' CALL DIAGNOSTICS_ADDTOLIST( diagNum, I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) +#endif #endif diagName = 'SIhl ' diff --git a/pkg/seaice/seaice_dynsolver.F b/pkg/seaice/seaice_dynsolver.F index 694fec8167..c536d2fc70 100644 --- a/pkg/seaice/seaice_dynsolver.F +++ b/pkg/seaice/seaice_dynsolver.F @@ -58,18 +58,21 @@ SUBROUTINE SEAICE_DYNSOLVER( myTime, myIter, myThid ) #endif /* ALLOW_DIAGNOSTICS */ C !LOCAL VARIABLES: -C === In Local common block === -C TAUX :: zonal wind stress over seaice at U point -C TAUY :: meridional wind stress over seaice at V point - COMMON/WIND_STRESS_ICE/TAUX,TAUY - _RL TAUX (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) - _RL TAUY (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) C === Local variables === C i,j :: Loop counters C bi,bj :: tile counters INTEGER i, j, bi, bj - _RL phiSurf(1-OLx:sNx+OLx,1-OLy:sNy+OLy) +#ifdef SEAICE_ALLOW_DYNAMICS +# ifndef ALLOW_AUTODIFF _RL mask_uice, mask_vice +# endif +C phiSurf :: geopotential height at sea surface (including pressure load) + _RL phiSurf(1-OLx:sNx+OLx,1-OLy:sNy+OLy) +#endif +C TAUX :: zonal wind stress over seaice at U point +C TAUY :: meridional wind stress over seaice at V point + _RL TAUX (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RL TAUY (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #ifdef ALLOW_DIAGNOSTICS # ifdef ALLOW_AUTODIFF _RL strDivX(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) @@ -87,34 +90,18 @@ SUBROUTINE SEAICE_DYNSOLVER( myTime, myIter, myThid ) LOGICAL diag_SIpRfric_isOn, diag_SIpSfric_isOn #endif /* ALLOW_DIAGNOSTICS */ -C Initialise local variables in common block - IF ( myIter.EQ.nIter0 ) THEN - DO bj=myByLo(myThid),myByHi(myThid) - DO bi=myBxLo(myThid),myBxHi(myThid) - DO j=1-OLy,sNy+OLy - DO i=1-OLx,sNx+OLx - TAUX(i,j,bi,bj) = 0. _d 0 - TAUY(i,j,bi,bj) = 0. _d 0 - ENDDO - ENDDO - ENDDO - ENDDO - ENDIF - -# ifdef ALLOW_AUTODIFF -C Following re-initialisation breaks some "artificial" AD dependencies -C incured by IF (DIFFERENT_MULTIPLE ... statement DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx +#ifdef ALLOW_AUTODIFF +C Following re-initialisation breaks some "artificial" AD dependencies +C incured by IF (DIFFERENT_MULTIPLE ... statement PRESS0(i,j,bi,bj) = SEAICE_strength*HEFF(i,j,bi,bj) & *EXP(-SEAICE_cStar*(ONE-AREA(i,j,bi,bj))) ZMAX(i,j,bi,bj) = SEAICE_zetaMaxFac*PRESS0(i,j,bi,bj) ZMIN(i,j,bi,bj) = SEAICE_zetaMin PRESS0(i,j,bi,bj) = PRESS0(i,j,bi,bj)*HEFFM(i,j,bi,bj) - TAUX(i,j,bi,bj) = 0. _d 0 - TAUY(i,j,bi,bj) = 0. _d 0 # ifdef SEAICE_ALLOW_FREEDRIFT uice_fd(i,j,bi,bj)= 0. _d 0 vice_fd(i,j,bi,bj)= 0. _d 0 @@ -123,204 +110,198 @@ SUBROUTINE SEAICE_DYNSOLVER( myTime, myIter, myThid ) strDivX(i,j,bi,bj)= 0. _d 0 strDivY(i,j,bi,bj)= 0. _d 0 # endif +#endif /* ALLOW_AUTODIFF */ +C Always initialise these local variables, needed for TAF, but also +C because they are not completely filled in S/R seaice_get_dynforcing + TAUX(i,j,bi,bj) = 0. _d 0 + TAUY(i,j,bi,bj) = 0. _d 0 ENDDO ENDDO ENDDO ENDDO -# endif /* ALLOW_AUTODIFF */ # ifdef ALLOW_AUTODIFF_TAMC CADJ STORE uice = comlev1, key=ikey_dynamics, kind=isbyte CADJ STORE vice = comlev1, key=ikey_dynamics, kind=isbyte CADJ STORE uicenm1 = comlev1, key=ikey_dynamics, kind=isbyte CADJ STORE vicenm1 = comlev1, key=ikey_dynamics, kind=isbyte # endif /* ALLOW_AUTODIFF_TAMC */ +C-- interface of dynamics with atmopheric forcing fields (wind/stress) +C Call this in each time step so that we can use the surface stress +C in S/R seaice_ocean_stress + CALL SEAICE_GET_DYNFORCING ( + I uIce, vIce, AREA, SIMaskU, SIMaskV, + O TAUX, TAUY, + I myTime, myIter, myThid ) - IF ( +#ifdef SEAICE_ALLOW_DYNAMICS + IF ( SEAICEuseDYNAMICS .AND. & DIFFERENT_MULTIPLE(SEAICE_deltaTdyn,myTime,SEAICE_deltaTtherm) & ) THEN -# ifdef ALLOW_AUTODIFF_TAMC -# ifdef SEAICE_ALLOW_EVP +#if (defined ALLOW_AUTODIFF_TAMC && defined SEAICE_ALLOW_EVP) CADJ STORE press0 = comlev1, key=ikey_dynamics, kind=isbyte CADJ STORE zmax = comlev1, key=ikey_dynamics, kind=isbyte -# endif -# endif /* ALLOW_AUTODIFF_TAMC */ +#endif /* ALLOW_AUTODIFF_TAMC and SEAICE_ALLOW_EVP */ C-- NOW SET UP MASS PER UNIT AREA AND CORIOLIS TERM - DO bj=myByLo(myThid),myByHi(myThid) - DO bi=myBxLo(myThid),myBxHi(myThid) - DO j=1-OLy+1,sNy+OLy - DO i=1-OLx+1,sNx+OLx - seaiceMassC(i,j,bi,bj)=SEAICE_rhoIce*HEFF(i,j,bi,bj) - seaiceMassU(i,j,bi,bj)=SEAICE_rhoIce*HALF*( - & HEFF(i,j,bi,bj) + HEFF(i-1,j ,bi,bj) ) - seaiceMassV(i,j,bi,bj)=SEAICE_rhoIce*HALF*( - & HEFF(i,j,bi,bj) + HEFF(i ,j-1,bi,bj) ) - ENDDO - ENDDO - IF ( SEAICEaddSnowMass ) THEN + DO bj=myByLo(myThid),myByHi(myThid) + DO bi=myBxLo(myThid),myBxHi(myThid) DO j=1-OLy+1,sNy+OLy DO i=1-OLx+1,sNx+OLx - seaiceMassC(i,j,bi,bj)=seaiceMassC(i,j,bi,bj) - & + SEAICE_rhoSnow*HSNOW(i,j,bi,bj) - seaiceMassU(i,j,bi,bj)=seaiceMassU(i,j,bi,bj) - & + SEAICE_rhoSnow*HALF*( - & HSNOW(i,j,bi,bj) + HSNOW(i-1,j ,bi,bj) ) - - seaiceMassV(i,j,bi,bj)=seaiceMassV(i,j,bi,bj) - & + SEAICE_rhoSnow*HALF*( - & HSNOW(i,j,bi,bj) + HSNOW(i ,j-1,bi,bj) ) + seaiceMassC(i,j,bi,bj)=SEAICE_rhoIce*HEFF(i,j,bi,bj) + seaiceMassU(i,j,bi,bj)=SEAICE_rhoIce*HALF*( + & HEFF(i,j,bi,bj) + HEFF(i-1,j ,bi,bj) ) + seaiceMassV(i,j,bi,bj)=SEAICE_rhoIce*HALF*( + & HEFF(i,j,bi,bj) + HEFF(i ,j-1,bi,bj) ) ENDDO ENDDO - ENDIF + IF ( SEAICEaddSnowMass ) THEN + DO j=1-OLy+1,sNy+OLy + DO i=1-OLx+1,sNx+OLx + seaiceMassC(i,j,bi,bj)=seaiceMassC(i,j,bi,bj) + & + SEAICE_rhoSnow*HSNOW(i,j,bi,bj) + seaiceMassU(i,j,bi,bj)=seaiceMassU(i,j,bi,bj) + & + SEAICE_rhoSnow*HALF*( + & HSNOW(i,j,bi,bj) + HSNOW(i-1,j ,bi,bj) ) + + seaiceMassV(i,j,bi,bj)=seaiceMassV(i,j,bi,bj) + & + SEAICE_rhoSnow*HALF*( + & HSNOW(i,j,bi,bj) + HSNOW(i ,j-1,bi,bj) ) + ENDDO + ENDDO + ENDIF + ENDDO ENDDO - ENDDO #ifndef ALLOW_AUTODIFF - IF ( SEAICE_maskRHS ) THEN + IF ( SEAICE_maskRHS ) THEN C dynamic masking of areas with no ice, not recommended C and only kept for testing purposes - DO bj=myByLo(myThid),myByHi(myThid) - DO bi=myBxLo(myThid),myBxHi(myThid) - DO j=1-OLy+1,sNy+OLy - DO i=1-OLx+1,sNx+OLx - seaiceMaskU(i,j,bi,bj)=AREA(i,j,bi,bj)+AREA(i-1,j,bi,bj) - mask_uice=HEFFM(i,j,bi,bj)+HEFFM(i-1,j ,bi,bj) - IF ( (seaiceMaskU(i,j,bi,bj) .GT. 0. _d 0) .AND. - & (mask_uice .GT. 1.5 _d 0) ) THEN - seaiceMaskU(i,j,bi,bj) = 1. _d 0 - ELSE - seaiceMaskU(i,j,bi,bj) = 0. _d 0 - ENDIF - seaiceMaskV(i,j,bi,bj)=AREA(i,j,bi,bj)+AREA(i,j-1,bi,bj) - mask_vice=HEFFM(i,j,bi,bj)+HEFFM(i ,j-1,bi,bj) - IF ( (seaiceMaskV(i,j,bi,bj) .GT. 0. _d 0) .AND. - & (mask_vice .GT. 1.5 _d 0) ) THEN - seaiceMaskV(i,j,bi,bj) = 1. _d 0 - ELSE - seaiceMaskV(i,j,bi,bj) = 0. _d 0 - ENDIF + DO bj=myByLo(myThid),myByHi(myThid) + DO bi=myBxLo(myThid),myBxHi(myThid) + DO j=1-OLy+1,sNy+OLy + DO i=1-OLx+1,sNx+OLx + seaiceMaskU(i,j,bi,bj)=AREA(i,j,bi,bj)+AREA(i-1,j,bi,bj) + mask_uice=HEFFM(i,j,bi,bj)+HEFFM(i-1,j ,bi,bj) + IF ( (seaiceMaskU(i,j,bi,bj) .GT. 0. _d 0) .AND. + & (mask_uice .GT. 1.5 _d 0) ) THEN + seaiceMaskU(i,j,bi,bj) = 1. _d 0 + ELSE + seaiceMaskU(i,j,bi,bj) = 0. _d 0 + ENDIF + seaiceMaskV(i,j,bi,bj)=AREA(i,j,bi,bj)+AREA(i,j-1,bi,bj) + mask_vice=HEFFM(i,j,bi,bj)+HEFFM(i ,j-1,bi,bj) + IF ( (seaiceMaskV(i,j,bi,bj) .GT. 0. _d 0) .AND. + & (mask_vice .GT. 1.5 _d 0) ) THEN + seaiceMaskV(i,j,bi,bj) = 1. _d 0 + ELSE + seaiceMaskV(i,j,bi,bj) = 0. _d 0 + ENDIF + ENDDO ENDDO ENDDO ENDDO - ENDDO - CALL EXCH_UV_XY_RL( seaiceMaskU, seaiceMaskV, .FALSE., myThid ) - ENDIF + CALL EXCH_UV_XY_RL( seaiceMaskU, seaiceMaskV, .FALSE., myThid ) + ENDIF #endif /* ndef ALLOW_AUTODIFF */ C-- NOW SET UP FORCING FIELDS C initialise fields - DO bj=myByLo(myThid),myByHi(myThid) - DO bi=myBxLo(myThid),myBxHi(myThid) - DO j=1-OLy,sNy+OLy - DO i=1-OLx,sNx+OLx - TAUX (i,j,bi,bj)= 0. _d 0 - TAUY (i,j,bi,bj)= 0. _d 0 -#ifdef ALLOW_AUTODIFF -# ifdef SEAICE_ALLOW_EVP - stressDivergenceX(i,j,bi,bj) = 0. _d 0 - stressDivergenceY(i,j,bi,bj) = 0. _d 0 -# endif -#endif +#if (defined ALLOW_AUTODIFF && defined SEAICE_ALLOW_EVP) + DO bj=myByLo(myThid),myByHi(myThid) + DO bi=myBxLo(myThid),myBxHi(myThid) + DO j=1-OLy,sNy+OLy + DO i=1-OLx,sNx+OLx + stressDivergenceX(i,j,bi,bj) = 0. _d 0 + stressDivergenceY(i,j,bi,bj) = 0. _d 0 + ENDDO ENDDO ENDDO ENDDO - ENDDO - -# ifdef ALLOW_AUTODIFF_TAMC -CADJ STORE uice = comlev1, key=ikey_dynamics, kind=isbyte -CADJ STORE vice = comlev1, key=ikey_dynamics, kind=isbyte -# endif /* ALLOW_AUTODIFF_TAMC */ -C-- interface of dynamics with atmopheric forcing fields (wind/stress) - CALL SEAICE_GET_DYNFORCING ( - I uIce, vIce, AREA, SIMaskU, SIMaskV, - O TAUX, TAUY, - I myTime, myIter, myThid ) +#endif - DO bj=myByLo(myThid),myByHi(myThid) - DO bi=myBxLo(myThid),myBxHi(myThid) + DO bj=myByLo(myThid),myByHi(myThid) + DO bi=myBxLo(myThid),myBxHi(myThid) C-- Compute surface pressure at z==0: C- use actual sea surface height for tilt computations - IF ( usingPCoords ) THEN - DO j=1-OLy,sNy+OLy - DO i=1-OLx,sNx+OLx - phiSurf(i,j) = phiHydLow(i,j,bi,bj) - ENDDO - ENDDO - ELSE - DO j=1-OLy,sNy+OLy - DO i=1-OLx,sNx+OLx - phiSurf(i,j) = Bo_surf(i,j,bi,bj)*etaN(i,j,bi,bj) - ENDDO - ENDDO - ENDIF -#ifdef ATMOSPHERIC_LOADING -C-- add atmospheric loading and Sea-Ice loading as it is done for phi0surf -C-- in S/R external_forcing_surf - IF ( usingZCoords ) THEN - IF ( useRealFreshWaterFlux ) THEN + IF ( usingPCoords ) THEN DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx - phiSurf(i,j) = phiSurf(i,j) - & + ( pload(i,j,bi,bj) - & +sIceLoad(i,j,bi,bj)*gravity*sIceLoadFac - & )*recip_rhoConst + phiSurf(i,j) = phiHydLow(i,j,bi,bj) ENDDO ENDDO ELSE DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx - phiSurf(i,j) = phiSurf(i,j) - & + pload(i,j,bi,bj)*recip_rhoConst + phiSurf(i,j) = Bo_surf(i,j,bi,bj)*etaN(i,j,bi,bj) ENDDO ENDDO ENDIF -C ELSEIF ( usingPCoords ) THEN +#ifdef ATMOSPHERIC_LOADING +C-- add atmospheric loading and Sea-Ice loading as it is done for phi0surf +C-- in S/R external_forcing_surf + IF ( usingZCoords ) THEN + IF ( useRealFreshWaterFlux ) THEN + DO j=1-OLy,sNy+OLy + DO i=1-OLx,sNx+OLx + phiSurf(i,j) = phiSurf(i,j) + & + ( pload(i,j,bi,bj) + & +sIceLoad(i,j,bi,bj)*gravity*sIceLoadFac + & )*recip_rhoConst + ENDDO + ENDDO + ELSE + DO j=1-OLy,sNy+OLy + DO i=1-OLx,sNx+OLx + phiSurf(i,j) = phiSurf(i,j) + & + pload(i,j,bi,bj)*recip_rhoConst + ENDDO + ENDDO + ENDIF +C ELSEIF ( usingPCoords ) THEN C The true atmospheric P-loading is not yet implemented for P-coord C (requires time varying dP(Nr) like dP(k-bottom) with NonLin FS). - ENDIF + ENDIF #endif /* ATMOSPHERIC_LOADING */ C-- basic forcing by wind stress - IF ( SEAICEscaleSurfStress ) THEN - DO j=1-OLy+1,sNy+OLy - DO i=1-OLx+1,sNx+OLx - FORCEX0(i,j,bi,bj)=TAUX(i,j,bi,bj) - & * 0.5 _d 0*(AREA(i,j,bi,bj)+AREA(i-1,j,bi,bj)) - FORCEY0(i,j,bi,bj)=TAUY(i,j,bi,bj) - & * 0.5 _d 0*(AREA(i,j,bi,bj)+AREA(i,j-1,bi,bj)) + IF ( SEAICEscaleSurfStress ) THEN + DO j=1-OLy+1,sNy+OLy + DO i=1-OLx+1,sNx+OLx + FORCEX0(i,j,bi,bj)=TAUX(i,j,bi,bj) + & * 0.5 _d 0*(AREA(i,j,bi,bj)+AREA(i-1,j,bi,bj)) + FORCEY0(i,j,bi,bj)=TAUY(i,j,bi,bj) + & * 0.5 _d 0*(AREA(i,j,bi,bj)+AREA(i,j-1,bi,bj)) + ENDDO ENDDO - ENDDO - ELSE - DO j=1-OLy+1,sNy+OLy - DO i=1-OLx+1,sNx+OLx - FORCEX0(i,j,bi,bj)=TAUX(i,j,bi,bj) - FORCEY0(i,j,bi,bj)=TAUY(i,j,bi,bj) + ELSE + DO j=1-OLy+1,sNy+OLy + DO i=1-OLx+1,sNx+OLx + FORCEX0(i,j,bi,bj)=TAUX(i,j,bi,bj) + FORCEY0(i,j,bi,bj)=TAUY(i,j,bi,bj) + ENDDO ENDDO - ENDDO - ENDIF + ENDIF - IF ( SEAICEuseTILT ) then - DO j=1-OLy+1,sNy+OLy - DO i=1-OLx+1,sNx+OLx + IF ( SEAICEuseTILT ) THEN + DO j=1-OLy+1,sNy+OLy + DO i=1-OLx+1,sNx+OLx C-- now add in tilt - FORCEX0(i,j,bi,bj)=FORCEX0(i,j,bi,bj) - & -seaiceMassU(i,j,bi,bj)*_recip_dxC(i,j,bi,bj) - & *( phiSurf(i,j)-phiSurf(i-1,j) ) - FORCEY0(i,j,bi,bj)=FORCEY0(i,j,bi,bj) - & -seaiceMassV(i,j,bi,bj)* _recip_dyC(i,j,bi,bj) - & *( phiSurf(i,j)-phiSurf(i,j-1) ) - ENDDO - ENDDO - ENDIF + FORCEX0(i,j,bi,bj)=FORCEX0(i,j,bi,bj) + & -seaiceMassU(i,j,bi,bj)*_recip_dxC(i,j,bi,bj) + & *( phiSurf(i,j)-phiSurf(i-1,j) ) + FORCEY0(i,j,bi,bj)=FORCEY0(i,j,bi,bj) + & -seaiceMassV(i,j,bi,bj)* _recip_dyC(i,j,bi,bj) + & *( phiSurf(i,j)-phiSurf(i,j-1) ) + ENDDO + ENDDO + ENDIF - CALL SEAICE_CALC_ICE_STRENGTH( bi, bj, myTime, myIter, myThid ) + CALL SEAICE_CALC_ICE_STRENGTH( bi, bj, myTime, myIter, myThid ) + ENDDO ENDDO - ENDDO -#ifdef SEAICE_ALLOW_DYNAMICS - IF ( SEAICEuseDYNAMICS ) THEN #ifdef SEAICE_ALLOW_FREEDRIFT IF ( SEAICEuseFREEDRIFT .OR. SEAICEuseEVP & .OR. LSR_mixIniGuess.EQ.0 ) THEN @@ -388,36 +369,27 @@ SUBROUTINE SEAICE_DYNSOLVER( myTime, myIter, myThid ) # endif /* ALLOW_AUTODIFF */ #endif /* SEAICE_ALLOW_JFNK */ -C End of IF (SEAICEuseDYNAMICS ... +C End of IF (SEAICEuseDYNAMICS and DIFFERENT_MULTIPLE ... ENDIF #endif /* SEAICE_ALLOW_DYNAMICS */ -C End of IF (DIFFERENT_MULTIPLE ... - ENDIF - -#ifdef ALLOW_AUTODIFF_TAMC -CADJ STORE uice = comlev1, key=ikey_dynamics, kind=isbyte -CADJ STORE vice = comlev1, key=ikey_dynamics, kind=isbyte -CADJ STORE stressDivergenceX = comlev1, -CADJ & key=ikey_dynamics, kind=isbyte -CADJ STORE stressDivergenceY = comlev1, -CADJ & key=ikey_dynamics, kind=isbyte -CADJ STORE DWATN = comlev1, key=ikey_dynamics, kind=isbyte -#endif /* ALLOW_AUTODIFF_TAMC */ - C Update ocean surface stress IF ( SEAICEupdateOceanStress ) THEN +#ifdef ALLOW_AUTODIFF_TAMC +CADJ STORE uice, vice, DWATN = comlev1, key=ikey_dynamics, kind=isbyte +CADJ STORE stressDivergenceX = comlev1, key=ikey_dynamics, kind=isbyte +CADJ STORE stressDivergenceY = comlev1, key=ikey_dynamics, kind=isbyte +#endif /* ALLOW_AUTODIFF_TAMC */ CALL SEAICE_OCEAN_STRESS ( I TAUX, TAUY, myTime, myIter, myThid ) ENDIF -#ifdef SEAICE_ALLOW_DYNAMICS -#ifdef SEAICE_ALLOW_CLIPVELS +#if (defined SEAICE_ALLOW_DYNAMICS && defined SEAICE_ALLOW_CLIPVELS) IF ( SEAICEuseDYNAMICS .AND. SEAICE_clipVelocities) THEN -#ifdef ALLOW_AUTODIFF_TAMC +# ifdef ALLOW_AUTODIFF_TAMC CADJ STORE uice = comlev1, key=ikey_dynamics, kind=isbyte CADJ STORE vice = comlev1, key=ikey_dynamics, kind=isbyte -#endif /* ALLOW_AUTODIFF_TAMC */ +# endif /* ALLOW_AUTODIFF_TAMC */ c Put a cap on ice velocity c limit velocity to 0.40 m s-1 to avoid potential CFL violations c in open water areas (drift of zero thickness ice) @@ -434,8 +406,7 @@ SUBROUTINE SEAICE_DYNSOLVER( myTime, myIter, myThid ) ENDDO ENDDO ENDIF -#endif /* SEAICE_ALLOW_CLIPVELS */ -#endif /* SEAICE_ALLOW_DYNAMICS */ +#endif /* SEAICE_ALLOW_DYNAMICS and SEAICE_ALLOW_CLIPVELS */ #ifdef ALLOW_DIAGNOSTICS C diagnostics related to mechanics/dynamics/momentum equations @@ -498,7 +469,7 @@ SUBROUTINE SEAICE_DYNSOLVER( myTime, myIter, myThid ) C stress diagnostics C IF ( diag_SIsigma_isOn ) THEN -#ifdef SEAICE_ALLOW_EVP +# ifdef SEAICE_ALLOW_EVP C This could go directly into EVP, but to keep a better eye on it, C I would like to keep it here. IF ( SEAICEuseEVP ) THEN @@ -523,9 +494,9 @@ SUBROUTINE SEAICE_DYNSOLVER( myTime, myIter, myThid ) ENDDO ENDDO ELSE -#else +# else IF ( .TRUE. ) THEN -#endif /* SEAICE_ALLOW_EVP */ +# endif /* SEAICE_ALLOW_EVP */ CALL SEAICE_CALC_STRESS( I e11, e22, e12, press, zeta, eta, etaZ, O sig1, sig2, sig12, @@ -567,7 +538,7 @@ SUBROUTINE SEAICE_DYNSOLVER( myTime, myIter, myThid ) & + e12(i+1,j+1,bi,bj)**2 + e12(i ,j+1,bi,bj)**2 ) C shear deformation as sqrt((e11-e22)**2 + 4*e12**2); the 4 pulled into C the average - sig1(i,j) = sqrt(sigm*sigm + sigTmp) + sig1(i,j) = SQRT(sigm*sigm + sigTmp) ENDDO ENDDO CALL DIAGNOSTICS_FILL(sig1,'SIshear ',0,1,2,bi,bj,myThid) @@ -734,7 +705,6 @@ SUBROUTINE SEAICE_DYNSOLVER( myTime, myIter, myThid ) ENDDO C useDiagnostics ENDIF - #endif /* ALLOW_DIAGNOSTICS */ #endif /* SEAICE_CGRID */ diff --git a/pkg/seaice/seaice_evp.F b/pkg/seaice/seaice_evp.F index 5e043ad717..2d506703d3 100644 --- a/pkg/seaice/seaice_evp.F +++ b/pkg/seaice/seaice_evp.F @@ -98,12 +98,13 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) INTEGER i, j, bi, bj INTEGER kSrf INTEGER nEVPstep, iEVPstep +#ifndef ALLOW_AUTODIFF + INTEGER nEVPstepMax +#endif #ifdef ALLOW_AUTODIFF_TAMC C evpkey :: tape key (depends on evp iteration) C tkey :: tape key (depends on tile indices and evpkey) INTEGER evpkey, tkey -#else - INTEGER nEVPstepMax #endif _RL COSWAT @@ -201,10 +202,10 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) C SEAICE_evpAlpha = 2. * SEAICE_evpTauRelax/SEAICE_deltaTevp DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) - DO J=1-OLy,sNy+OLy - DO I=1-OLx,sNx+OLx - denom1(I,J,bi,bj) = 1. _d 0 / ( SEAICE_evpAlpha + 1. _d 0 ) - denom2(I,J,bi,bj) = 1. _d 0 / ( SEAICE_evpAlpha + ecc2 ) + DO j=1-OLy,sNy+OLy + DO i=1-OLx,sNx+OLx + denom1(i,j,bi,bj) = 1. _d 0 / ( SEAICE_evpAlpha + 1. _d 0 ) + denom2(i,j,bi,bj) = 1. _d 0 / ( SEAICE_evpAlpha + ecc2 ) ENDDO ENDDO ENDDO @@ -225,10 +226,10 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) recip_evpRevFac = recip_ecc2 DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) - DO J=1-OLy,sNy+OLy - DO I=1-OLx,sNx+OLx - denom1(I,J,bi,bj) = 1. _d 0 / SEAICE_evpAlpha - denom2(I,J,bi,bj) = denom1(i,j,bi,bj) + DO j=1-OLy,sNy+OLy + DO i=1-OLx,sNx+OLx + denom1(i,j,bi,bj) = 1. _d 0 / SEAICE_evpAlpha + denom2(i,j,bi,bj) = denom1(i,j,bi,bj) ENDDO ENDDO ENDDO @@ -242,7 +243,7 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) betaFacP1 = betaFac + evpStarFac*recip_deltaT betaFacP1U = betaFacP1 betaFacP1V = betaFacP1 -#ifndef ALLOW_AUTODIFF_TAMC +#ifndef ALLOW_AUTODIFF nEVPstepMax = nEVPstep #endif @@ -251,34 +252,34 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx C use u/vIce as work arrays: copy previous time step to u/vIceNm1 - uIceNm1(I,J,bi,bj) = uIce(I,J,bi,bj) - vIceNm1(I,J,bi,bj) = vIce(I,J,bi,bj) + uIceNm1(i,j,bi,bj) = uIce(i,j,bi,bj) + vIceNm1(i,j,bi,bj) = vIce(i,j,bi,bj) C initialise strain rates - e11 (I,J,bi,bj) = 0. _d 0 - e22 (I,J,bi,bj) = 0. _d 0 - e12 (I,J,bi,bj) = 0. _d 0 + e11 (i,j,bi,bj) = 0. _d 0 + e22 (i,j,bi,bj) = 0. _d 0 + e12 (i,j,bi,bj) = 0. _d 0 C initialise adative-EVP-specific fields - evpAlphaC(I,J,bi,bj) = SEAICE_evpAlpha - evpAlphaZ(I,J,bi,bj) = SEAICE_evpAlpha - evpBetaU (I,J,bi,bj) = SEAICE_evpBeta - evpBetaV (I,J,bi,bj) = SEAICE_evpBeta + evpAlphaC(i,j,bi,bj) = SEAICE_evpAlpha + evpAlphaZ(i,j,bi,bj) = SEAICE_evpAlpha + evpBetaU (i,j,bi,bj) = SEAICE_evpBeta + evpBetaV (i,j,bi,bj) = SEAICE_evpBeta ENDDO ENDDO C initialise fractional areas at velocity points IF ( SEAICEscaleSurfStress ) THEN - DO J=1,sNy - DO I=1,sNx - areaW(I,J,bi,bj) = - & 0.5 _d 0*(AREA(I,J,bi,bj)+AREA(I-1,J,bi,bj)) - areaS(I,J,bi,bj) = - & 0.5 _d 0*(AREA(I,J,bi,bj)+AREA(I,J-1,bi,bj)) + DO j=1,sNy + DO i=1,sNx + areaW(i,j,bi,bj) = + & 0.5 _d 0*(AREA(i,j,bi,bj)+AREA(i-1,j,bi,bj)) + areaS(i,j,bi,bj) = + & 0.5 _d 0*(AREA(i,j,bi,bj)+AREA(i,j-1,bi,bj)) ENDDO ENDDO ELSE - DO J=1,sNy - DO I=1,sNx - areaW(I,J,bi,bj) = 1. _d 0 - areaS(I,J,bi,bj) = 1. _d 0 + DO j=1,sNy + DO i=1,sNx + areaW(i,j,bi,bj) = 1. _d 0 + areaS(i,j,bi,bj) = 1. _d 0 ENDDO ENDDO ENDIF @@ -295,7 +296,7 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) DO bi=myBxLo(myThid),myBxHi(myThid) DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx - zMax (I,J,bi,bj) = _rA(I,J,bi,bj) * fac + zMax (i,j,bi,bj) = _rA(i,j,bi,bj) * fac ENDDO ENDDO ENDDO @@ -342,26 +343,26 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) IF ( printResidual ) THEN DO j=1,sNy DO i=1,sNx - sig11Pm1(I,J,bi,bj) = seaice_sigma1(I,J,bi,bj) - sig22Pm1(I,J,bi,bj) = seaice_sigma2(I,J,bi,bj) - sig12Pm1(I,J,bi,bj) = seaice_sigma12(I,J,bi,bj) - uIcePm1 (I,J,bi,bj) = uIce(i,j,bi,bj) - vIcePm1 (I,J,bi,bj) = vIce(i,j,bi,bj) + sig11Pm1(i,j,bi,bj) = seaice_sigma1(i,j,bi,bj) + sig22Pm1(i,j,bi,bj) = seaice_sigma2(i,j,bi,bj) + sig12Pm1(i,j,bi,bj) = seaice_sigma12(i,j,bi,bj) + uIcePm1 (i,j,bi,bj) = uIce(i,j,bi,bj) + vIcePm1 (i,j,bi,bj) = vIce(i,j,bi,bj) ENDDO ENDDO ENDIF #endif /* ALLOW_SEAICE_EVP_RESIDUAL */ DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx - seaice_div (I,J) = 0. _d 0 - seaice_tension(I,J) = 0. _d 0 - seaice_shear (I,J) = 0. _d 0 - pressC (I,J) = 0. _d 0 - e12Csq (I,J) = 0. _d 0 - zetaC (I,J) = 0. _d 0 - deltaZ (I,J) = 0. _d 0 - zetaZ (I,J,bi,bj) = 0. _d 0 - deltaC (I,J,bi,bj) = 0. _d 0 + seaice_div (i,j) = 0. _d 0 + seaice_tension(i,j) = 0. _d 0 + seaice_shear (i,j) = 0. _d 0 + pressC (i,j) = 0. _d 0 + e12Csq (i,j) = 0. _d 0 + zetaC (i,j) = 0. _d 0 + deltaZ (i,j) = 0. _d 0 + zetaZ (i,j,bi,bj) = 0. _d 0 + deltaC (i,j,bi,bj) = 0. _d 0 ENDDO ENDDO DO j=1-OLy,sNy+OLy @@ -377,8 +378,8 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) DO j=1-OLy+1,sNy+OLy-1 DO i=1-OLx+1,sNx+OLx-1 tmp = 0.25 * - & ( e12(I,J ,bi,bj) + e12(I+1,J ,bi,bj) - & + e12(I,J+1,bi,bj) + e12(I+1,J+1,bi,bj) ) + & ( e12(i,j ,bi,bj) + e12(i+1,j ,bi,bj) + & + e12(i,j+1,bi,bj) + e12(i+1,j+1,bi,bj) ) e12Csq(i,j) = tmp*tmp ENDDO ENDDO @@ -387,36 +388,36 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) DO i=1-OLx+1,sNx+OLx-1 C area weighted average of the squares of e12 is more accurate C (and energy conserving) according to Bouillon et al. 2013, eq (11) - e12Csq(i,j) = 0.25 _d 0 * recip_rA(I,J,bi,bj) * - & ( rAz(I ,J ,bi,bj)*e12(I ,J ,bi,bj)**2 - & + rAz(I+1,J ,bi,bj)*e12(I+1,J ,bi,bj)**2 - & + rAz(I ,J+1,bi,bj)*e12(I ,J+1,bi,bj)**2 - & + rAz(I+1,J+1,bi,bj)*e12(I+1,J+1,bi,bj)**2 ) + e12Csq(i,j) = 0.25 _d 0 * recip_rA(i,j,bi,bj) * + & ( rAz(i ,j ,bi,bj)*e12(i ,j ,bi,bj)**2 + & + rAz(i+1,j ,bi,bj)*e12(i+1,j ,bi,bj)**2 + & + rAz(i ,j+1,bi,bj)*e12(i ,j+1,bi,bj)**2 + & + rAz(i+1,j+1,bi,bj)*e12(i+1,j+1,bi,bj)**2 ) ENDDO ENDDO ENDIF DO j=0,sNy+1 DO i=0,sNx+1 - deltaSq = ep(I,J)**2 + recip_ecc2 * em(I,J)**2 - & + recip_ecc2 * 4. _d 0 * e12Csq(I,J) -#ifdef ALLOW_AUTODIFF_TAMC + deltaSq = ep(i,j)**2 + recip_ecc2 * em(i,j)**2 + & + recip_ecc2 * 4. _d 0 * e12Csq(i,j) +#ifdef ALLOW_AUTODIFF C avoid sqrt of 0 - deltaC(I,J,bi,bj) = 0. _d 0 + deltaC(i,j,bi,bj) = 0. _d 0 IF ( deltaSq .GT. 0. _d 0 ) - & deltaC(I,J,bi,bj) = SQRT(deltaSq) + & deltaC(i,j,bi,bj) = SQRT(deltaSq) #else - deltaC(I,J,bi,bj) = SQRT(deltaSq) -#endif /* ALLOW_AUTODIFF_TAMC */ + deltaC(i,j,bi,bj) = SQRT(deltaSq) +#endif /* ALLOW_AUTODIFF */ #ifdef SEAICE_DELTA_SMOOTHREG C smooth regularization (without max-function) of delta for C better differentiability CML deltaCreg = SQRT(deltaSq + deltaMinSq) - deltaCreg = deltaC(I,J,bi,bj) + SEAICE_deltaMin + deltaCreg = deltaC(i,j,bi,bj) + SEAICE_deltaMin #else - deltaCreg = MAX(deltaC(I,J,bi,bj),SEAICE_deltaMin) + deltaCreg = MAX(deltaC(i,j,bi,bj),SEAICE_deltaMin) #endif /* SEAICE_DELTA_SMOOTHREG */ - zetaC(I,J) = HALF*( press0(I,J,bi,bj) - & * ( 1. _d 0 + tensileStrFac(I,J,bi,bj) ) + zetaC(i,j) = HALF*( press0(i,j,bi,bj) + & * ( 1. _d 0 + tensileStrFac(i,j,bi,bj) ) & )/deltaCreg ENDDO ENDDO @@ -425,27 +426,27 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) DO i=0,sNx+1 CML I do not like these hidden regularisations, why do we need to CML divide by mass? - evpAlphaC(I,J,bi,bj) = SQRT(zetaC(I,J) - & * EVPcFac / MAX(seaiceMassC(I,J,bi,bj), 1.D-04) - & * recip_rA(I,J,bi,bj) ) * HEFFM(I,J,bi,bj) - evpAlphaC(I,J,bi,bj) = - & MAX(evpAlphaC(I,J,bi,bj),SEAICEaEVPalphaMin) + evpAlphaC(i,j,bi,bj) = SQRT(zetaC(i,j) + & * EVPcFac / MAX(seaiceMassC(i,j,bi,bj), 1.D-04) + & * recip_rA(i,j,bi,bj) ) * HEFFM(i,j,bi,bj) + evpAlphaC(i,j,bi,bj) = + & MAX(evpAlphaC(i,j,bi,bj),SEAICEaEVPalphaMin) ENDDO ENDDO ENDIF C compute zetaZ and deltaZ by simple averaging (following C Bouillon et al., 2013) - DO J=1,sNy+1 - DO I=1,sNx+1 - sumNorm = HEFFM(I,J, bi,bj)+HEFFM(I-1,J, bi,bj) - & + HEFFM(I,J-1,bi,bj)+HEFFM(I-1,J-1,bi,bj) + DO j=1,sNy+1 + DO i=1,sNx+1 + sumNorm = HEFFM(i,j, bi,bj)+HEFFM(i-1,j, bi,bj) + & + HEFFM(i,j-1,bi,bj)+HEFFM(i-1,j-1,bi,bj) IF ( sumNorm.GT.0. _d 0 ) sumNorm = 1. _d 0 / sumNorm - zetaZ(I,J,bi,bj) = sumNorm * - & ( zetaC(I, J) + zetaC(I-1,J-1) - & + zetaC(I-1,J) + zetaC(I, J-1) ) - deltaZ(I,J) = sumNorm * - & ( deltaC(I, J,bi,bj) + deltaC(I-1,J-1,bi,bj) - & + deltaC(I-1,J,bi,bj) + deltaC(I, J-1,bi,bj) ) + zetaZ(i,j,bi,bj) = sumNorm * + & ( zetaC(i, j) + zetaC(i-1,j-1) + & + zetaC(i-1,j) + zetaC(i, j-1) ) + deltaZ(i,j) = sumNorm * + & ( deltaC(i, j,bi,bj) + deltaC(i-1,j-1,bi,bj) + & + deltaC(i-1,j,bi,bj) + deltaC(i, j-1,bi,bj) ) ENDDO ENDDO #ifdef SEAICE_ALLOW_CLIPZETA @@ -456,30 +457,30 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) C regularize zeta if necessary DO j=0,sNy+1 DO i=0,sNx+1 - zetaC(I,J) = MAX(zMin(I,J,bi,bj),MIN(zMax(I,J,bi,bj) - & ,zetaC(I,J))) + zetaC(i,j) = MAX(zMin(i,j,bi,bj),MIN(zMax(i,j,bi,bj) + & ,zetaC(i,j))) CML zetaC(I,J) = zetaC(I,J)*HEFFM(I,J,bi,bj) C C zMin, zMax are defined at C-points, make sure that they are not C masked by boundaries/land points zMaxZ = MAX( - & MAX(zMax(I, J,bi,bj),zMax(I, J-1,bi,bj)), - & MAX(zMax(I-1,J,bi,bj),zMax(I-1,J-1,bi,bj)) ) + & MAX(zMax(i, j,bi,bj),zMax(i, j-1,bi,bj)), + & MAX(zMax(i-1,j,bi,bj),zMax(i-1,j-1,bi,bj)) ) zMinZ = MAX( - & MAX(zMin(I, J,bi,bj),zMin(I, J-1,bi,bj)), - & MAX(zMin(I-1,J,bi,bj),zMin(I-1,J-1,bi,bj)) ) - zetaZ(I,J,bi,bj) = MAX(zMinZ,MIN(zMaxZ,zetaZ(I,J,bi,bj))) + & MAX(zMin(i, j,bi,bj),zMin(i, j-1,bi,bj)), + & MAX(zMin(i-1,j,bi,bj),zMin(i-1,j-1,bi,bj)) ) + zetaZ(i,j,bi,bj) = MAX(zMinZ,MIN(zMaxZ,zetaZ(i,j,bi,bj))) ENDDO ENDDO #endif /* SEAICE_ALLOW_CLIPZETA */ C recompute pressure DO j=0,sNy+1 DO i=0,sNx+1 - pressC(I,J) = - & ( press0(I,J,bi,bj) * ( 1. _d 0 - SEAICEpressReplFac ) - & + TWO*zetaC(I,J)*deltaC(I,J,bi,bj)*SEAICEpressReplFac - & /(1. _d 0 + tensileStrFac(I,J,bi,bj)) - & ) * (1. _d 0 - tensileStrFac(I,J,bi,bj)) + pressC(i,j) = + & ( press0(i,j,bi,bj) * ( 1. _d 0 - SEAICEpressReplFac ) + & + TWO*zetaC(i,j)*deltaC(i,j,bi,bj)*SEAICEpressReplFac + & /(1. _d 0 + tensileStrFac(i,j,bi,bj)) + & ) * (1. _d 0 - tensileStrFac(i,j,bi,bj)) ENDDO ENDDO #ifdef ALLOW_DIAGNOSTICS @@ -487,9 +488,9 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) C save eta, zeta, and pressure for diagnostics DO j=1,sNy DO i=1,sNx - press(I,J,bi,bj) = pressC(I,J) - zeta (I,J,bi,bj) = zetaC(I,J) - eta (I,J,bi,bj) = zetaC(I,J)*recip_ecc2 + press(i,j,bi,bj) = pressC(i,j) + zeta (i,j,bi,bj) = zetaC(i,j) + eta (i,j,bi,bj) = zetaC(i,j)*recip_ecc2 ENDDO ENDDO ENDIF @@ -503,19 +504,19 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) IF ( SEAICEuseTEM ) THEN DO j=0,sNy DO i=0,sNx - etaDenC = em(I,J)**2 + 4. _d 0 * e12Csq(I,J) + etaDenC = em(i,j)**2 + 4. _d 0 * e12Csq(i,j) etaDenC = SQRT(MAX(deltaMinSq,etaDenC)) - zetaMaxC = ecc2*zetaC(I,J) - & *(deltaC(I,J,bi,bj)-ep(I,J))/etaDenC + zetaMaxC = ecc2*zetaC(i,j) + & *(deltaC(i,j,bi,bj)-ep(i,j))/etaDenC #ifdef ALLOW_DIAGNOSTICS C save new eta for diagnostics - eta(I,J,bi,bj) = MIN(zetaC(I,J),zetaMaxC)*recip_ecc2 + eta(i,j,bi,bj) = MIN(zetaC(i,j),zetaMaxC)*recip_ecc2 #endif /* ALLOW_DIAGNOSTICS */ - seaice_div (I,J) = - & ( 2. _d 0 *zetaC(I,J)*ep(I,J) - pressC(I,J) - & ) * HEFFM(I,J,bi,bj) - seaice_tension(I,J) = 2. _d 0*MIN(zetaC(I,J),zetaMaxC) - & * em(I,J) * HEFFM(I,J,bi,bj) + seaice_div (i,j) = + & ( 2. _d 0 *zetaC(i,j)*ep(i,j) - pressC(i,j) + & ) * HEFFM(i,j,bi,bj) + seaice_tension(i,j) = 2. _d 0*MIN(zetaC(i,j),zetaMaxC) + & * em(i,j) * HEFFM(i,j,bi,bj) ENDDO ENDDO DO j=1,sNy+1 @@ -529,39 +530,39 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) C Averaging the squares gives more accurate viscous-plastic behavior C than squaring the averages etaDenZ = - & sumNorm * recip_rAz(I,J,bi,bj) * - & ( _rA(I ,J ,bi,bj) * em(I, J )**2 - & + _rA(I-1,J-1,bi,bj) * em(I-1,J-1)**2 - & + _rA(I-1,J ,bi,bj) * em(I-1,J )**2 - & + _rA(I ,J-1,bi,bj) * em(I, J-1)**2 ) - & + 4. _d 0*e12(I,J,bi,bj)**2 + & sumNorm * recip_rAz(i,j,bi,bj) * + & ( _rA(i ,j ,bi,bj) * em(i, j )**2 + & + _rA(i-1,j-1,bi,bj) * em(i-1,j-1)**2 + & + _rA(i-1,j ,bi,bj) * em(i-1,j )**2 + & + _rA(i ,j-1,bi,bj) * em(i, j-1)**2 ) + & + 4. _d 0*e12(i,j,bi,bj)**2 etaDenZ = SQRT(MAX(deltaMinSq,etaDenZ)) - zetaMaxZ = ecc2*zetaZ(I,J,bi,bj) * ( deltaZ(I,J) - & - sumNorm * ( ep(I,J ) + ep(I-1,J ) - & + ep(I,J-1) + ep(I-1,J-1) ) + zetaMaxZ = ecc2*zetaZ(i,j,bi,bj) * ( deltaZ(i,j) + & - sumNorm * ( ep(i,j ) + ep(i-1,j ) + & + ep(i,j-1) + ep(i-1,j-1) ) & )/etaDenZ - seaice_shear (I,J) = - & 2. _d 0*MIN(zetaZ(I,J,bi,bj),zetaMaxZ) - & * 2. _d 0*e12(I,J,bi,bj) + seaice_shear (i,j) = + & 2. _d 0*MIN(zetaZ(i,j,bi,bj),zetaMaxZ) + & * 2. _d 0*e12(i,j,bi,bj) ENDDO ENDDO ELSE #else IF (.TRUE. ) THEN #endif /* SEAICE_ALLOW_TEM */ - DO J=0,sNy - DO I=0,sNx - seaice_div (I,J) = - & ( 2. _d 0 *zetaC(I,J)*ep(I,J) - pressC(I,J) - & ) * HEFFM(I,J,bi,bj) - seaice_tension(I,J) = 2. _d 0*zetaC(I,J) - & * em(I,J) * HEFFM(I,J,bi,bj) + DO j=0,sNy + DO i=0,sNx + seaice_div (i,j) = + & ( 2. _d 0 *zetaC(i,j)*ep(i,j) - pressC(i,j) + & ) * HEFFM(i,j,bi,bj) + seaice_tension(i,j) = 2. _d 0*zetaC(i,j) + & * em(i,j) * HEFFM(i,j,bi,bj) ENDDO ENDDO - DO J=1,sNy+1 - DO I=1,sNx+1 - seaice_shear (I,J) = - & 2. _d 0*zetaZ(I,J,bi,bj)*e12(I,J,bi,bj) + DO j=1,sNy+1 + DO i=1,sNx+1 + seaice_shear (i,j) = + & 2. _d 0*zetaZ(i,j,bi,bj)*e12(i,j,bi,bj) ENDDO ENDDO ENDIF @@ -575,40 +576,40 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) IF ( useAdaptiveEVP ) THEN DO j=0,sNy DO i=0,sNx - denom1(I,J,bi,bj) = 1. _d 0 / evpAlphaC(I,J,bi,bj) - denom2(I,J,bi,bj) = denom1(I,J,bi,bj) + denom1(i,j,bi,bj) = 1. _d 0 / evpAlphaC(i,j,bi,bj) + denom2(i,j,bi,bj) = denom1(i,j,bi,bj) ENDDO ENDDO ENDIF DO j=0,sNy DO i=0,sNx C sigma1 and sigma2 are computed on C points - seaice_sigma1 (I,J,bi,bj) = ( seaice_sigma1 (I,J,bi,bj) - & * ( evpAlphaC(I,J,bi,bj) - evpRevFac ) - & + seaice_div(I,J) - & ) * denom1(I,J,bi,bj) - & *HEFFM(I,J,bi,bj) - seaice_sigma2 (I,J,bi,bj) = ( seaice_sigma2 (I,J,bi,bj) - & * ( evpAlphaC(I,J,bi,bj) - evpRevFac ) - & + seaice_tension(I,J)*recip_evpRevFac - & ) * denom2(I,J,bi,bj) - & *HEFFM(I,J,bi,bj) + seaice_sigma1 (i,j,bi,bj) = ( seaice_sigma1 (i,j,bi,bj) + & * ( evpAlphaC(i,j,bi,bj) - evpRevFac ) + & + seaice_div(i,j) + & ) * denom1(i,j,bi,bj) + & *HEFFM(i,j,bi,bj) + seaice_sigma2 (i,j,bi,bj) = ( seaice_sigma2 (i,j,bi,bj) + & * ( evpAlphaC(i,j,bi,bj) - evpRevFac ) + & + seaice_tension(i,j)*recip_evpRevFac + & ) * denom2(i,j,bi,bj) + & *HEFFM(i,j,bi,bj) #ifdef SEAICE_EVP_ELIMINATE_UNDERFLOWS C Code to avoid very small numbers that can degrade performance. C Many compilers can handle this more efficiently with the help of C a flag (copied from CICE after correspondence with Elizabeth Hunke) - seaice_sigma1(I,J,bi,bj) = SIGN(MAX( - & ABS( seaice_sigma1(I,J,bi,bj) ), SEAICE_EPS ), - & seaice_sigma1(I,J,bi,bj) ) - seaice_sigma2(I,J,bi,bj) = SIGN(MAX( - & ABS( seaice_sigma2(I,J,bi,bj) ), SEAICE_EPS ), - & seaice_sigma2(I,J,bi,bj) ) + seaice_sigma1(i,j,bi,bj) = SIGN(MAX( + & ABS( seaice_sigma1(i,j,bi,bj) ), SEAICE_EPS ), + & seaice_sigma1(i,j,bi,bj) ) + seaice_sigma2(i,j,bi,bj) = SIGN(MAX( + & ABS( seaice_sigma2(i,j,bi,bj) ), SEAICE_EPS ), + & seaice_sigma2(i,j,bi,bj) ) #endif /* SEAICE_EVP_ELIMINATE_UNDERFLOWS */ C recover sigma11 and sigma22 - sig11(I,J) = 0.5 _d 0 * - & ( seaice_sigma1(I,J,bi,bj)+seaice_sigma2(I,J,bi,bj) ) - sig22(I,J) = 0.5 _d 0 * - & ( seaice_sigma1(I,J,bi,bj)-seaice_sigma2(I,J,bi,bj) ) + sig11(i,j) = 0.5 _d 0 * + & ( seaice_sigma1(i,j,bi,bj)+seaice_sigma2(i,j,bi,bj) ) + sig22(i,j) = 0.5 _d 0 * + & ( seaice_sigma1(i,j,bi,bj)-seaice_sigma2(i,j,bi,bj) ) ENDDO ENDDO @@ -620,43 +621,43 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) IF ( useAdaptiveEVP ) THEN DO j=1,sNy+1 DO i=1,sNx+1 - evpAlphaZ(I,J,bi,bj) = 0.25 _d 0 * - & ( evpAlphaC(I, J,bi,bj)+evpAlphaC(I-1,J-1,bi,bj) - & + evpAlphaC(I-1,J,bi,bj)+evpAlphaC(I, J-1,bi,bj) ) - denom2(I,J,bi,bj) = 1. _d 0 / evpAlphaZ(I,J,bi,bj) + evpAlphaZ(i,j,bi,bj) = 0.25 _d 0 * + & ( evpAlphaC(i, j,bi,bj)+evpAlphaC(i-1,j-1,bi,bj) + & + evpAlphaC(i-1,j,bi,bj)+evpAlphaC(i, j-1,bi,bj) ) + denom2(i,j,bi,bj) = 1. _d 0 / evpAlphaZ(i,j,bi,bj) ENDDO ENDDO ENDIF DO j=1,sNy+1 DO i=1,sNx+1 - seaice_sigma12(I,J,bi,bj) = ( seaice_sigma12(I,J,bi,bj) - & * ( evpAlphaZ(I,J,bi,bj) - evpRevFac ) - & + seaice_shear(I,J)*recip_evpRevFac - & ) * denom2(I,J,bi,bj) + seaice_sigma12(i,j,bi,bj) = ( seaice_sigma12(i,j,bi,bj) + & * ( evpAlphaZ(i,j,bi,bj) - evpRevFac ) + & + seaice_shear(i,j)*recip_evpRevFac + & ) * denom2(i,j,bi,bj) #ifdef SEAICE_EVP_ELIMINATE_UNDERFLOWS - seaice_sigma12(I,J,bi,bj) = SIGN(MAX( - & ABS( seaice_sigma12(I,J,bi,bj) ), SEAICE_EPS ), - & seaice_sigma12(I,J,bi,bj) ) + seaice_sigma12(i,j,bi,bj) = SIGN(MAX( + & ABS( seaice_sigma12(i,j,bi,bj) ), SEAICE_EPS ), + & seaice_sigma12(i,j,bi,bj) ) #endif /* SEAICE_EVP_ELIMINATE_UNDERFLOWS */ ENDDO ENDDO C C compute divergence of stress tensor C - DO J=1,sNy - DO I=1,sNx - stressDivergenceX(I,J,bi,bj) = - & ( sig11(I ,J ) * _dyF(I ,J,bi,bj) - & - sig11(I-1,J ) * _dyF(I-1,J,bi,bj) - & + seaice_sigma12(I,J+1,bi,bj) * _dxV(I,J+1,bi,bj) - & - seaice_sigma12(I,J ,bi,bj) * _dxV(I,J ,bi,bj) - & ) * recip_rAw(I,J,bi,bj) - stressDivergenceY(I,J,bi,bj) = - & ( sig22(I,J ) * _dxF(I,J ,bi,bj) - & - sig22(I,J-1) * _dxF(I,J-1,bi,bj) - & + seaice_sigma12(I+1,J,bi,bj) * _dyU(I+1,J,bi,bj) - & - seaice_sigma12(I ,J,bi,bj) * _dyU(I ,J,bi,bj) - & ) * recip_rAs(I,J,bi,bj) + DO j=1,sNy + DO i=1,sNx + stressDivergenceX(i,j,bi,bj) = + & ( sig11(i ,j ) * _dyF(i ,j,bi,bj) + & - sig11(i-1,j ) * _dyF(i-1,j,bi,bj) + & + seaice_sigma12(i,j+1,bi,bj) * _dxV(i,j+1,bi,bj) + & - seaice_sigma12(i,j ,bi,bj) * _dxV(i,j ,bi,bj) + & ) * recip_rAw(i,j,bi,bj) + stressDivergenceY(i,j,bi,bj) = + & ( sig22(i,j ) * _dxF(i,j ,bi,bj) + & - sig22(i,j-1) * _dxF(i,j-1,bi,bj) + & + seaice_sigma12(i+1,j,bi,bj) * _dyU(i+1,j,bi,bj) + & - seaice_sigma12(i ,j,bi,bj) * _dyU(i ,j,bi,bj) + & ) * recip_rAs(i,j,bi,bj) ENDDO ENDDO ENDDO @@ -676,11 +677,11 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) sig12Pm1(i,j,bi,bj) = & seaice_sigma12(i,j,bi,bj)-sig12Pm1(i,j,bi,bj) sig11Pm1(i,j,bi,bj) = - & evpAlphaC(I,J,bi,bj) * sig11Pm1(i,j,bi,bj) + & evpAlphaC(i,j,bi,bj) * sig11Pm1(i,j,bi,bj) sig22Pm1(i,j,bi,bj) = - & evpAlphaC(I,J,bi,bj) * sig22Pm1(i,j,bi,bj) + & evpAlphaC(i,j,bi,bj) * sig22Pm1(i,j,bi,bj) sig12Pm1(i,j,bi,bj) = - & evpAlphaZ(I,J,bi,bj) * sig12Pm1(i,j,bi,bj) + & evpAlphaZ(i,j,bi,bj) * sig12Pm1(i,j,bi,bj) ENDDO ENDDO IF ( .NOT. SEAICEscaleSurfStress ) THEN @@ -744,8 +745,8 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx C over open water, all terms that contain sea ice mass drop out and C the balance is determined by the atmosphere-ice and ice-ocean stress; C the staggering of uIce and vIce can cause stripes in the open ocean @@ -754,8 +755,8 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) C over open ocean, u/vIce do not advect anything, so that the associated C error is small and most likely only confined to the ice edge but may C propagate into the ice covered regions. - locMaskU = seaiceMassU(I,J,bi,bj) - locMaskV = seaiceMassV(I,J,bi,bj) + locMaskU = seaiceMassU(i,j,bi,bj) + locMaskV = seaiceMassV(i,j,bi,bj) IF ( locMaskU .NE. 0. _d 0 ) locMaskU = 1. _d 0 IF ( locMaskV .NE. 0. _d 0 ) locMaskV = 1. _d 0 C to recover old results replace the above lines with the line below @@ -763,49 +764,49 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) C locMaskV = 1. _d 0 C set up anti symmetric drag force and add in ice ocean stress C ( remember to average to correct velocity points ) - FORCEX(I,J,bi,bj)=FORCEX0(I,J,bi,bj)+ - & ( 0.5 _d 0 * ( DWATN(I,J,bi,bj)+DWATN(I-1,J,bi,bj) ) * - & COSWAT * uVel(I,J,kSrf,bi,bj) - & - SIGN(SINWAT, _fCori(I,J,bi,bj))* 0.5 _d 0 * - & ( DWATN(I ,J,bi,bj) * 0.5 _d 0 * - & (vVel(I ,J ,kSrf,bi,bj)-vIce(I ,J ,bi,bj) - & +vVel(I ,J+1,kSrf,bi,bj)-vIce(I ,J+1,bi,bj)) - & + DWATN(I-1,J,bi,bj) * 0.5 _d 0 * - & (vVel(I-1,J ,kSrf,bi,bj)-vIce(I-1,J ,bi,bj) - & +vVel(I-1,J+1,kSrf,bi,bj)-vIce(I-1,J+1,bi,bj)) - & )*locMaskU ) * areaW(I,J,bi,bj) - FORCEY(I,J,bi,bj)=FORCEY0(I,J,bi,bj)+ - & ( 0.5 _d 0 * ( DWATN(I,J,bi,bj)+DWATN(I,J-1,bi,bj) ) * - & COSWAT * vVel(I,J,kSrf,bi,bj) - & + SIGN(SINWAT, _fCori(I,J,bi,bj)) * 0.5 _d 0 * - & ( DWATN(I,J ,bi,bj) * 0.5 _d 0 * - & (uVel(I ,J ,kSrf,bi,bj)-uIce(I ,J ,bi,bj) - & +uVel(I+1,J ,kSrf,bi,bj)-uIce(I+1,J ,bi,bj)) - & + DWATN(I,J-1,bi,bj) * 0.5 _d 0 * - & (uVel(I ,J-1,kSrf,bi,bj)-uIce(I ,J-1,bi,bj) - & +uVel(I+1,J-1,kSrf,bi,bj)-uIce(I+1,J-1,bi,bj)) - & )*locMaskV ) * areaS(I,J,bi,bj) + FORCEX(i,j,bi,bj)=FORCEX0(i,j,bi,bj)+ + & ( 0.5 _d 0 * ( DWATN(i,j,bi,bj)+DWATN(i-1,j,bi,bj) ) * + & COSWAT * uVel(i,j,kSrf,bi,bj) + & - SIGN(SINWAT, _fCori(i,j,bi,bj))* 0.5 _d 0 * + & ( DWATN(i ,j,bi,bj) * 0.5 _d 0 * + & (vVel(i ,j ,kSrf,bi,bj)-vIce(i ,j ,bi,bj) + & +vVel(i ,j+1,kSrf,bi,bj)-vIce(i ,j+1,bi,bj)) + & + DWATN(i-1,j,bi,bj) * 0.5 _d 0 * + & (vVel(i-1,j ,kSrf,bi,bj)-vIce(i-1,j ,bi,bj) + & +vVel(i-1,j+1,kSrf,bi,bj)-vIce(i-1,j+1,bi,bj)) + & )*locMaskU ) * areaW(i,j,bi,bj) + FORCEY(i,j,bi,bj)=FORCEY0(i,j,bi,bj)+ + & ( 0.5 _d 0 * ( DWATN(i,j,bi,bj)+DWATN(i,j-1,bi,bj) ) * + & COSWAT * vVel(i,j,kSrf,bi,bj) + & + SIGN(SINWAT, _fCori(i,j,bi,bj)) * 0.5 _d 0 * + & ( DWATN(i,j ,bi,bj) * 0.5 _d 0 * + & (uVel(i ,j ,kSrf,bi,bj)-uIce(i ,j ,bi,bj) + & +uVel(i+1,j ,kSrf,bi,bj)-uIce(i+1,j ,bi,bj)) + & + DWATN(i,j-1,bi,bj) * 0.5 _d 0 * + & (uVel(i ,j-1,kSrf,bi,bj)-uIce(i ,j-1,bi,bj) + & +uVel(i+1,j-1,kSrf,bi,bj)-uIce(i+1,j-1,bi,bj)) + & )*locMaskV ) * areaS(i,j,bi,bj) C coriols terms - FORCEX(I,J,bi,bj)=FORCEX(I,J,bi,bj) + 0.5 _d 0*( - & seaiceMassC(I ,J,bi,bj) * _fCori(I ,J,bi,bj) - & * 0.5 _d 0*( vIce(I ,J,bi,bj)+vIce(I ,J+1,bi,bj) ) - & + seaiceMassC(I-1,J,bi,bj) * _fCori(I-1,J,bi,bj) - & * 0.5 _d 0*( vIce(I-1,J,bi,bj)+vIce(I-1,J+1,bi,bj) ) + FORCEX(i,j,bi,bj)=FORCEX(i,j,bi,bj) + 0.5 _d 0*( + & seaiceMassC(i ,j,bi,bj) * _fCori(i ,j,bi,bj) + & * 0.5 _d 0*( vIce(i ,j,bi,bj)+vIce(i ,j+1,bi,bj) ) + & + seaiceMassC(i-1,j,bi,bj) * _fCori(i-1,j,bi,bj) + & * 0.5 _d 0*( vIce(i-1,j,bi,bj)+vIce(i-1,j+1,bi,bj) ) & ) - FORCEY(I,J,bi,bj)=FORCEY(I,J,bi,bj) - 0.5 _d 0*( - & seaiceMassC(I,J ,bi,bj) * _fCori(I,J ,bi,bj) - & * 0.5 _d 0*( uIce(I,J ,bi,bj)+uIce(I+1, J,bi,bj) ) - & + seaiceMassC(I,J-1,bi,bj) * _fCori(I,J-1,bi,bj) - & * 0.5 _d 0*( uIce(I,J-1,bi,bj)+uIce(I+1,J-1,bi,bj) ) + FORCEY(i,j,bi,bj)=FORCEY(i,j,bi,bj) - 0.5 _d 0*( + & seaiceMassC(i,j ,bi,bj) * _fCori(i,j ,bi,bj) + & * 0.5 _d 0*( uIce(i,j ,bi,bj)+uIce(i+1, j,bi,bj) ) + & + seaiceMassC(i,j-1,bi,bj) * _fCori(i,j-1,bi,bj) + & * 0.5 _d 0*( uIce(i,j-1,bi,bj)+uIce(i+1,j-1,bi,bj) ) & ) ENDDO ENDDO #ifdef SEAICE_ALLOW_MOM_ADVECTION IF ( SEAICEmomAdvection ) THEN - DO J=1-OLy,sNy+OLy - DO I=1-OLx,sNx+OLx - gUmom(I,J) = 0. _d 0 - gVmom(I,J) = 0. _d 0 + DO j=1-OLy,sNy+OLy + DO i=1-OLx,sNx+OLx + gUmom(i,j) = 0. _d 0 + gVmom(i,j) = 0. _d 0 ENDDO ENDDO CALL SEAICE_MOM_ADVECTION( @@ -813,10 +814,10 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) I uIce, vIce, O gUmom, gVmom, I myTime, myIter, myThid ) - DO J=1,sNy - DO I=1,sNx - FORCEX(I,J,bi,bj) = FORCEX(I,J,bi,bj) + gUmom(I,J) - FORCEY(I,J,bi,bj) = FORCEY(I,J,bi,bj) + gVmom(I,J) + DO j=1,sNy + DO i=1,sNx + FORCEX(i,j,bi,bj) = FORCEX(i,j,bi,bj) + gUmom(i,j) + FORCEY(i,j,bi,bj) = FORCEY(i,j,bi,bj) + gVmom(i,j) ENDDO ENDDO ENDIF @@ -825,52 +826,52 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) C step momentum equations with ice-ocean stress term treated implicitly C IF ( useAdaptiveEVP ) THEN - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx C compute and adjust parameters that are constant otherwise - evpBetaU(I,J,bi,bj) = 0.5 _d 0*(evpAlphaC(I-1,J,bi,bj) - & +evpAlphaC(I, J,bi,bj)) - evpBetaV(I,J,bi,bj) = 0.5 _d 0*(evpAlphaC(I,J-1,bi,bj) - & +evpAlphaC(I,J, bi,bj)) + evpBetaU(i,j,bi,bj) = 0.5 _d 0*(evpAlphaC(i-1,j,bi,bj) + & +evpAlphaC(i, j,bi,bj)) + evpBetaV(i,j,bi,bj) = 0.5 _d 0*(evpAlphaC(i,j-1,bi,bj) + & +evpAlphaC(i,j, bi,bj)) ENDDO ENDDO ENDIF - DO J=1,sNy - DO I=1,sNx - betaFacU = evpBetaU(I,J,bi,bj)*recip_deltaT - betaFacV = evpBetaV(I,J,bi,bj)*recip_deltaT + DO j=1,sNy + DO i=1,sNx + betaFacU = evpBetaU(i,j,bi,bj)*recip_deltaT + betaFacV = evpBetaV(i,j,bi,bj)*recip_deltaT tmp = evpStarFac*recip_deltaT betaFacP1V = betaFacV + tmp betaFacP1U = betaFacU + tmp - denomU = seaiceMassU(I,J,bi,bj)*betaFacP1U - & + 0.5 _d 0*( DWATN(I,J,bi,bj) + DWATN(I-1,J,bi,bj) ) - & * COSWAT * areaW(I,J,bi,bj) - denomV = seaiceMassV(I,J,bi,bj)*betaFacP1V - & + 0.5 _d 0*( DWATN(I,J,bi,bj) + DWATN(I,J-1,bi,bj) ) - & * COSWAT * areaS(I,J,bi,bj) + denomU = seaiceMassU(i,j,bi,bj)*betaFacP1U + & + 0.5 _d 0*( DWATN(i,j,bi,bj) + DWATN(i-1,j,bi,bj) ) + & * COSWAT * areaW(i,j,bi,bj) + denomV = seaiceMassV(i,j,bi,bj)*betaFacP1V + & + 0.5 _d 0*( DWATN(i,j,bi,bj) + DWATN(i,j-1,bi,bj) ) + & * COSWAT * areaS(i,j,bi,bj) #ifdef SEAICE_ALLOW_BOTTOMDRAG - denomU = denomU + areaW(I,J,bi,bj) - & * 0.5 _d 0*( CbotC(I,J,bi,bj) + CbotC(I-1,J,bi,bj) ) - denomV = denomV + areaS(I,J,bi,bj) - & * 0.5 _d 0*( CbotC(I,J,bi,bj) + CbotC(I,J-1,bi,bj) ) + denomU = denomU + areaW(i,j,bi,bj) + & * 0.5 _d 0*( CbotC(i,j,bi,bj) + CbotC(i-1,j,bi,bj) ) + denomV = denomV + areaS(i,j,bi,bj) + & * 0.5 _d 0*( CbotC(i,j,bi,bj) + CbotC(i,j-1,bi,bj) ) #endif /* SEAICE_ALLOW_BOTTOMDRAG */ IF ( denomU .EQ. 0. _d 0 ) denomU = 1. _d 0 IF ( denomV .EQ. 0. _d 0 ) denomV = 1. _d 0 - uIce(I,J,bi,bj) = seaiceMaskU(I,J,bi,bj) * - & ( seaiceMassU(I,J,bi,bj)*betaFacU - & * uIce(I,J,bi,bj) - & + seaiceMassU(I,J,bi,bj)*recip_deltaT*evpStarFac - & * uIceNm1(I,J,bi,bj) - & + FORCEX(I,J,bi,bj) - & + stressDivergenceX(I,J,bi,bj) ) / denomU - vIce(I,J,bi,bj) = seaiceMaskV(I,J,bi,bj) * - & ( seaiceMassV(I,J,bi,bj)*betaFacV - & * vIce(I,J,bi,bj) - & + seaiceMassV(I,J,bi,bj)*recip_deltaT*evpStarFac - & * vIceNm1(I,J,bi,bj) - & + FORCEY(I,J,bi,bj) - & + stressDivergenceY(I,J,bi,bj) ) / denomV + uIce(i,j,bi,bj) = seaiceMaskU(i,j,bi,bj) * + & ( seaiceMassU(i,j,bi,bj)*betaFacU + & * uIce(i,j,bi,bj) + & + seaiceMassU(i,j,bi,bj)*recip_deltaT*evpStarFac + & * uIceNm1(i,j,bi,bj) + & + FORCEX(i,j,bi,bj) + & + stressDivergenceX(i,j,bi,bj) ) / denomU + vIce(i,j,bi,bj) = seaiceMaskV(i,j,bi,bj) * + & ( seaiceMassV(i,j,bi,bj)*betaFacV + & * vIce(i,j,bi,bj) + & + seaiceMassV(i,j,bi,bj)*recip_deltaT*evpStarFac + & * vIceNm1(i,j,bi,bj) + & + FORCEY(i,j,bi,bj) + & + stressDivergenceY(i,j,bi,bj) ) / denomV C-- to change results of lab_sea.hb87 test exp. (only preserve 2 digits for cg2d) c uIce(i,j,bi,bj) = uIceNm1(i,j,bi,bj) c & +( uIce(i,j,bi,bj) - uIceNm1(i,j,bi,bj) ) @@ -905,14 +906,14 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) resTile(bi,bj) = 0. _d 0 - DO J=1,sNy - DO I=1,sNx - uIcePm1(I,J,bi,bj) = seaiceMaskU(I,J,bi,bj) * - & ( uIce(I,J,bi,bj)-uIcePm1(i,j,bi,bj) ) - & * evpBetaU(I,J,bi,bj) - vIcePm1(I,J,bi,bj) = seaiceMaskV(I,J,bi,bj) * - & ( vIce(I,J,bi,bj)-vIcePm1(i,j,bi,bj) ) - & * evpBetaV(I,J,bi,bj) + DO j=1,sNy + DO i=1,sNx + uIcePm1(i,j,bi,bj) = seaiceMaskU(i,j,bi,bj) * + & ( uIce(i,j,bi,bj)-uIcePm1(i,j,bi,bj) ) + & * evpBetaU(i,j,bi,bj) + vIcePm1(i,j,bi,bj) = seaiceMaskV(i,j,bi,bj) * + & ( vIce(i,j,bi,bj)-vIcePm1(i,j,bi,bj) ) + & * evpBetaV(i,j,bi,bj) ENDDO ENDDO IF ( .NOT. SEAICEscaleSurfStress ) THEN @@ -920,16 +921,16 @@ SUBROUTINE SEAICE_EVP( myTime, myIter, myThid ) DO j=1,sNy DO i=1,sNx resTile(bi,bj) = resTile(bi,bj) + AREA(i,j,bi,bj) * - & ( uIcePm1(I,J,bi,bj)*uIcePm1(I,J,bi,bj) - & + vIcePm1(I,J,bi,bj)*vIcePm1(I,J,bi,bj) ) + & ( uIcePm1(i,j,bi,bj)*uIcePm1(i,j,bi,bj) + & + vIcePm1(i,j,bi,bj)*vIcePm1(i,j,bi,bj) ) ENDDO ENDDO ELSE DO j=1,sNy DO i=1,sNx resTile(bi,bj) = resTile(bi,bj) - & + uIcePm1(I,J,bi,bj)*uIcePm1(I,J,bi,bj) - & + vIcePm1(I,J,bi,bj)*vIcePm1(I,J,bi,bj) + & + uIcePm1(i,j,bi,bj)*uIcePm1(i,j,bi,bj) + & + vIcePm1(i,j,bi,bj)*vIcePm1(i,j,bi,bj) ENDDO ENDDO ENDIF diff --git a/pkg/seaice/seaice_get_dynforcing.F b/pkg/seaice/seaice_get_dynforcing.F index a648cbd018..0c149e20ec 100644 --- a/pkg/seaice/seaice_get_dynforcing.F +++ b/pkg/seaice/seaice_get_dynforcing.F @@ -156,7 +156,7 @@ SUBROUTINE SEAICE_GET_DYNFORCING( ENDDO ENDDO IF ( useRelativeWind ) THEN -C undo subtraction of ocean velocities and subtract ice velocities +C subtract ice velocities from each component wind-speed DO j=1-OLy,sNy+OLy-1 DO i=1-OLx,sNx+OLx-1 uTmp(i,j)=uwind(i,j,bi,bj) diff --git a/pkg/seaice/seaice_growth.F b/pkg/seaice/seaice_growth.F index 1ed4f1614e..eeab5e5e1f 100644 --- a/pkg/seaice/seaice_growth.F +++ b/pkg/seaice/seaice_growth.F @@ -96,9 +96,9 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) INTEGER i, j, bi, bj C number of surface interface layer INTEGER kSurface -C IT :: ice thickness category index (MULTICATEGORIES and ITD code) +C IT :: ice thickness category index (MULTICATEGORIES and ITD code) INTEGER IT -C msgBuf :: Informational/error message buffer +C msgBuf :: Informational/error message buffer #ifdef ALLOW_BALANCE_FLUXES CHARACTER*(MAX_LEN_MBUF) msgBuf #elif (defined (SEAICE_DEBUG)) @@ -165,7 +165,7 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) #endif C== local arrays == -C-- TmixLoc :: ocean surface/mixed-layer temperature (in K) +C TmixLoc :: ocean surface/mixed-layer temperature (in K) _RL TmixLoc (1:sNx,1:sNy) #ifndef SEAICE_ITD @@ -177,7 +177,7 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) C actual ice thickness (with lower limit only) Reciprocal _RL recip_heffActual (1:sNx,1:sNy) -C AREA_PRE :: hold sea-ice fraction field before any seaice-thermo update +C AREA_PRE :: hold sea-ice fraction field before any seaice-thermo update _RL AREApreTH (1:sNx,1:sNy) _RL HEFFpreTH (1:sNx,1:sNy) _RL HSNWpreTH (1:sNx,1:sNy) @@ -278,23 +278,23 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) #endif #ifdef SEAICE_ITD - _RL d_HEFFbySublim_ITD (1:sNx,1:sNy,1:nITD) - _RL d_HSNWbySublim_ITD (1:sNx,1:sNy,1:nITD) - _RL d_HEFFbyOCNonICE_ITD (1:sNx,1:sNy,1:nITD) - _RL d_HSNWbyATMonSNW_ITD (1:sNx,1:sNy,1:nITD) - _RL d_HEFFbyATMonOCN_ITD (1:sNx,1:sNy,1:nITD) - _RL d_HEFFbyATMonOCN_cover_ITD (1:sNx,1:sNy,1:nITD) - _RL d_HEFFbyATMonOCN_open_ITD (1:sNx,1:sNy,1:nITD) - _RL d_HSNWbyRAIN_ITD (1:sNx,1:sNy,1:nITD) - _RL d_HSNWbyOCNonSNW_ITD (1:sNx,1:sNy,1:nITD) - _RL d_HEFFbyFLOODING_ITD (1:sNx,1:sNy,1:nITD) + _RL d_HEFFbySublim_ITD (1:sNx,1:sNy,1:nITD) + _RL d_HSNWbySublim_ITD (1:sNx,1:sNy,1:nITD) + _RL d_HEFFbyOCNonICE_ITD (1:sNx,1:sNy,1:nITD) + _RL d_HSNWbyATMonSNW_ITD (1:sNx,1:sNy,1:nITD) + _RL d_HEFFbyATMonOCN_ITD (1:sNx,1:sNy,1:nITD) + _RL d_HEFFbyATMonOCN_cover_ITD(1:sNx,1:sNy,1:nITD) + _RL d_HEFFbyATMonOCN_open_ITD (1:sNx,1:sNy,1:nITD) + _RL d_HSNWbyRAIN_ITD (1:sNx,1:sNy,1:nITD) + _RL d_HSNWbyOCNonSNW_ITD (1:sNx,1:sNy,1:nITD) + _RL d_HEFFbyFLOODING_ITD (1:sNx,1:sNy,1:nITD) #endif #ifdef ALLOW_DIAGNOSTICS C ICE/SNOW stocks tendencies associated with the various melt/freeze processes - _RL d_AREAbyATM (1:sNx,1:sNy) - _RL d_AREAbyOCN (1:sNx,1:sNy) - _RL d_AREAbyICE (1:sNx,1:sNy) + _RL d_AREAbyATM (1:sNx,1:sNy) + _RL d_AREAbyOCN (1:sNx,1:sNy) + _RL d_AREAbyICE (1:sNx,1:sNy) C Helper variables for diagnostics _RL DIAGarrayA (1:sNx,1:sNy) _RL DIAGarrayB (1:sNx,1:sNy) @@ -315,10 +315,10 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) #endif #ifdef ALLOW_SALT_PLUME - _RL localSPfrac (1:sNx,1:sNy) + _RL localSPfrac (1:sNx,1:sNy) #ifdef SALT_PLUME_IN_LEADS - _RL leadPlumeFraction (1:sNx,1:sNy) - _RL IceGrowthRateInLeads (1:sNx,1:sNy) + _RL leadPlumeFraction (1:sNx,1:sNy) + _RL IceGrowthRateInLeads(1:sNx,1:sNy) #endif /* SALT_PLUME_IN_LEADS */ #endif /* ALLOW_SALT_PLUME */ @@ -416,73 +416,73 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) C array initializations C ===================== - DO J=1,sNy - DO I=1,sNx - a_QbyATM_cover (I,J) = 0.0 _d 0 - a_QbyATM_open(I,J) = 0.0 _d 0 - r_QbyATM_cover (I,J) = 0.0 _d 0 - r_QbyATM_open (I,J) = 0.0 _d 0 + DO j=1,sNy + DO i=1,sNx + a_QbyATM_cover(i,j) = 0.0 _d 0 + a_QbyATM_open (i,j) = 0.0 _d 0 + r_QbyATM_cover(i,j) = 0.0 _d 0 + r_QbyATM_open (i,j) = 0.0 _d 0 - a_QSWbyATM_open (I,J) = 0.0 _d 0 - a_QSWbyATM_cover (I,J) = 0.0 _d 0 + a_QSWbyATM_open (i,j) = 0.0 _d 0 + a_QSWbyATM_cover(i,j) = 0.0 _d 0 - a_QbyOCN (I,J) = 0.0 _d 0 - r_QbyOCN (I,J) = 0.0 _d 0 + a_QbyOCN (i,j) = 0.0 _d 0 + r_QbyOCN (i,j) = 0.0 _d 0 #ifdef ALLOW_DIAGNOSTICS - d_AREAbyATM(I,J) = 0.0 _d 0 - d_AREAbyICE(I,J) = 0.0 _d 0 - d_AREAbyOCN(I,J) = 0.0 _d 0 + d_AREAbyATM(i,j) = 0.0 _d 0 + d_AREAbyICE(i,j) = 0.0 _d 0 + d_AREAbyOCN(i,j) = 0.0 _d 0 #endif - d_HEFFbyOCNonICE(I,J) = 0.0 _d 0 - d_HEFFbyATMonOCN(I,J) = 0.0 _d 0 - d_HEFFbyFLOODING(I,J) = 0.0 _d 0 + d_HEFFbyOCNonICE(i,j) = 0.0 _d 0 + d_HEFFbyATMonOCN(i,j) = 0.0 _d 0 + d_HEFFbyFLOODING(i,j) = 0.0 _d 0 - d_HEFFbyATMonOCN_open(I,J) = 0.0 _d 0 - d_HEFFbyATMonOCN_cover(I,J) = 0.0 _d 0 + d_HEFFbyATMonOCN_open(i,j) = 0.0 _d 0 + d_HEFFbyATMonOCN_cover(i,j)= 0.0 _d 0 - d_HSNWbyATMonSNW(I,J) = 0.0 _d 0 - d_HSNWbyOCNonSNW(I,J) = 0.0 _d 0 - d_HSNWbyRAIN(I,J) = 0.0 _d 0 - a_FWbySublim(I,J) = 0.0 _d 0 - r_FWbySublim(I,J) = 0.0 _d 0 - d_HEFFbySublim(I,J) = 0.0 _d 0 - d_HSNWbySublim(I,J) = 0.0 _d 0 + d_HSNWbyATMonSNW(i,j) = 0.0 _d 0 + d_HSNWbyOCNonSNW(i,j) = 0.0 _d 0 + d_HSNWbyRAIN(i,j) = 0.0 _d 0 + a_FWbySublim(i,j) = 0.0 _d 0 + r_FWbySublim(i,j) = 0.0 _d 0 + d_HEFFbySublim(i,j) = 0.0 _d 0 + d_HSNWbySublim(i,j) = 0.0 _d 0 #ifdef SEAICE_CAP_SUBLIM - latentHeatFluxMax(I,J) = 0.0 _d 0 + latentHeatFluxMax(i,j) = 0.0 _d 0 #endif - d_HFRWbyRAIN(I,J) = 0.0 _d 0 - tmparr1(I,J) = 0.0 _d 0 + d_HFRWbyRAIN(i,j) = 0.0 _d 0 + tmparr1(i,j) = 0.0 _d 0 #if defined ( ALLOW_SITRACER ) && defined ( SEAICE_GREASE ) - greaseLayerThick(I,J) = 0.0 _d 0 - d_HEFFbyGREASE(I,J) = 0.0 _d 0 + greaseLayerThick(i,j) = 0.0 _d 0 + d_HEFFbyGREASE(i,j) = 0.0 _d 0 #endif DO IT=1,SEAICE_multDim - ticeInMult(I,J,IT) = 0.0 _d 0 - ticeOutMult(I,J,IT) = 0.0 _d 0 - a_QbyATMmult_cover(I,J,IT) = 0.0 _d 0 - a_QSWbyATMmult_cover(I,J,IT) = 0.0 _d 0 - a_FWbySublimMult(I,J,IT) = 0.0 _d 0 + ticeInMult(i,j,IT) = 0.0 _d 0 + ticeOutMult(i,j,IT) = 0.0 _d 0 + a_QbyATMmult_cover(i,j,IT) = 0.0 _d 0 + a_QSWbyATMmult_cover(i,j,IT) = 0.0 _d 0 + a_FWbySublimMult(i,j,IT) = 0.0 _d 0 #ifdef SEAICE_CAP_SUBLIM - latentHeatFluxMaxMult(I,J,IT) = 0.0 _d 0 + latentHeatFluxMaxMult(i,j,IT) = 0.0 _d 0 #endif #ifdef SEAICE_ITD - d_HEFFbySublim_ITD(I,J,IT) = 0.0 _d 0 - d_HSNWbySublim_ITD(I,J,IT) = 0.0 _d 0 - d_HEFFbyOCNonICE_ITD(I,J,IT) = 0.0 _d 0 - d_HSNWbyATMonSNW_ITD(I,J,IT) = 0.0 _d 0 - d_HEFFbyATMonOCN_ITD(I,J,IT) = 0.0 _d 0 - d_HEFFbyATMonOCN_cover_ITD(I,J,IT) = 0.0 _d 0 - d_HEFFbyATMonOCN_open_ITD(I,J,IT) = 0.0 _d 0 - d_HSNWbyRAIN_ITD(I,J,IT) = 0.0 _d 0 - d_HSNWbyOCNonSNW_ITD(I,J,IT) = 0.0 _d 0 - d_HEFFbyFLOODING_ITD(I,J,IT) = 0.0 _d 0 - r_QbyATMmult_cover(I,J,IT) = 0.0 _d 0 - r_FWbySublimMult(I,J,IT) = 0.0 _d 0 + d_HEFFbySublim_ITD(i,j,IT) = 0.0 _d 0 + d_HSNWbySublim_ITD(i,j,IT) = 0.0 _d 0 + d_HEFFbyOCNonICE_ITD(i,j,IT) = 0.0 _d 0 + d_HSNWbyATMonSNW_ITD(i,j,IT) = 0.0 _d 0 + d_HEFFbyATMonOCN_ITD(i,j,IT) = 0.0 _d 0 + d_HEFFbyATMonOCN_cover_ITD(i,j,IT) = 0.0 _d 0 + d_HEFFbyATMonOCN_open_ITD(i,j,IT) = 0.0 _d 0 + d_HSNWbyRAIN_ITD(i,j,IT) = 0.0 _d 0 + d_HSNWbyOCNonSNW_ITD(i,j,IT) = 0.0 _d 0 + d_HEFFbyFLOODING_ITD(i,j,IT) = 0.0 _d 0 + r_QbyATMmult_cover(i,j,IT) = 0.0 _d 0 + r_FWbySublimMult(i,j,IT) = 0.0 _d 0 C for lateral melt parameterization: - latMeltFrac(I,J,IT) = 0.0 _d 0 - latMeltRate(I,J,IT) = 0.0 _d 0 + latMeltFrac(i,j,IT) = 0.0 _d 0 + latMeltRate(i,j,IT) = 0.0 _d 0 #endif ENDDO ENDDO @@ -496,39 +496,39 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) C called before S/R seaice_growth C store regularized values of heff, hsnow, area at the onset of thermo. - DO J=1,sNy - DO I=1,sNx - HEFFpreTH(I,J)=HEFF(I,J,bi,bj) - HSNWpreTH(I,J)=HSNOW(I,J,bi,bj) - AREApreTH(I,J)=AREA(I,J,bi,bj) + DO j=1,sNy + DO i=1,sNx + HEFFpreTH(i,j) = HEFF(i,j,bi,bj) + HSNWpreTH(i,j) = HSNOW(i,j,bi,bj) + AREApreTH(i,j) = AREA(i,j,bi,bj) #ifdef ALLOW_DIAGNOSTICS - DIAGarrayB(I,J) = AREA(I,J,bi,bj) - DIAGarrayC(I,J) = HEFF(I,J,bi,bj) - DIAGarrayD(I,J) = HSNOW(I,J,bi,bj) + DIAGarrayB(i,j) = AREA(i,j,bi,bj) + DIAGarrayC(i,j) = HEFF(i,j,bi,bj) + DIAGarrayD(i,j) = HSNOW(i,j,bi,bj) #endif #ifdef ALLOW_SITRACER - SItrHEFF(I,J,bi,bj,1)=HEFF(I,J,bi,bj) - SItrAREA(I,J,bi,bj,2)=AREA(I,J,bi,bj) + SItrHEFF(i,j,bi,bj,1)=HEFF(i,j,bi,bj) + SItrAREA(i,j,bi,bj,2)=AREA(i,j,bi,bj) #endif ENDDO ENDDO #ifdef SEAICE_ITD DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx - HEFFITDpreTH(I,J,IT)=HEFFITD(I,J,IT,bi,bj) - HSNWITDpreTH(I,J,IT)=HSNOWITD(I,J,IT,bi,bj) - AREAITDpreTH(I,J,IT)=AREAITD(I,J,IT,bi,bj) + DO j=1,sNy + DO i=1,sNx + HEFFITDpreTH(i,j,IT)=HEFFITD(i,j,IT,bi,bj) + HSNWITDpreTH(i,j,IT)=HSNOWITD(i,j,IT,bi,bj) + AREAITDpreTH(i,j,IT)=AREAITD(i,j,IT,bi,bj) C keep track of areal and volume fraction of each ITD category - IF (AREA(I,J,bi,bj) .GT. ZERO) THEN - areaFracFactor(I,J,IT)=AREAITD(I,J,IT,bi,bj)/AREA(I,J,bi,bj) + IF (AREA(i,j,bi,bj) .GT. ZERO) THEN + areaFracFactor(i,j,IT)=AREAITD(i,j,IT,bi,bj)/AREA(i,j,bi,bj) ELSE C if there is no ice, potential growth starts in 1st category IF (IT .EQ. 1) THEN - areaFracFactor(I,J,IT)=ONE + areaFracFactor(i,j,IT)=ONE ELSE - areaFracFactor(I,J,IT)=ZERO + areaFracFactor(i,j,IT)=ZERO ENDIF ENDIF ENDDO @@ -537,16 +537,16 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) #ifdef ALLOW_SITRACER C prepare SItrHEFF to be computed as cumulative sum DO iTr=2,5 - DO J=1,sNy - DO I=1,sNx - SItrHEFF(I,J,bi,bj,iTr)=ZERO + DO j=1,sNy + DO i=1,sNx + SItrHEFF(i,j,bi,bj,iTr)=ZERO ENDDO ENDDO ENDDO C prepare SItrAREA to be computed as cumulative sum - DO J=1,sNy - DO I=1,sNx - SItrAREA(I,J,bi,bj,3)=ZERO + DO j=1,sNy + DO i=1,sNx + SItrAREA(i,j,bi,bj,3)=ZERO ENDDO ENDDO #endif @@ -574,23 +574,23 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) ENDIF #endif /* ALLOW_DIAGNOSTICS */ -#if (defined ALLOW_AUTODIFF_TAMC && defined SEAICE_MODIFY_GROWTH_ADJ) +#if (defined ALLOW_AUTODIFF && defined SEAICE_MODIFY_GROWTH_ADJ) Cgf no additional dependency of air-sea fluxes to ice IF ( SEAICEadjMODE.GE.1 ) THEN - DO J=1,sNy - DO I=1,sNx - HEFFpreTH(I,J) = 0. _d 0 - HSNWpreTH(I,J) = 0. _d 0 - AREApreTH(I,J) = 0. _d 0 + DO j=1,sNy + DO i=1,sNx + HEFFpreTH(i,j) = 0. _d 0 + HSNWpreTH(i,j) = 0. _d 0 + AREApreTH(i,j) = 0. _d 0 ENDDO ENDDO #ifdef SEAICE_ITD DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx - HEFFITDpreTH(I,J,IT) = 0. _d 0 - HSNWITDpreTH(I,J,IT) = 0. _d 0 - AREAITDpreTH(I,J,IT) = 0. _d 0 + DO j=1,sNy + DO i=1,sNx + HEFFITDpreTH(i,j,IT) = 0. _d 0 + HSNWITDpreTH(i,j,IT) = 0. _d 0 + AREAITDpreTH(i,j,IT) = 0. _d 0 ENDDO ENDDO ENDDO @@ -608,58 +608,58 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) #endif /* ALLOW_AUTODIFF_TAMC */ #ifdef SEAICE_ITD DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx - IF (HEFFITDpreTH(I,J,IT) .GT. ZERO) THEN + DO j=1,sNy + DO i=1,sNx + IF (HEFFITDpreTH(i,j,IT) .GT. ZERO) THEN C regularize AREA with SEAICE_area_reg - tmpscal1 = SQRT(AREAITDpreTH(I,J,IT) * AREAITDpreTH(I,J,IT) - & + area_reg_sq) + tmpscal1 = SQRT( AREAITDpreTH(i,j,IT)*AREAITDpreTH(i,j,IT) + & + area_reg_sq ) C heffActual calculated with the regularized AREA - tmpscal2 = HEFFITDpreTH(I,J,IT) / tmpscal1 + tmpscal2 = HEFFITDpreTH(i,j,IT) / tmpscal1 C regularize heffActual with SEAICE_hice_reg (add lower bound) - heffActualMult(I,J,IT) = SQRT(tmpscal2 * tmpscal2 + heffActualMult(i,j,IT) = SQRT(tmpscal2 * tmpscal2 & + hice_reg_sq) C hsnowActual calculated with the regularized AREA - hsnowActualMult(I,J,IT) = HSNWITDpreTH(I,J,IT) / tmpscal1 + hsnowActualMult(i,j,IT) = HSNWITDpreTH(i,j,IT) / tmpscal1 C regularize the inverse of heffActual by hice_reg - recip_heffActualMult(I,J,IT) = AREAITDpreTH(I,J,IT) / - & sqrt(HEFFITDpreTH(I,J,IT) * HEFFITDpreTH(I,J,IT) + recip_heffActualMult(i,j,IT) = AREAITDpreTH(i,j,IT) / + & SQRT(HEFFITDpreTH(i,j,IT) * HEFFITDpreTH(i,j,IT) & + hice_reg_sq) C Do not regularize when HEFFpreTH = 0 ELSE - heffActualMult(I,J,IT) = ZERO - hsnowActualMult(I,J,IT) = ZERO - recip_heffActualMult(I,J,IT) = ZERO + heffActualMult(i,j,IT) = ZERO + hsnowActualMult(i,j,IT) = ZERO + recip_heffActualMult(i,j,IT) = ZERO ENDIF ENDDO ENDDO ENDDO #else /* ndef SEAICE_ITD */ - DO J=1,sNy - DO I=1,sNx - IF (HEFFpreTH(I,J) .GT. ZERO) THEN + DO j=1,sNy + DO i=1,sNx + IF (HEFFpreTH(i,j) .GT. ZERO) THEN Cif regularize AREA with SEAICE_area_reg - tmpscal1 = SQRT(AREApreTH(I,J)* AREApreTH(I,J) + area_reg_sq) + tmpscal1 = SQRT(AREApreTH(i,j)* AREApreTH(i,j) + area_reg_sq) Cif heffActual calculated with the regularized AREA - tmpscal2 = HEFFpreTH(I,J) / tmpscal1 + tmpscal2 = HEFFpreTH(i,j) / tmpscal1 Cif regularize heffActual with SEAICE_hice_reg (add lower bound) - heffActual(I,J) = SQRT(tmpscal2 * tmpscal2 + hice_reg_sq) + heffActual(i,j) = SQRT(tmpscal2 * tmpscal2 + hice_reg_sq) Cif hsnowActual calculated with the regularized AREA - hsnowActual(I,J) = HSNWpreTH(I,J) / tmpscal1 + hsnowActual(i,j) = HSNWpreTH(i,j) / tmpscal1 Cif regularize the inverse of heffActual by hice_reg - recip_heffActual(I,J) = AREApreTH(I,J) / - & sqrt(HEFFpreTH(I,J)*HEFFpreTH(I,J) + hice_reg_sq) + recip_heffActual(i,j) = AREApreTH(i,j) / + & SQRT(HEFFpreTH(i,j)*HEFFpreTH(i,j) + hice_reg_sq) Cif Do not regularize when HEFFpreTH = 0 ELSE - heffActual(I,J) = ZERO - hsnowActual(I,J) = ZERO - recip_heffActual(I,J) = ZERO + heffActual(i,j) = ZERO + hsnowActual(i,j) = ZERO + recip_heffActual(i,j) = ZERO ENDIF ENDDO ENDDO #endif /* SEAICE_ITD */ -#if (defined ALLOW_AUTODIFF_TAMC && defined SEAICE_MODIFY_GROWTH_ADJ) +#if (defined ALLOW_AUTODIFF && defined SEAICE_MODIFY_GROWTH_ADJ) CALL ZERO_ADJ_1D( sNx*sNy, heffActual, myThid) CALL ZERO_ADJ_1D( sNx*sNy, hsnowActual, myThid) CALL ZERO_ADJ_1D( sNx*sNy, recip_heffActual, myThid) @@ -673,28 +673,28 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) C step (W/m^2) #ifdef SEAICE_ITD DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx - IF (HEFFITDpreTH(I,J,IT) .GT. ZERO) THEN - latentHeatFluxMaxMult(I,J,IT) = lhSublim*recip_deltaTtherm * - & (HEFFITDpreTH(I,J,IT)*SEAICE_rhoIce + - & HSNWITDpreTH(I,J,IT)*SEAICE_rhoSnow) - & /AREAITDpreTH(I,J,IT) + DO j=1,sNy + DO i=1,sNx + IF (HEFFITDpreTH(i,j,IT) .GT. ZERO) THEN + latentHeatFluxMaxMult(i,j,IT) = lhSublim*recip_deltaTtherm * + & (HEFFITDpreTH(i,j,IT)*SEAICE_rhoIce + + & HSNWITDpreTH(i,j,IT)*SEAICE_rhoSnow) + & /AREAITDpreTH(i,j,IT) ELSE - latentHeatFluxMaxMult(I,J,IT) = ZERO + latentHeatFluxMaxMult(i,j,IT) = ZERO ENDIF ENDDO ENDDO ENDDO #else /* ndef SEAICE_ITD */ - DO J=1,sNy - DO I=1,sNx - IF (HEFFpreTH(I,J) .GT. ZERO) THEN - latentHeatFluxMax(I,J) = lhSublim * recip_deltaTtherm * - & (HEFFpreTH(I,J) * SEAICE_rhoIce + - & HSNWpreTH(I,J) * SEAICE_rhoSnow)/AREApreTH(I,J) + DO j=1,sNy + DO i=1,sNx + IF (HEFFpreTH(i,j) .GT. ZERO) THEN + latentHeatFluxMax(i,j) = lhSublim * recip_deltaTtherm * + & (HEFFpreTH(i,j) * SEAICE_rhoIce + + & HSNWpreTH(i,j) * SEAICE_rhoSnow)/AREApreTH(i,j) ELSE - latentHeatFluxMax(I,J) = ZERO + latentHeatFluxMax(i,j) = ZERO ENDIF ENDDO ENDDO @@ -713,7 +713,7 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) C ocean surface/mixed layer temperature TmixLoc(i,j) = theta(i,j,kSurface,bi,bj)+celsius2K C wind speed from exf - UG(I,J) = MAX(SEAICE_EPS,wspeed(I,J,bi,bj)) + UG(i,j) = MAX(SEAICE_EPS,wspeed(i,j,bi,bj)) ENDDO ENDDO @@ -735,17 +735,17 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) IF (useRelativeWind.AND.useAtmWind) THEN C Compute relative wind speed over sea ice. - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx SPEED_SQ = - & (uWind(I,J,bi,bj) + & (uWind(i,j,bi,bj) & -0.5 _d 0*(uice(i,j,bi,bj)+uice(i+1,j,bi,bj)))**2 - & +(vWind(I,J,bi,bj) + & +(vWind(i,j,bi,bj) & -0.5 _d 0*(vice(i,j,bi,bj)+vice(i,j+1,bi,bj)))**2 IF ( SPEED_SQ .LE. SEAICE_EPS_SQ ) THEN - UG(I,J)=SEAICE_EPS + UG(i,j)=SEAICE_EPS ELSE - UG(I,J)=SQRT(SPEED_SQ) + UG(i,j)=SQRT(SPEED_SQ) ENDIF ENDDO ENDDO @@ -763,11 +763,11 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) C-- Start loop over multi-categories DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx - ticeInMult(I,J,IT) = TICES(I,J,IT,bi,bj) - ticeOutMult(I,J,IT) = TICES(I,J,IT,bi,bj) - TICES(I,J,IT,bi,bj) = ZERO + DO j=1,sNy + DO i=1,sNx + ticeInMult(i,j,IT) = TICES(i,j,IT,bi,bj) + ticeOutMult(i,j,IT) = TICES(i,j,IT,bi,bj) + TICES(i,j,IT,bi,bj) = ZERO ENDDO ENDDO #ifndef SEAICE_ITD @@ -777,12 +777,12 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) pFac = (2.0 _d 0*IT - 1.0 _d 0)*recip_denominator pFacSnow = 1. _d 0 IF ( SEAICE_useMultDimSnow ) pFacSnow=pFac - DO J=1,sNy - DO I=1,sNx - heffActualMult(I,J,IT) = heffActual(I,J)*pFac - hsnowActualMult(I,J,IT) = hsnowActual(I,J)*pFacSnow + DO j=1,sNy + DO i=1,sNx + heffActualMult(i,j,IT) = heffActual(i,j)*pFac + hsnowActualMult(i,j,IT) = hsnowActual(i,j)*pFacSnow #ifdef SEAICE_CAP_SUBLIM - latentHeatFluxMaxMult(I,J,IT) = latentHeatFluxMax(I,J)*pFac + latentHeatFluxMaxMult(i,j,IT) = latentHeatFluxMax(i,j)*pFac #endif ENDDO ENDDO @@ -836,8 +836,8 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) #endif /* ALLOW_AUTODIFF_TAMC */ DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx C update TICES CMLC and tIce, if required later on (currently not the case) CML#ifdef SEAICE_ITD @@ -853,24 +853,24 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) CML tIce(I,J,bi,bj) = tIce(I,J,bi,bj) CML & + ticeOutMult(I,J,IT)*SEAICE_PDF(IT) CML#endif - TICES(I,J,IT,bi,bj) = ticeOutMult(I,J,IT) + TICES(i,j,IT,bi,bj) = ticeOutMult(i,j,IT) C average over categories #ifdef SEAICE_ITD C calculate area weighted mean C (fluxes are per unit (ice surface) area and are thus area weighted) - a_QbyATM_cover (I,J) = a_QbyATM_cover(I,J) - & + a_QbyATMmult_cover(I,J,IT)*areaFracFactor(I,J,IT) - a_QSWbyATM_cover (I,J) = a_QSWbyATM_cover(I,J) - & + a_QSWbyATMmult_cover(I,J,IT)*areaFracFactor(I,J,IT) - a_FWbySublim (I,J) = a_FWbySublim(I,J) - & + a_FWbySublimMult(I,J,IT)*areaFracFactor(I,J,IT) + a_QbyATM_cover (i,j) = a_QbyATM_cover(i,j) + & + a_QbyATMmult_cover(i,j,IT)*areaFracFactor(i,j,IT) + a_QSWbyATM_cover (i,j) = a_QSWbyATM_cover(i,j) + & + a_QSWbyATMmult_cover(i,j,IT)*areaFracFactor(i,j,IT) + a_FWbySublim (i,j) = a_FWbySublim(i,j) + & + a_FWbySublimMult(i,j,IT)*areaFracFactor(i,j,IT) #else - a_QbyATM_cover (I,J) = a_QbyATM_cover(I,J) - & + a_QbyATMmult_cover(I,J,IT)*SEAICE_PDF(IT) - a_QSWbyATM_cover (I,J) = a_QSWbyATM_cover(I,J) - & + a_QSWbyATMmult_cover(I,J,IT)*SEAICE_PDF(IT) - a_FWbySublim (I,J) = a_FWbySublim(I,J) - & + a_FWbySublimMult(I,J,IT)*SEAICE_PDF(IT) + a_QbyATM_cover (i,j) = a_QbyATM_cover(i,j) + & + a_QbyATMmult_cover(i,j,IT)*SEAICE_PDF(IT) + a_QSWbyATM_cover (i,j) = a_QSWbyATM_cover(i,j) + & + a_QSWbyATMmult_cover(i,j,IT)*SEAICE_PDF(IT) + a_FWbySublim (i,j) = a_FWbySublim(i,j) + & + a_FWbySublimMult(i,j,IT)*SEAICE_PDF(IT) #endif ENDDO ENDDO @@ -878,10 +878,10 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) #ifdef SEAICE_CAP_SUBLIM # ifdef ALLOW_DIAGNOSTICS - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx C The actual latent heat flux realized by SOLVE4TEMP - DIAGarrayA(I,J) = a_FWbySublim(I,J) * lhSublim + DIAGarrayA(i,j) = a_FWbySublim(i,j) * lhSublim ENDDO ENDDO Cif The actual vs. maximum latent heat flux @@ -906,58 +906,58 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) C switch heat fluxes from W/m2 to 'effective' ice meters #ifdef SEAICE_ITD DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx - a_QbyATMmult_cover(I,J,IT) = a_QbyATMmult_cover(I,J,IT) - & * convertQ2HI * AREAITDpreTH(I,J,IT) - a_QSWbyATMmult_cover(I,J,IT) = a_QSWbyATMmult_cover(I,J,IT) - & * convertQ2HI * AREAITDpreTH(I,J,IT) + DO j=1,sNy + DO i=1,sNx + a_QbyATMmult_cover(i,j,IT) = a_QbyATMmult_cover(i,j,IT) + & * convertQ2HI * AREAITDpreTH(i,j,IT) + a_QSWbyATMmult_cover(i,j,IT) = a_QSWbyATMmult_cover(i,j,IT) + & * convertQ2HI * AREAITDpreTH(i,j,IT) C and initialize r_QbyATMmult_cover - r_QbyATMmult_cover(I,J,IT)=a_QbyATMmult_cover(I,J,IT) + r_QbyATMmult_cover(i,j,IT)=a_QbyATMmult_cover(i,j,IT) C Convert fresh water flux by sublimation to 'effective' ice meters. C Negative sublimation is resublimation and will be added as snow. #ifdef SEAICE_DISABLE_SUBLIM - a_FWbySublimMult(I,J,IT) = ZERO + a_FWbySublimMult(i,j,IT) = ZERO #endif - a_FWbySublimMult(I,J,IT) = SEAICE_deltaTtherm*recip_rhoIce - & * a_FWbySublimMult(I,J,IT)*AREAITDpreTH(I,J,IT) - r_FWbySublimMult(I,J,IT)=a_FWbySublimMult(I,J,IT) + a_FWbySublimMult(i,j,IT) = SEAICE_deltaTtherm*recip_rhoIce + & * a_FWbySublimMult(i,j,IT)*AREAITDpreTH(i,j,IT) + r_FWbySublimMult(i,j,IT)=a_FWbySublimMult(i,j,IT) ENDDO ENDDO ENDDO - DO J=1,sNy - DO I=1,sNx - a_QbyATM_open(I,J) = a_QbyATM_open(I,J) - & * convertQ2HI * ( ONE - AREApreTH(I,J) ) - a_QSWbyATM_open(I,J) = a_QSWbyATM_open(I,J) - & * convertQ2HI * ( ONE - AREApreTH(I,J) ) + DO j=1,sNy + DO i=1,sNx + a_QbyATM_open(i,j) = a_QbyATM_open(i,j) + & * convertQ2HI * ( ONE - AREApreTH(i,j) ) + a_QSWbyATM_open(i,j) = a_QSWbyATM_open(i,j) + & * convertQ2HI * ( ONE - AREApreTH(i,j) ) C and initialize r_QbyATM_open - r_QbyATM_open(I,J)=a_QbyATM_open(I,J) + r_QbyATM_open(i,j)=a_QbyATM_open(i,j) ENDDO ENDDO #else /* SEAICE_ITD */ - DO J=1,sNy - DO I=1,sNx - a_QbyATM_cover(I,J) = a_QbyATM_cover(I,J) - & * convertQ2HI * AREApreTH(I,J) - a_QSWbyATM_cover(I,J) = a_QSWbyATM_cover(I,J) - & * convertQ2HI * AREApreTH(I,J) - a_QbyATM_open(I,J) = a_QbyATM_open(I,J) - & * convertQ2HI * ( ONE - AREApreTH(I,J) ) - a_QSWbyATM_open(I,J) = a_QSWbyATM_open(I,J) - & * convertQ2HI * ( ONE - AREApreTH(I,J) ) + DO j=1,sNy + DO i=1,sNx + a_QbyATM_cover(i,j) = a_QbyATM_cover(i,j) + & * convertQ2HI * AREApreTH(i,j) + a_QSWbyATM_cover(i,j) = a_QSWbyATM_cover(i,j) + & * convertQ2HI * AREApreTH(i,j) + a_QbyATM_open(i,j) = a_QbyATM_open(i,j) + & * convertQ2HI * ( ONE - AREApreTH(i,j) ) + a_QSWbyATM_open(i,j) = a_QSWbyATM_open(i,j) + & * convertQ2HI * ( ONE - AREApreTH(i,j) ) C and initialize r_QbyATM_cover/r_QbyATM_open - r_QbyATM_cover(I,J)=a_QbyATM_cover(I,J) - r_QbyATM_open(I,J)=a_QbyATM_open(I,J) + r_QbyATM_cover(i,j)=a_QbyATM_cover(i,j) + r_QbyATM_open(i,j)=a_QbyATM_open(i,j) C Convert fresh water flux by sublimation to 'effective' ice meters. C Negative sublimation is resublimation and will be added as snow. #ifdef SEAICE_DISABLE_SUBLIM Cgf just for those who may need to omit this term to reproduce old results - a_FWbySublim(I,J) = ZERO + a_FWbySublim(i,j) = ZERO #endif /* SEAICE_DISABLE_SUBLIM */ - a_FWbySublim(I,J) = SEAICE_deltaTtherm*recip_rhoIce - & * a_FWbySublim(I,J)*AREApreTH(I,J) - r_FWbySublim(I,J)=a_FWbySublim(I,J) + a_FWbySublim(i,j) = SEAICE_deltaTtherm*recip_rhoIce + & * a_FWbySublim(i,j)*AREApreTH(i,j) + r_FWbySublim(i,j)=a_FWbySublim(i,j) ENDDO ENDDO #endif /* SEAICE_ITD */ @@ -974,25 +974,25 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) CADJ STORE r_FWbySublim = comlev1_bibj, key = tkey, byte = isbyte #endif /* ALLOW_AUTODIFF_TAMC */ -#if (defined ALLOW_AUTODIFF_TAMC && defined SEAICE_MODIFY_GROWTH_ADJ) +#if (defined ALLOW_AUTODIFF && defined SEAICE_MODIFY_GROWTH_ADJ) Cgf no additional dependency through ice cover IF ( SEAICEadjMODE.GE.3 ) THEN #ifdef SEAICE_ITD DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx - a_QbyATMmult_cover(I,J,IT) = 0. _d 0 - r_QbyATMmult_cover(I,J,IT) = 0. _d 0 - a_QSWbyATMmult_cover(I,J,IT) = 0. _d 0 + DO j=1,sNy + DO i=1,sNx + a_QbyATMmult_cover(i,j,IT) = 0. _d 0 + r_QbyATMmult_cover(i,j,IT) = 0. _d 0 + a_QSWbyATMmult_cover(i,j,IT) = 0. _d 0 ENDDO ENDDO ENDDO #else /* ndef SEAICE_ITD */ - DO J=1,sNy - DO I=1,sNx - a_QbyATM_cover(I,J) = 0. _d 0 - r_QbyATM_cover(I,J) = 0. _d 0 - a_QSWbyATM_cover(I,J) = 0. _d 0 + DO j=1,sNy + DO i=1,sNx + a_QbyATM_cover(i,j) = 0. _d 0 + r_QbyATM_cover(i,j) = 0. _d 0 + a_QSWbyATM_cover(i,j) = 0. _d 0 ENDDO ENDDO #endif /* SEAICE_ITD */ @@ -1010,23 +1010,23 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) CADJ & key = tkey, byte = isbyte #endif - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx C FREEZING TEMP. OF SEA WATER (deg C) tempFrz = SEAICE_tempFrz0 + - & SEAICE_dTempFrz_dS *salt(I,J,kSurface,bi,bj) + & SEAICE_dTempFrz_dS *salt(i,j,kSurface,bi,bj) C efficiency of turbulent fluxes : dependency to sign of THETA-TBC - IF ( theta(I,J,kSurface,bi,bj) .GE. tempFrz ) THEN + IF ( theta(i,j,kSurface,bi,bj) .GE. tempFrz ) THEN tmpscal1 = SEAICE_mcPheePiston ELSE tmpscal1 =SEAICE_frazilFrac*dzSurf/SEAICE_deltaTtherm ENDIF C efficiency of turbulent fluxes : dependency to AREA (McPhee cases) - IF ( (AREApreTH(I,J) .GT. 0. _d 0).AND. + IF ( (AREApreTH(i,j) .GT. 0. _d 0).AND. & (.NOT.SEAICE_mcPheeStepFunc) ) THEN MixedLayerTurbulenceFactor = ONE - - & SEAICE_mcPheeTaper * AREApreTH(I,J) - ELSEIF ( (AREApreTH(I,J) .GT. 0. _d 0).AND. + & SEAICE_mcPheeTaper * AREApreTH(i,j) + ELSEIF ( (AREApreTH(i,j) .GT. 0. _d 0).AND. & (SEAICE_mcPheeStepFunc) ) THEN MixedLayerTurbulenceFactor = ONE - SEAICE_mcPheeTaper ELSE @@ -1034,7 +1034,7 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) ENDIF C maximum turbulent flux, in ice meters tmpscal2= - (HeatCapacity_Cp*rhoConst * recip_QI) - & * (theta(I,J,kSurface,bi,bj)-tempFrz) + & * (theta(i,j,kSurface,bi,bj)-tempFrz) & * SEAICE_deltaTtherm * HEFFM(i,j,bi,bj) C available turbulent flux a_QbyOCN(i,j) = @@ -1049,12 +1049,12 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) C following Steele (1992, Tab. 2) C ====================================================== DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx tempFrz = SEAICE_tempFrz0 + - & SEAICE_dTempFrz_dS *salt(I,J,kSurface,bi,bj) - tmpscal1=(theta(I,J,kSurface,bi,bj)-tempFrz) - tmpscal2=sqrt(0.87 + 0.067*UG(i,j)) * UG(i,j) + & SEAICE_dTempFrz_dS *salt(i,j,kSurface,bi,bj) + tmpscal1=(theta(i,j,kSurface,bi,bj)-tempFrz) + tmpscal2=SQRT(0.87 + 0.067*UG(i,j)) * UG(i,j) C variable floe diameter following Luepkes et al. (2012, JGR, Equ. 26) C with beta=1 @@ -1063,41 +1063,41 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) CML & * (tmpscal3 / (tmpscal3-AREApreTH(I,J))) C this form involves fewer divisions but gives the same result floeDiameter = floeDiameterMin * floeDiameterMax - & / ( floeDiameterMax*( 1. _d 0 - AREApreTH(I,J) ) - & + floeDiameterMin*AREApreTH(I,J) ) + & / ( floeDiameterMax*( 1. _d 0 - AREApreTH(i,j) ) + & + floeDiameterMin*AREApreTH(i,j) ) C following the idea of SEAICE_areaLossFormula == 1: - IF (a_QbyATMmult_cover(i,j,it).LT.ZERO .OR. + IF (a_QbyATMmult_cover(i,j,IT).LT.ZERO .OR. & a_QbyATM_open(i,j) .LT.ZERO .OR. & a_QbyOCN(i,j) .LT.ZERO) THEN C lateral melt rate as suggested by Perovich, 1983 (PhD thesis) -C latMeltRate(i,j,it) = 1.6 _d -6 * tmpscal1**1.36 +c latMeltRate(i,j,IT) = 1.6 _d -6 * tmpscal1**1.36 C The following for does the same, but is faster - latMeltRate(i,j,it) = ZERO + latMeltRate(i,j,IT) = ZERO IF (tmpscal1 .GT. ZERO) - & latMeltRate(i,j,it) = 1.6 _d -6 * exp(1.36*log(tmpscal1)) + & latMeltRate(i,j,IT) = 1.6 _d -6 * exp(1.36*log(tmpscal1)) C lateral melt rate as suggested by Maykut and Perovich, 1987 C (JGR 92(C7)), Equ. 24 -c latMeltRate(i,j,it) = 13.5 _d -6 * tmpscal2 * tmpscal1**1.3 +c latMeltRate(i,j,IT) = 13.5 _d -6 * tmpscal2 * tmpscal1**1.3 C further suggestion by Maykut and Perovich to avoid C latMeltRate -> 0 for UG -> 0 -c latMeltRate(i,j,it) = (1.6 _d -6 + 13.5 _d -6 * tmpscal2) +c latMeltRate(i,j,IT) = (1.6 _d -6 + 13.5 _d -6 * tmpscal2) c & * tmpscal1**1.3 C factor determining fraction of area and ice volume reduction C due to lateral melt - latMeltFrac(i,j,it) = - & latMeltRate(i,j,it)*SEAICE_deltaTtherm*PI / + latMeltFrac(i,j,IT) = + & latMeltRate(i,j,IT)*SEAICE_deltaTtherm*PI / & (floeAlpha * floeDiameter) - latMeltFrac(i,j,it)=max(ZERO, min(latMeltFrac(i,j,it),ONE)) + latMeltFrac(i,j,IT)=max(ZERO, min(latMeltFrac(i,j,IT),ONE)) ELSE - latMeltRate(i,j,it)=0.0 _d 0 - latMeltFrac(i,j,it)=0.0 _d 0 + latMeltRate(i,j,IT)=0.0 _d 0 + latMeltFrac(i,j,IT)=0.0 _d 0 ENDIF ENDDO ENDDO ENDDO #endif /* SEAICE_ITD */ -#if (defined ALLOW_AUTODIFF_TAMC && defined SEAICE_MODIFY_GROWTH_ADJ) +#if (defined ALLOW_AUTODIFF && defined SEAICE_MODIFY_GROWTH_ADJ) CALL ZERO_ADJ_1D( sNx*sNy, r_QbyOCN, myThid) #endif @@ -1214,23 +1214,23 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) #ifdef SEAICE_ITD DO IT=1,SEAICE_multDim #endif /* SEAICE_ITD */ - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx C First sublimate/deposite snow tmpscal2 = #ifdef SEAICE_ITD - & MAX(MIN(r_FWbySublimMult(I,J,IT),HSNOWITD(I,J,IT,bi,bj) + & MAX(MIN(r_FWbySublimMult(i,j,IT),HSNOWITD(i,j,IT,bi,bj) & *SNOW2ICE),ZERO) - d_HSNWbySublim_ITD(I,J,IT) = - tmpscal2 * ICE2SNOW + d_HSNWbySublim_ITD(i,j,IT) = - tmpscal2 * ICE2SNOW C accumulate change over ITD categories - d_HSNWbySublim(I,J) = d_HSNWbySublim(I,J) - tmpscal2 + d_HSNWbySublim(i,j) = d_HSNWbySublim(i,j) - tmpscal2 & *ICE2SNOW - r_FWbySublimMult(I,J,IT)= r_FWbySublimMult(I,J,IT) - tmpscal2 + r_FWbySublimMult(i,j,IT)= r_FWbySublimMult(i,j,IT) - tmpscal2 #else /* ndef SEAICE_ITD */ - & MAX(MIN(r_FWbySublim(I,J),HSNOW(I,J,bi,bj)*SNOW2ICE),ZERO) - d_HSNWbySublim(I,J) = - tmpscal2 * ICE2SNOW - HSNOW(I,J,bi,bj) = HSNOW(I,J,bi,bj) - tmpscal2*ICE2SNOW - r_FWbySublim(I,J) = r_FWbySublim(I,J) - tmpscal2 + & MAX(MIN(r_FWbySublim(i,j),HSNOW(i,j,bi,bj)*SNOW2ICE),ZERO) + d_HSNWbySublim(i,j) = - tmpscal2 * ICE2SNOW + HSNOW(i,j,bi,bj) = HSNOW(i,j,bi,bj) - tmpscal2*ICE2SNOW + r_FWbySublim(i,j) = r_FWbySublim(i,j) - tmpscal2 #endif /* SEAICE_ITD */ ENDDO ENDDO @@ -1238,37 +1238,37 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) CADJ STORE heff(:,:,bi,bj) = comlev1_bibj,key=tkey,byte=isbyte CADJ STORE r_FWbySublim = comlev1_bibj,key=tkey,byte=isbyte #endif /* ALLOW_AUTODIFF_TAMC */ - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx C If anything is left, sublimate ice tmpscal2 = #ifdef SEAICE_ITD - & MAX(MIN(r_FWbySublimMult(I,J,IT),HEFFITD(I,J,IT,bi,bj)),ZERO) - d_HEFFbySublim_ITD(I,J,IT) = - tmpscal2 + & MAX(MIN(r_FWbySublimMult(i,j,IT),HEFFITD(i,j,IT,bi,bj)),ZERO) + d_HEFFbySublim_ITD(i,j,IT) = - tmpscal2 C accumulate change over ITD categories - d_HEFFbySublim(I,J) = d_HEFFbySublim(I,J) - tmpscal2 - r_FWbySublimMult(I,J,IT) = r_FWbySublimMult(I,J,IT) - tmpscal2 + d_HEFFbySublim(i,j) = d_HEFFbySublim(i,j) - tmpscal2 + r_FWbySublimMult(i,j,IT) = r_FWbySublimMult(i,j,IT) - tmpscal2 #else /* ndef SEAICE_ITD */ - & MAX(MIN(r_FWbySublim(I,J),HEFF(I,J,bi,bj)),ZERO) - d_HEFFbySublim(I,J) = - tmpscal2 - HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) - tmpscal2 - r_FWbySublim(I,J) = r_FWbySublim(I,J) - tmpscal2 + & MAX(MIN(r_FWbySublim(i,j),HEFF(i,j,bi,bj)),ZERO) + d_HEFFbySublim(i,j) = - tmpscal2 + HEFF(i,j,bi,bj) = HEFF(i,j,bi,bj) - tmpscal2 + r_FWbySublim(i,j) = r_FWbySublim(i,j) - tmpscal2 #endif /* SEAICE_ITD */ ENDDO ENDDO - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx C If anything is left, it will be evaporated from the ocean rather than sublimated. C Since a_QbyATM_cover was computed for sublimation, not simple evaporation, we need to C remove the fusion part for the residual (that happens to be precisely r_FWbySublim). #ifdef SEAICE_ITD - a_QbyATMmult_cover(I,J,IT) = a_QbyATMmult_cover(I,J,IT) - & - r_FWbySublimMult(I,J,IT) - r_QbyATMmult_cover(I,J,IT) = r_QbyATMmult_cover(I,J,IT) - & - r_FWbySublimMult(I,J,IT) + a_QbyATMmult_cover(i,j,IT) = a_QbyATMmult_cover(i,j,IT) + & - r_FWbySublimMult(i,j,IT) + r_QbyATMmult_cover(i,j,IT) = r_QbyATMmult_cover(i,j,IT) + & - r_FWbySublimMult(i,j,IT) #else /* ndef SEAICE_ITD */ - a_QbyATM_cover(I,J) = a_QbyATM_cover(I,J)-r_FWbySublim(I,J) - r_QbyATM_cover(I,J) = r_QbyATM_cover(I,J)-r_FWbySublim(I,J) + a_QbyATM_cover(i,j) = a_QbyATM_cover(i,j)-r_FWbySublim(i,j) + r_QbyATM_cover(i,j) = r_QbyATM_cover(i,j)-r_FWbySublim(i,j) #endif /* SEAICE_ITD */ ENDDO ENDDO @@ -1289,40 +1289,40 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) #ifdef SEAICE_ITD DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx C ice growth/melt due to ocean heat r_QbyOCN (W/m^2) is C equally distributed under the ice and hence weighted by C fractional area of each thickness category - tmpscal1=MAX(r_QbyOCN(i,j)*areaFracFactor(I,J,IT), - & -HEFFITD(I,J,IT,bi,bj)) - d_HEFFbyOCNonICE_ITD(I,J,IT)=tmpscal1 - d_HEFFbyOCNonICE(I,J) = d_HEFFbyOCNonICE(I,J) + tmpscal1 + tmpscal1=MAX(r_QbyOCN(i,j)*areaFracFactor(i,j,IT), + & -HEFFITD(i,j,IT,bi,bj)) + d_HEFFbyOCNonICE_ITD(i,j,IT)=tmpscal1 + d_HEFFbyOCNonICE(i,j) = d_HEFFbyOCNonICE(i,j) + tmpscal1 ENDDO ENDDO ENDDO #ifdef ALLOW_SITRACER - DO J=1,sNy - DO I=1,sNx - SItrHEFF(I,J,bi,bj,2) = HEFFpreTH(I,J) - & + d_HEFFbySublim(I,J) - & + d_HEFFbyOCNonICE(I,J) + DO j=1,sNy + DO i=1,sNx + SItrHEFF(i,j,bi,bj,2) = HEFFpreTH(i,j) + & + d_HEFFbySublim(i,j) + & + d_HEFFbyOCNonICE(i,j) ENDDO ENDDO #endif - DO J=1,sNy - DO I=1,sNx - r_QbyOCN(I,J)=r_QbyOCN(I,J)-d_HEFFbyOCNonICE(I,J) + DO j=1,sNy + DO i=1,sNx + r_QbyOCN(i,j)=r_QbyOCN(i,j)-d_HEFFbyOCNonICE(i,j) ENDDO ENDDO #else /* SEAICE_ITD */ - DO J=1,sNy - DO I=1,sNx - d_HEFFbyOCNonICE(I,J)=MAX(r_QbyOCN(i,j), -HEFF(I,J,bi,bj)) - r_QbyOCN(I,J)=r_QbyOCN(I,J)-d_HEFFbyOCNonICE(I,J) - HEFF(I,J,bi,bj)=HEFF(I,J,bi,bj) + d_HEFFbyOCNonICE(I,J) + DO j=1,sNy + DO i=1,sNx + d_HEFFbyOCNonICE(i,j)=MAX(r_QbyOCN(i,j), -HEFF(i,j,bi,bj)) + r_QbyOCN(i,j)=r_QbyOCN(i,j)-d_HEFFbyOCNonICE(i,j) + HEFF(i,j,bi,bj)=HEFF(i,j,bi,bj) + d_HEFFbyOCNonICE(i,j) #ifdef ALLOW_SITRACER - SItrHEFF(I,J,bi,bj,2)=HEFF(I,J,bi,bj) + SItrHEFF(i,j,bi,bj,2)=HEFF(i,j,bi,bj) #endif ENDDO ENDDO @@ -1340,39 +1340,39 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) #ifdef SEAICE_ITD DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx C Convert to standard units (meters of ice) rather than to meters C of snow. This appears to be more robust. - tmpscal1=MAX(r_QbyATMmult_cover(I,J,IT), - & -HSNOWITD(I,J,IT,bi,bj)*SNOW2ICE) + tmpscal1=MAX(r_QbyATMmult_cover(i,j,IT), + & -HSNOWITD(i,j,IT,bi,bj)*SNOW2ICE) tmpscal2=MIN(tmpscal1,0. _d 0) #ifdef SEAICE_MODIFY_GROWTH_ADJ Cgf no additional dependency through snow IF ( SEAICEadjMODE.GE.2 ) tmpscal2 = 0. _d 0 #endif - d_HSNWbyATMonSNW_ITD(I,J,IT) = tmpscal2*ICE2SNOW - d_HSNWbyATMonSNW(I,J) = d_HSNWbyATMonSNW(I,J) + d_HSNWbyATMonSNW_ITD(i,j,IT) = tmpscal2*ICE2SNOW + d_HSNWbyATMonSNW(i,j) = d_HSNWbyATMonSNW(i,j) & + tmpscal2*ICE2SNOW - r_QbyATMmult_cover(I,J,IT)=r_QbyATMmult_cover(I,J,IT) + r_QbyATMmult_cover(i,j,IT)=r_QbyATMmult_cover(i,j,IT) & - tmpscal2 ENDDO ENDDO ENDDO #else /* SEAICE_ITD */ - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx C Convert to standard units (meters of ice) rather than to meters C of snow. This appears to be more robust. - tmpscal1=MAX(r_QbyATM_cover(I,J),-HSNOW(I,J,bi,bj)*SNOW2ICE) + tmpscal1=MAX(r_QbyATM_cover(i,j),-HSNOW(i,j,bi,bj)*SNOW2ICE) tmpscal2=MIN(tmpscal1,0. _d 0) #ifdef SEAICE_MODIFY_GROWTH_ADJ Cgf no additional dependency through snow IF ( SEAICEadjMODE.GE.2 ) tmpscal2 = 0. _d 0 #endif - d_HSNWbyATMonSNW(I,J)= tmpscal2*ICE2SNOW - HSNOW(I,J,bi,bj) = HSNOW(I,J,bi,bj) + tmpscal2*ICE2SNOW - r_QbyATM_cover(I,J)=r_QbyATM_cover(I,J) - tmpscal2 + d_HSNWbyATMonSNW(i,j)= tmpscal2*ICE2SNOW + HSNOW(i,j,bi,bj) = HSNOW(i,j,bi,bj) + tmpscal2*ICE2SNOW + r_QbyATM_cover(i,j)=r_QbyATM_cover(i,j) - tmpscal2 ENDDO ENDDO #endif /* SEAICE_ITD */ @@ -1392,50 +1392,50 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) #ifdef SEAICE_ITD DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx - tmpscal1 = HEFFITDpreTH(I,J,IT) - & + d_HEFFbySublim_ITD(I,J,IT) - & + d_HEFFbyOCNonICE_ITD(I,J,IT) + DO j=1,sNy + DO i=1,sNx + tmpscal1 = HEFFITDpreTH(i,j,IT) + & + d_HEFFbySublim_ITD(i,j,IT) + & + d_HEFFbyOCNonICE_ITD(i,j,IT) tmpscal2 = MAX(-tmpscal1, - & r_QbyATMmult_cover(I,J,IT) + & r_QbyATMmult_cover(i,j,IT) C Limit ice growth by potential melt by ocean - & + AREAITDpreTH(I,J,IT) * r_QbyOCN(I,J)) - d_HEFFbyATMonOCN_cover_ITD(I,J,IT) = tmpscal2 - d_HEFFbyATMonOCN_cover(I,J) = d_HEFFbyATMonOCN_cover(I,J) + & + AREAITDpreTH(i,j,IT) * r_QbyOCN(i,j)) + d_HEFFbyATMonOCN_cover_ITD(i,j,IT) = tmpscal2 + d_HEFFbyATMonOCN_cover(i,j) = d_HEFFbyATMonOCN_cover(i,j) & + tmpscal2 - d_HEFFbyATMonOCN_ITD(I,J,IT) = d_HEFFbyATMonOCN_ITD(I,J,IT) + d_HEFFbyATMonOCN_ITD(i,j,IT) = d_HEFFbyATMonOCN_ITD(i,j,IT) & + tmpscal2 - d_HEFFbyATMonOCN(I,J) = d_HEFFbyATMonOCN(I,J) + d_HEFFbyATMonOCN(i,j) = d_HEFFbyATMonOCN(i,j) & + tmpscal2 - r_QbyATMmult_cover(I,J,IT) = r_QbyATMmult_cover(I,J,IT) + r_QbyATMmult_cover(i,j,IT) = r_QbyATMmult_cover(i,j,IT) & - tmpscal2 ENDDO ENDDO ENDDO #ifdef ALLOW_SITRACER - DO J=1,sNy - DO I=1,sNx - SItrHEFF(I,J,bi,bj,3) = SItrHEFF(I,J,bi,bj,2) - & + d_HEFFbyATMonOCN_cover(I,J) + DO j=1,sNy + DO i=1,sNx + SItrHEFF(i,j,bi,bj,3) = SItrHEFF(i,j,bi,bj,2) + & + d_HEFFbyATMonOCN_cover(i,j) ENDDO ENDDO #endif #else /* ndef SEAICE_ITD */ - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx - tmpscal2 = MAX(-HEFF(I,J,bi,bj),r_QbyATM_cover(I,J)+ + tmpscal2 = MAX(-HEFF(i,j,bi,bj),r_QbyATM_cover(i,j)+ C Limit ice growth by potential melt by ocean - & AREApreTH(I,J) * r_QbyOCN(I,J)) + & AREApreTH(i,j) * r_QbyOCN(i,j)) - d_HEFFbyATMonOCN_cover(I,J)=tmpscal2 - d_HEFFbyATMonOCN(I,J)=d_HEFFbyATMonOCN(I,J)+tmpscal2 - r_QbyATM_cover(I,J)=r_QbyATM_cover(I,J)-tmpscal2 - HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) + tmpscal2 + d_HEFFbyATMonOCN_cover(i,j)=tmpscal2 + d_HEFFbyATMonOCN(i,j)=d_HEFFbyATMonOCN(i,j)+tmpscal2 + r_QbyATM_cover(i,j)=r_QbyATM_cover(i,j)-tmpscal2 + HEFF(i,j,bi,bj) = HEFF(i,j,bi,bj) + tmpscal2 #ifdef ALLOW_SITRACER - SItrHEFF(I,J,bi,bj,3)=HEFF(I,J,bi,bj) + SItrHEFF(i,j,bi,bj,3)=HEFF(i,j,bi,bj) #endif ENDDO ENDDO @@ -1450,50 +1450,50 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) #endif /* ALLOW_AUTODIFF_TAMC */ IF ( snowPrecipFile .NE. ' ' ) THEN C add snowPrecip to HSNOW - DO J=1,sNy - DO I=1,sNx - d_HSNWbyRAIN(I,J) = convertPRECIP2HI * ICE2SNOW * - & snowPrecip(i,j,bi,bj) * AREApreTH(I,J) - d_HFRWbyRAIN(I,J) = -convertPRECIP2HI * - & ( PRECIP(I,J,bi,bj) - snowPrecip(I,J,bi,bj) ) * - & AREApreTH(I,J) - HSNOW(I,J,bi,bj) = HSNOW(I,J,bi,bj) + d_HSNWbyRAIN(I,J) + DO j=1,sNy + DO i=1,sNx + d_HSNWbyRAIN(i,j) = convertPRECIP2HI * ICE2SNOW * + & snowPrecip(i,j,bi,bj) * AREApreTH(i,j) + d_HFRWbyRAIN(i,j) = -convertPRECIP2HI * + & ( PRECIP(i,j,bi,bj) - snowPrecip(i,j,bi,bj) ) * + & AREApreTH(i,j) + HSNOW(i,j,bi,bj) = HSNOW(i,j,bi,bj) + d_HSNWbyRAIN(i,j) ENDDO ENDDO ELSE C attribute precip to fresh water or snow stock, C depending on atmospheric conditions. - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx C possible alternatives to the a_QbyATM_cover criterium c IF (tIce(I,J,bi,bj) .LT. TMIX) THEN ! would require computing tIce c IF (atemp(I,J,bi,bj) .LT. celsius2K) THEN - IF ( a_QbyATM_cover(I,J).GE. 0. _d 0 ) THEN + IF ( a_QbyATM_cover(i,j).GE. 0. _d 0 ) THEN C add precip as snow - d_HFRWbyRAIN(I,J)=0. _d 0 - d_HSNWbyRAIN(I,J)=convertPRECIP2HI*ICE2SNOW* - & PRECIP(I,J,bi,bj)*AREApreTH(I,J) + d_HFRWbyRAIN(i,j)=0. _d 0 + d_HSNWbyRAIN(i,j)=convertPRECIP2HI*ICE2SNOW* + & PRECIP(i,j,bi,bj)*AREApreTH(i,j) ELSE C add precip to the fresh water bucket - d_HFRWbyRAIN(I,J)=-convertPRECIP2HI* - & PRECIP(I,J,bi,bj)*AREApreTH(I,J) - d_HSNWbyRAIN(I,J)=0. _d 0 + d_HFRWbyRAIN(i,j)=-convertPRECIP2HI* + & PRECIP(i,j,bi,bj)*AREApreTH(i,j) + d_HSNWbyRAIN(i,j)=0. _d 0 ENDIF ENDDO ENDDO #ifdef SEAICE_ITD DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx - d_HSNWbyRAIN_ITD(I,J,IT) - & = d_HSNWbyRAIN(I,J)*areaFracFactor(I,J,IT) + DO j=1,sNy + DO i=1,sNx + d_HSNWbyRAIN_ITD(i,j,IT) + & = d_HSNWbyRAIN(i,j)*areaFracFactor(i,j,IT) ENDDO ENDDO ENDDO #else /* ndef SEAICE_ITD */ - DO J=1,sNy - DO I=1,sNx - HSNOW(I,J,bi,bj) = HSNOW(I,J,bi,bj) + d_HSNWbyRAIN(I,J) + DO j=1,sNy + DO i=1,sNx + HSNOW(i,j,bi,bj) = HSNOW(i,j,bi,bj) + d_HSNWbyRAIN(i,j) ENDDO ENDDO #endif /* SEAICE_ITD */ @@ -1518,38 +1518,38 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) #ifdef SEAICE_ITD DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx - tmpscal4 = HSNWITDpreTH(I,J,IT) - & + d_HSNWbySublim_ITD(I,J,IT) - & + d_HSNWbyATMonSNW_ITD(I,J,IT) - & + d_HSNWbyRAIN_ITD(I,J,IT) - tmpscal1=MAX(r_QbyOCN(i,j)*ICE2SNOW*areaFracFactor(I,J,IT), + DO j=1,sNy + DO i=1,sNx + tmpscal4 = HSNWITDpreTH(i,j,IT) + & + d_HSNWbySublim_ITD(i,j,IT) + & + d_HSNWbyATMonSNW_ITD(i,j,IT) + & + d_HSNWbyRAIN_ITD(i,j,IT) + tmpscal1=MAX(r_QbyOCN(i,j)*ICE2SNOW*areaFracFactor(i,j,IT), & -tmpscal4) tmpscal2=MIN(tmpscal1,0. _d 0) #ifdef SEAICE_MODIFY_GROWTH_ADJ Cgf no additional dependency through snow - if ( SEAICEadjMODE.GE.2 ) tmpscal2 = 0. _d 0 + IF ( SEAICEadjMODE.GE.2 ) tmpscal2 = 0. _d 0 #endif - d_HSNWbyOCNonSNW_ITD(I,J,IT) = tmpscal2 - d_HSNWbyOCNonSNW(I,J) = d_HSNWbyOCNonSNW(I,J) + tmpscal2 - r_QbyOCN(I,J)=r_QbyOCN(I,J) - tmpscal2*SNOW2ICE + d_HSNWbyOCNonSNW_ITD(i,j,IT) = tmpscal2 + d_HSNWbyOCNonSNW(i,j) = d_HSNWbyOCNonSNW(i,j) + tmpscal2 + r_QbyOCN(i,j)=r_QbyOCN(i,j) - tmpscal2*SNOW2ICE ENDDO ENDDO ENDDO #else /* ndef SEAICE_ITD */ - DO J=1,sNy - DO I=1,sNx - tmpscal1=MAX(r_QbyOCN(i,j)*ICE2SNOW, -HSNOW(I,J,bi,bj)) + DO j=1,sNy + DO i=1,sNx + tmpscal1=MAX(r_QbyOCN(i,j)*ICE2SNOW, -HSNOW(i,j,bi,bj)) tmpscal2=MIN(tmpscal1,0. _d 0) #ifdef SEAICE_MODIFY_GROWTH_ADJ Cgf no additional dependency through snow - if ( SEAICEadjMODE.GE.2 ) tmpscal2 = 0. _d 0 + IF ( SEAICEadjMODE.GE.2 ) tmpscal2 = 0. _d 0 #endif - d_HSNWbyOCNonSNW(I,J) = tmpscal2 - r_QbyOCN(I,J)=r_QbyOCN(I,J) - & -d_HSNWbyOCNonSNW(I,J)*SNOW2ICE - HSNOW(I,J,bi,bj) = HSNOW(I,J,bi,bj)+d_HSNWbyOCNonSNW(I,J) + d_HSNWbyOCNonSNW(i,j) = tmpscal2 + r_QbyOCN(i,j)=r_QbyOCN(i,j) + & -d_HSNWbyOCNonSNW(i,j)*SNOW2ICE + HSNOW(i,j,bi,bj) = HSNOW(i,j,bi,bj)+d_HSNWbyOCNonSNW(i,j) ENDDO ENDDO #endif /* SEAICE_ITD */ @@ -1569,30 +1569,30 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) CADJ STORE a_QSWbyATM_open = comlev1_bibj,key=tkey,byte=isbyte #endif /* ALLOW_AUTODIFF_TAMC */ - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx #ifdef SEAICE_ITD C HEFF will be updated at the end of PART 3, C hence sum of tendencies so far is needed - tmpscal4 = HEFFpreTH(I,J) - & + d_HEFFbySublim(I,J) - & + d_HEFFbyOCNonICE(I,J) - & + d_HEFFbyATMonOCN(I,J) + tmpscal4 = HEFFpreTH(i,j) + & + d_HEFFbySublim(i,j) + & + d_HEFFbyOCNonICE(i,j) + & + d_HEFFbyATMonOCN(i,j) #else /* ndef SEAICE_ITD */ C HEFF is updated step by step throughout seaice_growth - tmpscal4 = HEFF(I,J,bi,bj) + tmpscal4 = HEFF(i,j,bi,bj) #endif /* SEAICE_ITD */ C Initial ice growth is triggered by open water C heat flux overcoming potential melt by ocean - tmpscal1=r_QbyATM_open(I,J)+r_QbyOCN(i,j) * - & (1.0 _d 0 - AREApreTH(I,J)) + tmpscal1=r_QbyATM_open(i,j)+r_QbyOCN(i,j) * + & (1.0 _d 0 - AREApreTH(i,j)) C Penetrative shortwave flux beyond first layer C that is therefore not available to ice growth/melt - tmpscal2=SWFracB * a_QSWbyATM_open(I,J) + tmpscal2=SWFracB * a_QSWbyATM_open(i,j) C impose -HEFF as the maxmum melting if SEAICE_doOpenWaterMelt C or 0. otherwise (no melting if not SEAICE_doOpenWaterMelt) tmpscal3=facOpenGrow*MAX(tmpscal1-tmpscal2, - & -tmpscal4*facOpenMelt)*HEFFM(I,J,bi,bj) + & -tmpscal4*facOpenMelt)*HEFFM(i,j,bi,bj) #if defined ( ALLOW_SITRACER ) && defined ( SEAICE_GREASE ) C Grease ice is a tracer or "bucket" for newly formed frazil ice C that instead of becoming solid sea ice instantly has a half-time @@ -1605,11 +1605,11 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) C C 1) mechanical removal of grease by ridging: C if there is no open water left after advection, there cannot be any grease ice - if ((1.0 _d 0 - AREApreTH(I,J)).LE.siEps) then - tmpscal3 = tmpscal3 + SItracer(I,J,bi,bj,iTrGrease) - SItracer(I,J,bi,bj,iTrGrease) = 0. _d 0 + IF ((1.0 _d 0 - AREApreTH(i,j)).LE.siEps) THEN + tmpscal3 = tmpscal3 + SItracer(i,j,bi,bj,iTrGrease) + SItracer(i,j,bi,bj,iTrGrease) = 0. _d 0 - elseif (greaseNewFrazil .GT. 0. _d 0) then + ELSEIF (greaseNewFrazil .GT. 0. _d 0) THEN C new ice growth goes into grease tracer not HEFF: tmpscal3=0. _d 0 C @@ -1620,49 +1620,49 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) C (50% of grease ice area become solid ice within 24h): tmpscal1=exp(-SEAICE_deltaTtherm/greaseDecayTime) C gain in solid sea ice volume due to solidified grease: - d_HEFFbyGREASE(I,J) = - & SItracer(I,J,bi,bj,iTrGrease) + d_HEFFbyGREASE(i,j) = + & SItracer(i,j,bi,bj,iTrGrease) & * (1.0 _d 0 - tmpscal1) C ... and related loss of grease ice (tracer) volume - SItracer(I,J,bi,bj,iTrGrease) = - & SItracer(I,J,bi,bj,iTrGrease) * tmpscal1 + SItracer(i,j,bi,bj,iTrGrease) = + & SItracer(i,j,bi,bj,iTrGrease) * tmpscal1 C the solidified grease ice volume needs to be added to HEFF: - SItrBucket(I,J,bi,bj,iTrGrease) = - & SItrBucket(I,J,bi,bj,iTrGrease) - & + d_HEFFbyGREASE(I,J) + SItrBucket(i,j,bi,bj,iTrGrease) = + & SItrBucket(i,j,bi,bj,iTrGrease) + & + d_HEFFbyGREASE(i,j) C C 3) grease ice growth from new frazil ice: C SItracer(i,j,bi,bj,iTrGrease) = & SItracer(i,j,bi,bj,iTrGrease) + greaseNewFrazil - endif + ENDIF C 4) mapping SItrBucket to external variable, in this case HEFF, ... - tmpscal3=tmpscal3+SItrBucket(I,J,bi,bj,iTrGrease) + tmpscal3=tmpscal3+SItrBucket(i,j,bi,bj,iTrGrease) C ... and empty SItrBucket for tracer 'grease' - SItrBucket(I,J,bi,bj,iTrGrease)=0. _d 0 + SItrBucket(i,j,bi,bj,iTrGrease)=0. _d 0 #endif /* SEAICE_GREASE */ #ifdef SEAICE_ITD C ice growth in open water adds to first category - d_HEFFbyATMonOCN_open_ITD(I,J,1)=tmpscal3 - d_HEFFbyATMonOCN_ITD(I,J,1) =d_HEFFbyATMonOCN_ITD(I,J,1) + d_HEFFbyATMonOCN_open_ITD(i,j,1)=tmpscal3 + d_HEFFbyATMonOCN_ITD(i,j,1) =d_HEFFbyATMonOCN_ITD(i,j,1) & +tmpscal3 #endif /* SEAICE_ITD */ - d_HEFFbyATMonOCN_open(I,J)=tmpscal3 - d_HEFFbyATMonOCN(I,J)=d_HEFFbyATMonOCN(I,J)+tmpscal3 - r_QbyATM_open(I,J)=r_QbyATM_open(I,J)-tmpscal3 - HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) + tmpscal3 + d_HEFFbyATMonOCN_open(i,j)=tmpscal3 + d_HEFFbyATMonOCN(i,j)=d_HEFFbyATMonOCN(i,j)+tmpscal3 + r_QbyATM_open(i,j)=r_QbyATM_open(i,j)-tmpscal3 + HEFF(i,j,bi,bj) = HEFF(i,j,bi,bj) + tmpscal3 ENDDO ENDDO #ifdef ALLOW_SITRACER - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx C needs to be here to allow use also with LEGACY branch #ifdef SEAICE_ITD - SItrHEFF(I,J,bi,bj,4)=SItrHEFF(I,J,bi,bj,3) - & +d_HEFFbyATMonOCN_open(I,J) + SItrHEFF(i,j,bi,bj,4)=SItrHEFF(i,j,bi,bj,3) + & +d_HEFFbyATMonOCN_open(i,j) #else /* ndef SEAICE_ITD */ - SItrHEFF(I,J,bi,bj,4)=HEFF(I,J,bi,bj) + SItrHEFF(i,j,bi,bj,4)=HEFF(i,j,bi,bj) #endif /* SEAICE_ITD */ ENDDO ENDDO @@ -1679,35 +1679,35 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) IF ( SEAICEuseFlooding ) THEN #ifdef SEAICE_ITD DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx - tmpscal3 = HEFFITDpreTH(I,J,IT) - & + d_HEFFbySublim_ITD(I,J,IT) - & + d_HEFFbyOCNonICE_ITD(I,J,IT) - & + d_HEFFbyATMonOCN_ITD(I,J,IT) - tmpscal4 = HSNWITDpreTH(I,J,IT) - & + d_HSNWbySublim_ITD(I,J,IT) - & + d_HSNWbyATMonSNW_ITD(I,J,IT) - & + d_HSNWbyRAIN_ITD(I,J,IT) + DO j=1,sNy + DO i=1,sNx + tmpscal3 = HEFFITDpreTH(i,j,IT) + & + d_HEFFbySublim_ITD(i,j,IT) + & + d_HEFFbyOCNonICE_ITD(i,j,IT) + & + d_HEFFbyATMonOCN_ITD(i,j,IT) + tmpscal4 = HSNWITDpreTH(i,j,IT) + & + d_HSNWbySublim_ITD(i,j,IT) + & + d_HSNWbyATMonSNW_ITD(i,j,IT) + & + d_HSNWbyRAIN_ITD(i,j,IT) tmpscal0 = (tmpscal4*SEAICE_rhoSnow & + tmpscal3*SEAICE_rhoIce) & * recip_rhoConst tmpscal1 = MAX( 0. _d 0, tmpscal0 - tmpscal3) - d_HEFFbyFLOODING_ITD(I,J,IT) = tmpscal1 - d_HEFFbyFLOODING(I,J) = d_HEFFbyFLOODING(I,J) + tmpscal1 + d_HEFFbyFLOODING_ITD(i,j,IT) = tmpscal1 + d_HEFFbyFLOODING(i,j) = d_HEFFbyFLOODING(i,j) + tmpscal1 ENDDO ENDDO ENDDO #else /* ndef SEAICE_ITD */ - DO J=1,sNy - DO I=1,sNx - tmpscal0 = (HSNOW(I,J,bi,bj)*SEAICE_rhoSnow - & +HEFF(I,J,bi,bj)*SEAICE_rhoIce)*recip_rhoConst - tmpscal1 = MAX( 0. _d 0, tmpscal0 - HEFF(I,J,bi,bj)) - d_HEFFbyFLOODING(I,J)=tmpscal1 - HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj)+d_HEFFbyFLOODING(I,J) - HSNOW(I,J,bi,bj) = HSNOW(I,J,bi,bj)- - & d_HEFFbyFLOODING(I,J)*ICE2SNOW + DO j=1,sNy + DO i=1,sNx + tmpscal0 = (HSNOW(i,j,bi,bj)*SEAICE_rhoSnow + & +HEFF(i,j,bi,bj)*SEAICE_rhoIce)*recip_rhoConst + tmpscal1 = MAX( 0. _d 0, tmpscal0 - HEFF(i,j,bi,bj)) + d_HEFFbyFLOODING(i,j)=tmpscal1 + HEFF(i,j,bi,bj) = HEFF(i,j,bi,bj)+d_HEFFbyFLOODING(i,j) + HSNOW(i,j,bi,bj) = HSNOW(i,j,bi,bj)- + & d_HEFFbyFLOODING(i,j)*ICE2SNOW ENDDO ENDDO #endif /* SEAICE_ITD */ @@ -1717,19 +1717,19 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) C apply ice and snow thickness changes C ================================================================= DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx - HEFFITD(I,J,IT,bi,bj) = HEFFITD(I,J,IT,bi,bj) - & + d_HEFFbySublim_ITD(I,J,IT) - & + d_HEFFbyOCNonICE_ITD(I,J,IT) - & + d_HEFFbyATMonOCN_ITD(I,J,IT) - & + d_HEFFbyFLOODING_ITD(I,J,IT) - HSNOWITD(I,J,IT,bi,bj) = HSNOWITD(I,J,IT,bi,bj) - & + d_HSNWbySublim_ITD(I,J,IT) - & + d_HSNWbyATMonSNW_ITD(I,J,IT) - & + d_HSNWbyRAIN_ITD(I,J,IT) - & + d_HSNWbyOCNonSNW_ITD(I,J,IT) - & - d_HEFFbyFLOODING_ITD(I,J,IT) + DO j=1,sNy + DO i=1,sNx + HEFFITD(i,j,IT,bi,bj) = HEFFITD(i,j,IT,bi,bj) + & + d_HEFFbySublim_ITD(i,j,IT) + & + d_HEFFbyOCNonICE_ITD(i,j,IT) + & + d_HEFFbyATMonOCN_ITD(i,j,IT) + & + d_HEFFbyFLOODING_ITD(i,j,IT) + HSNOWITD(i,j,IT,bi,bj) = HSNOWITD(i,j,IT,bi,bj) + & + d_HSNWbySublim_ITD(i,j,IT) + & + d_HSNWbyATMonSNW_ITD(i,j,IT) + & + d_HSNWbyRAIN_ITD(i,j,IT) + & + d_HSNWbyOCNonSNW_ITD(i,j,IT) + & - d_HEFFbyFLOODING_ITD(i,j,IT) & * ICE2SNOW ENDDO ENDDO @@ -1765,45 +1765,45 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) C-- "non-ITD" way, so that the ITD simulation with SEAICE_multDim=1 C-- is identical with the non-ITD simulation; C-- use HEFF, ARE, HSNOW, etc. as temporal storage for 1st category - DO J=1,sNy - DO I=1,sNx - HEFF(I,J,bi,bj)=HEFFITD(I,J,1,bi,bj) - AREA(I,J,bi,bj)=AREAITD(I,J,1,bi,bj) - HSNOW(I,J,bi,bj)=HSNOWITD(I,J,1,bi,bj) - HEFFpreTH(I,J)=HEFFITDpreTH(I,J,1) - AREApreTH(I,J)=AREAITDpreTH(I,J,1) - recip_heffActual(I,J)=recip_heffActualMult(I,J,1) + DO j=1,sNy + DO i=1,sNx + HEFF(i,j,bi,bj)=HEFFITD(i,j,1,bi,bj) + AREA(i,j,bi,bj)=AREAITD(i,j,1,bi,bj) + HSNOW(i,j,bi,bj)=HSNOWITD(i,j,1,bi,bj) + HEFFpreTH(i,j)=HEFFITDpreTH(i,j,1) + AREApreTH(i,j)=AREAITDpreTH(i,j,1) + recip_heffActual(i,j)=recip_heffActualMult(i,j,1) ENDDO ENDDO #endif /* SEAICE_ITD */ - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx #if defined ( ALLOW_SITRACER ) && defined ( SEAICE_GREASE ) C grease ice layer thickness (Hg) includes C 1 part frazil ice and 3 parts sea water C i.e. HO = 0.25 * Hg - recip_HO=4. _d 0 / greaseLayerThick(I,J) + recip_HO=4. _d 0 / greaseLayerThick(i,j) #else /* SEAICE_GREASE */ - IF ( YC(I,J,bi,bj) .LT. ZERO ) THEN + IF ( YC(i,j,bi,bj) .LT. ZERO ) THEN recip_HO=1. _d 0 / HO_south ELSE recip_HO=1. _d 0 / HO ENDIF #endif /* SEAICE_GREASE */ - recip_HH = recip_heffActual(I,J) + recip_HH = recip_heffActual(i,j) C gain of ice over open water : computed from #if defined ( ALLOW_SITRACER ) && defined ( SEAICE_GREASE ) C from growth by ATM with grease ice time delay - tmpscal4 = MAX(ZERO,d_HEFFbyGREASE(I,J)) + tmpscal4 = MAX(ZERO,d_HEFFbyGREASE(i,j)) #else /* SEAICE_GREASE */ C (SEAICE_areaGainFormula.EQ.1) from growth by ATM C (SEAICE_areaGainFormula.EQ.2) from predicted growth by ATM IF (SEAICE_areaGainFormula.EQ.1) THEN - tmpscal4 = MAX(ZERO,d_HEFFbyATMonOCN_open(I,J)) + tmpscal4 = MAX(ZERO,d_HEFFbyATMonOCN_open(i,j)) ELSE - tmpscal4=MAX(ZERO,a_QbyATM_open(I,J)) + tmpscal4=MAX(ZERO,a_QbyATM_open(i,j)) ENDIF #endif /* SEAICE_GREASE */ @@ -1812,18 +1812,18 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) C (SEAICE_areaLossFormula.EQ.2) from net melt-growth>0 by ATM and OCN C (SEAICE_areaLossFormula.EQ.3) from predicted melt by ATM IF (SEAICE_areaLossFormula.EQ.1) THEN - tmpscal3 = MIN( 0. _d 0 , d_HEFFbyATMonOCN_cover(I,J) ) - & + MIN( 0. _d 0 , d_HEFFbyATMonOCN_open(I,J) ) - & + MIN( 0. _d 0 , d_HEFFbyOCNonICE(I,J) ) + tmpscal3 = MIN( 0. _d 0 , d_HEFFbyATMonOCN_cover(i,j) ) + & + MIN( 0. _d 0 , d_HEFFbyATMonOCN_open(i,j) ) + & + MIN( 0. _d 0 , d_HEFFbyOCNonICE(i,j) ) ELSEIF (SEAICE_areaLossFormula.EQ.2) THEN - tmpscal3 = MIN( 0. _d 0 , d_HEFFbyATMonOCN_cover(I,J) - & + d_HEFFbyATMonOCN_open(I,J) + d_HEFFbyOCNonICE(I,J) ) + tmpscal3 = MIN( 0. _d 0 , d_HEFFbyATMonOCN_cover(i,j) + & + d_HEFFbyATMonOCN_open(i,j) + d_HEFFbyOCNonICE(i,j) ) ELSE C compute heff after ice melt by ocn: - tmpscal0=HEFF(I,J,bi,bj) - d_HEFFbyATMonOCN(I,J) + tmpscal0=HEFF(i,j,bi,bj) - d_HEFFbyATMonOCN(i,j) C compute available heat left after snow melt by atm: - tmpscal1= a_QbyATM_open(I,J)+a_QbyATM_cover(I,J) - & - d_HSNWbyATMonSNW(I,J)*SNOW2ICE + tmpscal1= a_QbyATM_open(i,j)+a_QbyATM_cover(i,j) + & - d_HSNWbyATMonSNW(i,j)*SNOW2ICE C could not melt more than all the ice tmpscal2 = MAX(-tmpscal0,tmpscal1) tmpscal3 = MIN(ZERO,tmpscal2) @@ -1832,72 +1832,72 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) C apply tendency IF ( (HEFF(i,j,bi,bj).GT.0. _d 0).OR. & (HSNOW(i,j,bi,bj).GT.0. _d 0) ) THEN - AREA(I,J,bi,bj)=MAX(0. _d 0, - & MIN( SEAICE_area_max, AREA(I,J,bi,bj) + AREA(i,j,bi,bj)=MAX(0. _d 0, + & MIN( SEAICE_area_max, AREA(i,j,bi,bj) & + recip_HO*tmpscal4+HALF*recip_HH*tmpscal3 & * areaPDFfac )) ELSE - AREA(I,J,bi,bj)=0. _d 0 + AREA(i,j,bi,bj)=0. _d 0 ENDIF #ifdef ALLOW_SITRACER - SItrAREA(I,J,bi,bj,3)=AREA(I,J,bi,bj) + SItrAREA(i,j,bi,bj,3)=AREA(i,j,bi,bj) #endif /* ALLOW_SITRACER */ #ifdef ALLOW_DIAGNOSTICS - d_AREAbyATM(I,J)= - & recip_HO*MAX(ZERO,d_HEFFbyATMonOCN_open(I,J)) - & +HALF*recip_HH*MIN(0. _d 0,d_HEFFbyATMonOCN_open(I,J)) + d_AREAbyATM(i,j)= + & recip_HO*MAX(ZERO,d_HEFFbyATMonOCN_open(i,j)) + & +HALF*recip_HH*MIN(0. _d 0,d_HEFFbyATMonOCN_open(i,j)) & *areaPDFfac - d_AREAbyICE(I,J)= - & HALF*recip_HH*MIN(0. _d 0,d_HEFFbyATMonOCN_cover(I,J)) + d_AREAbyICE(i,j)= + & HALF*recip_HH*MIN(0. _d 0,d_HEFFbyATMonOCN_cover(i,j)) & *areaPDFfac - d_AREAbyOCN(I,J)= - & HALF*recip_HH*MIN( 0. _d 0,d_HEFFbyOCNonICE(I,J) ) + d_AREAbyOCN(i,j)= + & HALF*recip_HH*MIN( 0. _d 0,d_HEFFbyOCNonICE(i,j) ) & *areaPDFfac #endif /* ALLOW_DIAGNOSTICS */ ENDDO ENDDO #ifdef SEAICE_ITD C transfer 1st category values back into ITD variables - DO J=1,sNy - DO I=1,sNx - HEFFITD(I,J,1,bi,bj)=HEFF(I,J,bi,bj) - AREAITD(I,J,1,bi,bj)=AREA(I,J,bi,bj) - HSNOWITD(I,J,1,bi,bj)=HSNOW(I,J,bi,bj) + DO j=1,sNy + DO i=1,sNx + HEFFITD(i,j,1,bi,bj)=HEFF(i,j,bi,bj) + AREAITD(i,j,1,bi,bj)=AREA(i,j,bi,bj) + HSNOWITD(i,j,1,bi,bj)=HSNOW(i,j,bi,bj) ENDDO ENDDO C now melt ice laterally in all other thickness categories C (areal growth, i.e. new ice formation, only occurrs in 1st category) - IF (SEAICE_multDim .gt. 1) THEN + IF (SEAICE_multDim .GT. 1) THEN DO IT=2,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx - IF (HEFFITD(I,J,IT,bi,bj).LE.ZERO) THEN + DO j=1,sNy + DO i=1,sNx + IF (HEFFITD(i,j,IT,bi,bj).LE.ZERO) THEN C when thickness is zero, area should be zero, too: - AREAITD(I,J,IT,bi,bj)=ZERO + AREAITD(i,j,IT,bi,bj)=ZERO ELSE C tmpscal1 is the minimal ice concentration after lateral melt that will C not lead to an unphysical increase of ice thickness by lateral melt; C estimated as the concentration before thermodynamics scaled by the C ratio of new ice thickness and ice thickness before thermodynamics - IF ( HEFFITDpreTH(I,J,IT).LE.ZERO ) THEN + IF ( HEFFITDpreTH(i,j,IT).LE.ZERO ) THEN tmpscal1=0. _d 0 ELSE - tmpscal1=AREAITDpreTH(I,J,IT)* - & HEFFITD(I,J,IT,bi,bj)/HEFFITDpreTH(I,J,IT) + tmpscal1=AREAITDpreTH(i,j,IT)* + & HEFFITD(i,j,IT,bi,bj)/HEFFITDpreTH(i,j,IT) ENDIF C melt ice laterally based on an average floe sice C following Steele (1992) - AREAITD(I,J,IT,bi,bj) = AREAITD(I,J,IT,bi,bj) - & * (ONE - latMeltFrac(I,J,IT)) + AREAITD(i,j,IT,bi,bj) = AREAITD(i,j,IT,bi,bj) + & * (ONE - latMeltFrac(i,j,IT)) CML not necessary: CML AREAITD(I,J,IT,bi,bj) = max(ZERO,AREAITD(I,J,IT,bi,bj)) C limit area reduction so that actual ice thickness does not increase - AREAITD(I,J,IT,bi,bj) = max(AREAITD(I,J,IT,bi,bj), + AREAITD(i,j,IT,bi,bj) = max(AREAITD(i,j,IT,bi,bj), & tmpscal1) ENDIF #ifdef ALLOW_SITRACER - SItrAREA(I,J,bi,bj,3)=SItrAREA(I,J,bi,bj,3) - & +AREAITD(I,J,IT,bi,bj) + SItrAREA(i,j,bi,bj,3)=SItrAREA(i,j,bi,bj,3) + & +AREAITD(i,j,IT,bi,bj) #endif /* ALLOW_SITRACER */ ENDDO ENDDO @@ -1905,24 +1905,24 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) ENDIF #endif /* SEAICE_ITD */ -#if (defined ALLOW_AUTODIFF_TAMC && defined SEAICE_MODIFY_GROWTH_ADJ) +#if (defined ALLOW_AUTODIFF && defined SEAICE_MODIFY_GROWTH_ADJ) Cgf 'bulk' linearization of area=f(HEFF) IF ( SEAICEadjMODE.GE.1 ) THEN #ifdef SEAICE_ITD DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx - AREAITD(I,J,IT,bi,bj) = AREAITDpreTH(I,J,IT) + 0.1 _d 0 * - & ( HEFFITD(I,J,IT,bi,bj) - HEFFITDpreTH(I,J,IT) ) + DO j=1,sNy + DO i=1,sNx + AREAITD(i,j,IT,bi,bj) = AREAITDpreTH(i,j,IT) + 0.1 _d 0 * + & ( HEFFITD(i,j,IT,bi,bj) - HEFFITDpreTH(i,j,IT) ) ENDDO ENDDO ENDDO #else /* ndef SEAICE_ITD */ - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx C AREA(I,J,bi,bj) = 0.1 _d 0 * HEFF(I,J,bi,bj) - AREA(I,J,bi,bj) = AREApreTH(I,J) + 0.1 _d 0 * - & ( HEFF(I,J,bi,bj) - HEFFpreTH(I,J) ) + AREA(i,j,bi,bj) = AREApreTH(i,j) + 0.1 _d 0 * + & ( HEFF(i,j,bi,bj) - HEFFpreTH(i,j) ) ENDDO ENDDO #endif /* SEAICE_ITD */ @@ -1941,14 +1941,14 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) #if defined ( ALLOW_SITRACER ) && defined ( SEAICE_GREASE ) C convert SItracer 'grease' from grease ice volume back to ratio: C =============================================================== - DO J=1,sNy - DO I=1,sNx - if (HEFF(I,J,bi,bj).GT.siEps) then - SItracer(I,J,bi,bj,iTrGrease) = - & SItracer(I,J,bi,bj,iTrGrease) / HEFF(I,J,bi,bj) - else - SItracer(I,J,bi,bj,iTrGrease) = 0. _d 0 - endif + DO j=1,sNy + DO i=1,sNx + IF (HEFF(i,j,bi,bj).GT.siEps) THEN + SItracer(i,j,bi,bj,iTrGrease) = + & SItracer(i,j,bi,bj,iTrGrease) / HEFF(i,j,bi,bj) + ELSE + SItracer(i,j,bi,bj,iTrGrease) = 0. _d 0 + ENDIF ENDDO ENDDO #endif /* SEAICE_GREASE */ @@ -1972,33 +1972,33 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) CADJ & key = tkey, byte = isbyte # endif /* ALLOW_SALT_PLUME */ # endif /* ALLOW_AUTODIFF_TAMC */ - DO J=1,sNy - DO I=1,sNx - tmpscal1 = d_HEFFbyNEG(I,J,bi,bj) + d_HEFFbyOCNonICE(I,J) + - & d_HEFFbyATMonOCN(I,J) + d_HEFFbyFLOODING(I,J) - & + d_HEFFbySublim(I,J) + DO j=1,sNy + DO i=1,sNx + tmpscal1 = d_HEFFbyNEG(i,j,bi,bj) + d_HEFFbyOCNonICE(i,j) + + & d_HEFFbyATMonOCN(i,j) + d_HEFFbyFLOODING(i,j) + & + d_HEFFbySublim(i,j) #ifdef EXF_SEAICE_FRACTION - & + d_HEFFbyRLX(I,J,bi,bj) + & + d_HEFFbyRLX(i,j,bi,bj) #endif Catn: can not take out more that surface salinity when SSS 0 : m of sea ice that is created IF ( tmpscal1 .GE. 0.0 ) THEN - saltFlux(I,J,bi,bj) = - & HEFFM(I,J,bi,bj)*recip_deltaTtherm - & *SEAICE_saltFrac*salt(I,J,kSurface,bi,bj) + saltFlux(i,j,bi,bj) = + & HEFFM(i,j,bi,bj)*recip_deltaTtherm + & *SEAICE_saltFrac*salt(i,j,kSurface,bi,bj) & *tmpscal1*SEAICE_rhoIce #ifdef ALLOW_SALT_PLUME #ifdef SALT_PLUME_SPLIT_BASIN catn attempt to split East/West basins in Arctic - localSPfrac(I,J) = SPsalFRAC(1) + localSPfrac(i,j) = SPsalFRAC(1) IF ( SaltPlumeSplitBasin ) THEN - localSPfrac(I,J) = SPsalFRAC(2) - IF(YC(I,J,bi,bj).LT. 85.0 .AND. YC(I,J,bi,bj).GT. 71.0 - & .AND. XC(I,J,bi,bj) .LT. -90.0) THEN - localSPfrac(I,J) = SPsalFRAC(1) + localSPfrac(i,j) = SPsalFRAC(2) + IF(YC(i,j,bi,bj).LT. 85.0 .AND. YC(i,j,bi,bj).GT. 71.0 + & .AND. XC(i,j,bi,bj) .LT. -90.0) THEN + localSPfrac(i,j) = SPsalFRAC(1) ENDIF ENDIF #else - localSPfrac(I,J) = SPsalFRAC + localSPfrac(i,j) = SPsalFRAC #endif /* SALT_PLUME_SPLIT_BASIN */ #ifndef SALT_PLUME_IN_LEADS C saltPlumeFlux is defined only during freezing: - saltPlumeFlux(I,J,bi,bj)= - & HEFFM(I,J,bi,bj)*recip_deltaTtherm - & *(ONE-SEAICE_saltFrac)*salt(I,J,kSurface,bi,bj) + saltPlumeFlux(i,j,bi,bj)= + & HEFFM(i,j,bi,bj)*recip_deltaTtherm + & *(ONE-SEAICE_saltFrac)*salt(i,j,kSurface,bi,bj) & *tmpscal1*SEAICE_rhoIce - & *localSPfrac(I,J) + & *localSPfrac(i,j) #endif /* ndef SALT_PLUME_IN_LEADS */ #endif /* ALLOW_SALT_PLUME */ C tmpscal1 < 0 : m of sea ice that is melted ELSE - saltFlux(I,J,bi,bj) = - & HEFFM(I,J,bi,bj)*recip_deltaTtherm - & *HSALT(I,J,bi,bj) + saltFlux(i,j,bi,bj) = + & HEFFM(i,j,bi,bj)*recip_deltaTtherm + & *HSALT(i,j,bi,bj) & *tmpscal1/tmpscal2 #ifdef ALLOW_SALT_PLUME #ifndef SALT_PLUME_IN_LEADS @@ -2094,43 +2094,43 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) C occurs more uniform over grid cell and not inLeads, thus not C participating in pkg/salt_plume. C Note: tmpscal1 is defined only after saltFlux is calculated. - IceGrowthRateInLeads(I,J)=max(0. _d 0,d_HEFFbyATMonOCN(I,J)) - tmpscal1 = IceGrowthRateInLeads(I,J) - leadPlumeFraction(I,J) = - & (ONE + EXP( (SPinflectionPoint - AREApreTH(I,J))*5.0 + IceGrowthRateInLeads(i,j)=max(0. _d 0,d_HEFFbyATMonOCN(i,j)) + tmpscal1 = IceGrowthRateInLeads(i,j) + leadPlumeFraction(i,j) = + & (ONE + EXP( (SPinflectionPoint - AREApreTH(i,j))*5.0 & /(ONE - SPinflectionPoint) ))**(-ONE) - localSPfrac(I,J)=localSPfrac(I,J)*leadPlumeFraction(I,J) + localSPfrac(i,j)=localSPfrac(i,j)*leadPlumeFraction(i,j) IF ( tmpscal1 .GE. 0.0) THEN C saltPlumeFlux is defined only during freezing: - saltPlumeFlux(I,J,bi,bj)= - & HEFFM(I,J,bi,bj)*recip_deltaTtherm - & *(ONE-SEAICE_saltFrac)*salt(I,J,kSurface,bi,bj) + saltPlumeFlux(i,j,bi,bj)= + & HEFFM(i,j,bi,bj)*recip_deltaTtherm + & *(ONE-SEAICE_saltFrac)*salt(i,j,kSurface,bi,bj) & *tmpscal1*SEAICE_rhoIce - & *localSPfrac(I,J) + & *localSPfrac(i,j) ELSE - saltPlumeFlux(I,J,bi,bj) = 0. _d 0 + saltPlumeFlux(i,j,bi,bj) = 0. _d 0 ENDIF #endif /* SALT_PLUME_IN_LEADS */ C if SaltPlumeSouthernOcean=.FALSE. turn off salt plume in Southern Ocean IF ( .NOT. SaltPlumeSouthernOcean ) THEN - IF ( YC(I,J,bi,bj) .LT. 0.0 _d 0 ) + IF ( YC(i,j,bi,bj) .LT. 0.0 _d 0 ) & saltPlumeFlux(i,j,bi,bj) = 0.0 _d 0 ENDIF #endif /* ALLOW_SALT_PLUME */ C update HSALT based on surface saltFlux - HSALT(I,J,bi,bj) = HSALT(I,J,bi,bj) + - & saltFlux(I,J,bi,bj) * SEAICE_deltaTtherm - saltFlux(I,J,bi,bj) = - & saltFlux(I,J,bi,bj) + saltFluxAdjust(I,J,bi,bj) + HSALT(i,j,bi,bj) = HSALT(i,j,bi,bj) + + & saltFlux(i,j,bi,bj) * SEAICE_deltaTtherm + saltFlux(i,j,bi,bj) = + & saltFlux(i,j,bi,bj) + saltFluxAdjust(i,j,bi,bj) ENDDO ENDDO #endif /* SEAICE_VARIABLE_SALINITY */ #ifdef ALLOW_SITRACER - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx C needs to be here to allow use also with LEGACY branch - SItrHEFF(I,J,bi,bj,5)=HEFF(I,J,bi,bj) + SItrHEFF(i,j,bi,bj,5)=HEFF(i,j,bi,bj) ENDDO ENDDO #endif /* ALLOW_SITRACER */ @@ -2145,17 +2145,17 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) #ifdef SEAICE_ITD C compute total of "mult" fluxes for ocean forcing - DO J=1,sNy - DO I=1,sNx - a_QbyATM_cover(I,J) = 0.0 _d 0 - r_QbyATM_cover(I,J) = 0.0 _d 0 - a_QSWbyATM_cover(I,J) = 0.0 _d 0 - r_FWbySublim(I,J) = 0.0 _d 0 + DO j=1,sNy + DO i=1,sNx + a_QbyATM_cover(i,j) = 0.0 _d 0 + r_QbyATM_cover(i,j) = 0.0 _d 0 + a_QSWbyATM_cover(i,j) = 0.0 _d 0 + r_FWbySublim(i,j) = 0.0 _d 0 ENDDO ENDDO DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx C if fluxes in W/m^2 then use: c a_QbyATM_cover(I,J)=a_QbyATM_cover(I,J) c & + a_QbyATMmult_cover(I,J,IT) * areaFracFactor(I,J,IT) @@ -2166,14 +2166,14 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) c r_FWbySublim(I,J)=r_FWbySublim(I,J) c & + r_FWbySublimMult(I,J,IT) * areaFracFactor(I,J,IT) C if fluxes in effective ice meters, i.e. ice volume per area, then use: - a_QbyATM_cover(I,J)=a_QbyATM_cover(I,J) - & + a_QbyATMmult_cover(I,J,IT) - r_QbyATM_cover(I,J)=r_QbyATM_cover(I,J) - & + r_QbyATMmult_cover(I,J,IT) - a_QSWbyATM_cover(I,J)=a_QSWbyATM_cover(I,J) - & + a_QSWbyATMmult_cover(I,J,IT) - r_FWbySublim(I,J)=r_FWbySublim(I,J) - & + r_FWbySublimMult(I,J,IT) + a_QbyATM_cover(i,j)=a_QbyATM_cover(i,j) + & + a_QbyATMmult_cover(i,j,IT) + r_QbyATM_cover(i,j)=r_QbyATM_cover(i,j) + & + r_QbyATMmult_cover(i,j,IT) + a_QSWbyATM_cover(i,j)=a_QSWbyATM_cover(i,j) + & + a_QSWbyATMmult_cover(i,j,IT) + r_FWbySublim(i,j)=r_FWbySublim(i,j) + & + r_FWbySublimMult(i,j,IT) ENDDO ENDDO ENDDO @@ -2185,35 +2185,35 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) CADJ STORE d_hsnwbyocnonsnw = comlev1_bibj,key=tkey,byte=isbyte #endif /* ALLOW_AUTODIFF_TAMC */ - DO J=1,sNy - DO I=1,sNx - QNET(I,J,bi,bj) = r_QbyATM_cover(I,J) + r_QbyATM_open(I,J) - & + a_QSWbyATM_cover(I,J) - & - ( d_HEFFbyOCNonICE(I,J) - & + d_HSNWbyOCNonSNW(I,J)*SNOW2ICE - & + d_HEFFbyNEG(I,J,bi,bj) + DO j=1,sNy + DO i=1,sNx + QNET(i,j,bi,bj) = r_QbyATM_cover(i,j) + r_QbyATM_open(i,j) + & + a_QSWbyATM_cover(i,j) + & - ( d_HEFFbyOCNonICE(i,j) + & + d_HSNWbyOCNonSNW(i,j)*SNOW2ICE + & + d_HEFFbyNEG(i,j,bi,bj) #ifdef EXF_SEAICE_FRACTION - & + d_HEFFbyRLX(I,J,bi,bj) + & + d_HEFFbyRLX(i,j,bi,bj) #endif - & + d_HSNWbyNEG(I,J,bi,bj)*SNOW2ICE + & + d_HSNWbyNEG(i,j,bi,bj)*SNOW2ICE & - convertPRECIP2HI * - & snowPrecip(i,j,bi,bj) * (ONE-AREApreTH(I,J)) - & ) * HEFFM(I,J,bi,bj) + & snowPrecip(i,j,bi,bj) * (ONE-AREApreTH(i,j)) + & ) * HEFFM(i,j,bi,bj) ENDDO ENDDO - DO J=1,sNy - DO I=1,sNx - QSW(I,J,bi,bj) = a_QSWbyATM_cover(I,J) + a_QSWbyATM_open(I,J) + DO j=1,sNy + DO i=1,sNx + QSW(i,j,bi,bj) = a_QSWbyATM_cover(i,j) + a_QSWbyATM_open(i,j) ENDDO ENDDO C switch heat fluxes from 'effective' ice meters to W/m2 C ====================================================== - DO J=1,sNy - DO I=1,sNx - QNET(I,J,bi,bj) = QNET(I,J,bi,bj)*convertHI2Q - QSW(I,J,bi,bj) = QSW(I,J,bi,bj)*convertHI2Q + DO j=1,sNy + DO i=1,sNx + QNET(i,j,bi,bj) = QNET(i,j,bi,bj)*convertHI2Q + QSW(i,j,bi,bj) = QSW(i,j,bi,bj)*convertHI2Q ENDDO ENDDO @@ -2242,18 +2242,18 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) C between ice and ocean boundary condition can result in all cases. C Below we therefore anticipate on external_forcing_surf.F C to diagnoze and/or apply the correction to QNET. - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx catn: initialize tmpscal1 tmpscal1 = ZERO C ocean water going to ice/snow, in precip units - tmpscal3=rhoConstFresh*HEFFM(I,J,bi,bj)*( - & ( d_HSNWbyATMonSNW(I,J)*SNOW2ICE - & + d_HSNWbyOCNonSNW(I,J)*SNOW2ICE - & + d_HEFFbyOCNonICE(I,J) + d_HEFFbyATMonOCN(I,J) - & + d_HEFFbyNEG(I,J,bi,bj)+ d_HSNWbyNEG(I,J,bi,bj)*SNOW2ICE ) + tmpscal3=rhoConstFresh*HEFFM(i,j,bi,bj)*( + & ( d_HSNWbyATMonSNW(i,j)*SNOW2ICE + & + d_HSNWbyOCNonSNW(i,j)*SNOW2ICE + & + d_HEFFbyOCNonICE(i,j) + d_HEFFbyATMonOCN(i,j) + & + d_HEFFbyNEG(i,j,bi,bj)+ d_HSNWbyNEG(i,j,bi,bj)*SNOW2ICE ) & * convertHI2PRECIP - & - snowPrecip(i,j,bi,bj) * (ONE-AREApreTH(I,J)) ) + & - snowPrecip(i,j,bi,bj) * (ONE-AREApreTH(i,j)) ) C factor in the heat content as done in external_forcing_surf.F IF ( (temp_EvPrRn.NE.UNSET_RL).AND. & useRealFreshWaterFlux.AND.(nonlinFreeSurf.NE.0) ) THEN @@ -2262,21 +2262,21 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) ELSEIF ( (temp_EvPrRn.EQ.UNSET_RL).AND. & useRealFreshWaterFlux.AND.(nonlinFreeSurf.NE.0) ) THEN tmpscal1 = - tmpscal3* - & HeatCapacity_Cp * theta(I,J,kSurface,bi,bj) + & HeatCapacity_Cp * theta(i,j,kSurface,bi,bj) ELSEIF ( (temp_EvPrRn.NE.UNSET_RL) ) THEN tmpscal1 = - tmpscal3*HeatCapacity_Cp* - & ( temp_EvPrRn - theta(I,J,kSurface,bi,bj) ) + & ( temp_EvPrRn - theta(i,j,kSurface,bi,bj) ) ELSEIF ( (temp_EvPrRn.EQ.UNSET_RL) ) THEN tmpscal1 = ZERO ENDIF #ifdef ALLOW_DIAGNOSTICS C in all cases, diagnoze the boundary condition mismatch to SIaaflux - DIAGarrayA(I,J)=tmpscal1 + DIAGarrayA(i,j)=tmpscal1 #endif C remove the mismatch when real fresh water is exchanged (at 0degC here) IF ( useRealFreshWaterFlux.AND.(nonlinFreeSurf.GT.0) & .AND.SEAICEheatConsFix ) - & QNET(I,J,bi,bj)=QNET(I,J,bi,bj)+tmpscal1 + & QNET(i,j,bi,bj)=QNET(i,j,bi,bj)+tmpscal1 ENDDO ENDDO #ifdef ALLOW_DIAGNOSTICS @@ -2289,8 +2289,8 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) C compute the net heat flux, incl. adv. by water, entering ocean+ice C =================================================================== - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx Cgf 1) SIatmQnt (analogous to qnet; excl. adv. by water exch.) CML If I consider the atmosphere above the ice, the surface flux CML which is relevant for the air temperature dT/dt Eq @@ -2299,24 +2299,24 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) CML since it does not contribute to heating the air. CML So this diagnostic is only good for heat budget calculations within CML the ice-ocean system. - SIatmQnt(I,J,bi,bj) = - & HEFFM(I,J,bi,bj)*convertHI2Q*( - & a_QSWbyATM_cover(I,J) + - & a_QbyATM_cover(I,J) + a_QbyATM_open(I,J) ) + SIatmQnt(i,j,bi,bj) = + & HEFFM(i,j,bi,bj)*convertHI2Q*( + & a_QSWbyATM_cover(i,j) + + & a_QbyATM_cover(i,j) + a_QbyATM_open(i,j) ) Cgf 2) SItflux (analogous to tflux; includes advection by water C exchanged between atmosphere and ocean+ice) C solid water going to atm, in precip units - tmpscal1 = rhoConstFresh*HEFFM(I,J,bi,bj) - & * convertHI2PRECIP * ( - d_HSNWbyRAIN(I,J)*SNOW2ICE - & + a_FWbySublim(I,J) - r_FWbySublim(I,J) ) + tmpscal1 = rhoConstFresh*HEFFM(i,j,bi,bj) + & * convertHI2PRECIP * ( - d_HSNWbyRAIN(i,j)*SNOW2ICE + & + a_FWbySublim(i,j) - r_FWbySublim(i,j) ) C liquid water going to atm, in precip units - tmpscal2=rhoConstFresh*HEFFM(I,J,bi,bj)* - & ( ( EVAP(I,J,bi,bj)-PRECIP(I,J,bi,bj) ) - & * ( ONE - AREApreTH(I,J) ) + tmpscal2=rhoConstFresh*HEFFM(i,j,bi,bj)* + & ( ( EVAP(i,j,bi,bj)-PRECIP(i,j,bi,bj) ) + & * ( ONE - AREApreTH(i,j) ) #ifdef ALLOW_RUNOFF - & - RUNOFF(I,J,bi,bj) + & - RUNOFF(i,j,bi,bj) #endif /* ALLOW_RUNOFF */ - & + ( d_HFRWbyRAIN(I,J) + r_FWbySublim(I,J) ) + & + ( d_HFRWbyRAIN(i,j) + r_FWbySublim(i,j) ) & *convertHI2PRECIP ) C In real fresh water flux + nonlinFS, we factor in the advected specific C energy (referenced to 0 for 0deC liquid water). In virtual salt flux or @@ -2330,14 +2330,14 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) ELSEIF ( (temp_EvPrRn.EQ.UNSET_RL).AND. & useRealFreshWaterFlux.AND.(nonlinFreeSurf.NE.0) ) THEN tmpscal2= - tmpscal2* - & ( ZERO + HeatCapacity_Cp * theta(I,J,kSurface,bi,bj) ) + & ( ZERO + HeatCapacity_Cp * theta(i,j,kSurface,bi,bj) ) ELSEIF ( (temp_EvPrRn.NE.UNSET_RL) ) THEN tmpscal2= - tmpscal2*HeatCapacity_Cp* - & ( temp_EvPrRn - theta(I,J,kSurface,bi,bj) ) + & ( temp_EvPrRn - theta(i,j,kSurface,bi,bj) ) ELSEIF ( (temp_EvPrRn.EQ.UNSET_RL) ) THEN tmpscal2= ZERO ENDIF - SItflux(I,J,bi,bj)= SIatmQnt(I,J,bi,bj)-tmpscal1-tmpscal2 + SItflux(i,j,bi,bj)= SIatmQnt(i,j,bi,bj)-tmpscal1-tmpscal2 ENDDO ENDDO @@ -2345,43 +2345,43 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) C the ocean, accounting for fresh/salt water stocks. C ================================================== - DO J=1,sNy - DO I=1,sNx - tmpscal1= d_HSNWbyATMonSNW(I,J)*SNOW2ICE - & +d_HFRWbyRAIN(I,J) - & +d_HSNWbyOCNonSNW(I,J)*SNOW2ICE - & +d_HEFFbyOCNonICE(I,J) - & +d_HEFFbyATMonOCN(I,J) - & +d_HEFFbyNEG(I,J,bi,bj) + DO j=1,sNy + DO i=1,sNx + tmpscal1= d_HSNWbyATMonSNW(i,j)*SNOW2ICE + & +d_HFRWbyRAIN(i,j) + & +d_HSNWbyOCNonSNW(i,j)*SNOW2ICE + & +d_HEFFbyOCNonICE(i,j) + & +d_HEFFbyATMonOCN(i,j) + & +d_HEFFbyNEG(i,j,bi,bj) #ifdef EXF_SEAICE_FRACTION - & +d_HEFFbyRLX(I,J,bi,bj) + & +d_HEFFbyRLX(i,j,bi,bj) #endif - & +d_HSNWbyNEG(I,J,bi,bj)*SNOW2ICE + & +d_HSNWbyNEG(i,j,bi,bj)*SNOW2ICE C If r_FWbySublim>0, then it is evaporated from ocean. - & +r_FWbySublim(I,J) - EmPmR(I,J,bi,bj) = HEFFM(I,J,bi,bj)*( - & ( EVAP(I,J,bi,bj)-PRECIP(I,J,bi,bj) ) - & * ( ONE - AREApreTH(I,J) ) + & +r_FWbySublim(i,j) + EmPmR(i,j,bi,bj) = HEFFM(i,j,bi,bj)*( + & ( EVAP(i,j,bi,bj)-PRECIP(i,j,bi,bj) ) + & * ( ONE - AREApreTH(i,j) ) #ifdef ALLOW_RUNOFF - & - RUNOFF(I,J,bi,bj) + & - RUNOFF(i,j,bi,bj) #endif /* ALLOW_RUNOFF */ & + tmpscal1*convertHI2PRECIP & )*rhoConstFresh #ifdef SEAICE_ITD C beware of the sign: fw2ObyRidge is snow mass moved into the ocean C by ridging, so requires a minus sign - & - fw2ObyRidge(I,J,bi,bj)*recip_deltaTtherm - & * HEFFM(I,J,bi,bj) + & - fw2ObyRidge(i,j,bi,bj)*recip_deltaTtherm + & * HEFFM(i,j,bi,bj) #endif /* SEAICE_ITD */ C and the flux leaving/entering the ocean+ice - SIatmFW(I,J,bi,bj) = HEFFM(I,J,bi,bj)*( - & EVAP(I,J,bi,bj)*( ONE - AREApreTH(I,J) ) - & - PRECIP(I,J,bi,bj) + SIatmFW(i,j,bi,bj) = HEFFM(i,j,bi,bj)*( + & EVAP(i,j,bi,bj)*( ONE - AREApreTH(i,j) ) + & - PRECIP(i,j,bi,bj) #ifdef ALLOW_RUNOFF - & - RUNOFF(I,J,bi,bj) + & - RUNOFF(i,j,bi,bj) #endif /* ALLOW_RUNOFF */ & )*rhoConstFresh - & + a_FWbySublim(I,J) * SEAICE_rhoIce * recip_deltaTtherm + & + a_FWbySublim(i,j) * SEAICE_rhoIce * recip_deltaTtherm ENDDO ENDDO @@ -2403,15 +2403,15 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) #endif /* ALLOW_AUTODIFF_TAMC */ IF ( useRealFreshWaterFlux ) THEN - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx #ifdef SEAICE_CAP_ICELOAD - tmpscal1 = HEFF(I,J,bi,bj)*SEAICE_rhoIce - & + HSNOW(I,J,bi,bj)*SEAICE_rhoSnow + tmpscal1 = HEFF(i,j,bi,bj)*SEAICE_rhoIce + & + HSNOW(i,j,bi,bj)*SEAICE_rhoSnow tmpscal2 = MIN(tmpscal1,heffTooHeavy*rhoConst) #else - tmpscal2 = HEFF(I,J,bi,bj)*SEAICE_rhoIce - & + HSNOW(I,J,bi,bj)*SEAICE_rhoSnow + tmpscal2 = HEFF(i,j,bi,bj)*SEAICE_rhoIce + & + HSNOW(i,j,bi,bj)*SEAICE_rhoSnow #endif sIceLoad(i,j,bi,bj) = tmpscal2 ENDDO @@ -2438,7 +2438,7 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) DO j=1,sNy DO i=1,sNx FWF2HFsiTile(bi,bj) = FWF2HFsiTile(bi,bj) + - & HeatCapacity_Cp * theta(I,J,kSurface,bi,bj) + & HeatCapacity_Cp * theta(i,j,kSurface,bi,bj) & * rA(i,j,bi,bj) * maskInC(i,j,bi,bj) ENDDO ENDDO @@ -2491,43 +2491,43 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) CALL DIAGNOSTICS_SCALE_FILL(r_QbyATM_cover, & convertHI2Q,1, 'SIqneti ',0,1,3,bi,bj,myThid) C three that actually need intermediate storage - DO J=1,sNy - DO I=1,sNx - DIAGarrayA(I,J) = HEFFM(I,J,bi,bj) - & * d_HSNWbyRAIN(I,J)*SEAICE_rhoSnow*recip_deltaTtherm - DIAGarrayB(I,J) = AREA(I,J,bi,bj)-AREApreTH(I,J) + DO j=1,sNy + DO i=1,sNx + DIAGarrayA(i,j) = HEFFM(i,j,bi,bj) + & * d_HSNWbyRAIN(i,j)*SEAICE_rhoSnow*recip_deltaTtherm + DIAGarrayB(i,j) = AREA(i,j,bi,bj)-AREApreTH(i,j) ENDDO ENDDO CALL DIAGNOSTICS_FILL(DIAGarrayA, & 'SIsnPrcp',0,1,3,bi,bj,myThid) CALL DIAGNOSTICS_SCALE_FILL(DIAGarrayB, & tmpscal1,1,'SIdA ',0,1,3,bi,bj,myThid) - DO J=1,sNy - DO I=1,sNx - DIAGarrayB(I,J) = HEFFM(I,J,bi,bj) * - & a_FWbySublim(I,J) * SEAICE_rhoIce * recip_deltaTtherm + DO j=1,sNy + DO i=1,sNx + DIAGarrayB(i,j) = HEFFM(i,j,bi,bj) * + & a_FWbySublim(i,j) * SEAICE_rhoIce * recip_deltaTtherm ENDDO ENDDO CALL DIAGNOSTICS_FILL(DIAGarrayB, & 'SIfwSubl',0,1,3,bi,bj,myThid) C - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx C the actual Freshwater flux of sublimated ice, >0 decreases ice - DIAGarrayA(I,J) = HEFFM(I,J,bi,bj) - & * (a_FWbySublim(I,J)-r_FWbySublim(I,J)) + DIAGarrayA(i,j) = HEFFM(i,j,bi,bj) + & * (a_FWbySublim(i,j)-r_FWbySublim(i,j)) & * SEAICE_rhoIce * recip_deltaTtherm C the residual Freshwater flux of sublimated ice - DIAGarrayC(I,J) = HEFFM(I,J,bi,bj) - & * r_FWbySublim(I,J) + DIAGarrayC(i,j) = HEFFM(i,j,bi,bj) + & * r_FWbySublim(i,j) & * SEAICE_rhoIce * recip_deltaTtherm C the latent heat flux - tmpscal1= EVAP(I,J,bi,bj)*( ONE - AREApreTH(I,J) ) - & + r_FWbySublim(I,J)*convertHI2PRECIP - tmpscal2= ( a_FWbySublim(I,J)-r_FWbySublim(I,J) ) + tmpscal1= EVAP(i,j,bi,bj)*( ONE - AREApreTH(i,j) ) + & + r_FWbySublim(i,j)*convertHI2PRECIP + tmpscal2= ( a_FWbySublim(i,j)-r_FWbySublim(i,j) ) & * convertHI2PRECIP tmpscal3= SEAICE_lhEvap+SEAICE_lhFusion - DIAGarrayB(I,J) = -HEFFM(I,J,bi,bj)*rhoConstFresh + DIAGarrayB(i,j) = -HEFFM(i,j,bi,bj)*rhoConstFresh & * ( tmpscal1*SEAICE_lhEvap + tmpscal2*tmpscal3 ) ENDDO ENDDO @@ -2599,10 +2599,10 @@ SUBROUTINE SEAICE_GROWTH( myTime, myIter, myThid ) ELSEIF ( (temp_EvPrRn.EQ.UNSET_RL).AND. & useRealFreshWaterFlux.AND.(nonlinFreeSurf.NE.0) ) THEN tmpscal1= - & ( ZERO + HeatCapacity_Cp * theta(I,J,kSurface,bi,bj) ) + & ( ZERO + HeatCapacity_Cp * theta(i,j,kSurface,bi,bj) ) ELSEIF ( (temp_EvPrRn.NE.UNSET_RL) ) THEN tmpscal1= - & HeatCapacity_Cp*(temp_EvPrRn - theta(I,J,kSurface,bi,bj)) + & HeatCapacity_Cp*(temp_EvPrRn - theta(i,j,kSurface,bi,bj)) ELSE tmpscal1=ZERO ENDIF diff --git a/pkg/seaice/seaice_growth_adx.F b/pkg/seaice/seaice_growth_adx.F index 98248921f3..b80600a724 100644 --- a/pkg/seaice/seaice_growth_adx.F +++ b/pkg/seaice/seaice_growth_adx.F @@ -146,7 +146,12 @@ SUBROUTINE SEAICE_GROWTH_ADX( myTime, myIter, myThid ) _RL F_ia_net_mult (1:sNx,1:sNy,nITD) _RL F_ia_mult (1:sNx,1:sNy,nITD) _RL QSWI_mult (1:sNx,1:sNy,nITD) + +C Variables related to FWsublim are dummies required for call +C to seaice_solve4temp subroutine and are not used afterwards +C in this routine (by choice). _RL FWsublim_mult (1:sNx,1:sNy,nITD) + _RL FWsublim (1:sNx,1:sNy) #ifdef ALLOW_DIAGNOSTICS C Helper variables for diagnostics @@ -182,9 +187,9 @@ SUBROUTINE SEAICE_GROWTH_ADX( myTime, myIter, myThid ) _RL EnergyInNewTotalIceVolume (1:sNx,1:sNy) _RL NetEnergyFluxOutOfOcean (1:sNx,1:sNy) -CAB Terms for closing the budget +C Local arrays for diagnostics _RL SItflux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) - _RL SIaaflux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RL SIeprflx (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL SIatmFW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) CAB these two terms are placeholders for extra bits from advection, C used in budget @@ -272,8 +277,6 @@ SUBROUTINE SEAICE_GROWTH_ADX( myTime, myIter, myThid ) C F_mi - heat flux from ocean to the ice (W/m^2) _RL F_mi (1:sNx,1:sNy) - _RL FWsublim (1:sNx,1:sNy) - C S_a_from_IGROW : d(AREA)/dt [from ice growth rate from open water fluxes] _RL S_a_IGROW (1:sNx,1:sNy) @@ -422,6 +425,7 @@ SUBROUTINE SEAICE_GROWTH_ADX( myTime, myIter, myThid ) leadPlumeFraction (I,J) = 0. _d 0 saltPlumeFlux (I,J,bi,bj) = 0. _d 0 #endif + SIeprflx(I,J,bi,bj) = 0. _d 0 ENDDO ENDDO @@ -776,7 +780,6 @@ SUBROUTINE SEAICE_GROWTH_ADX( myTime, myIter, myThid ) c Snow melt and melt rate [m] (actual snow thickness) SnowMeltFromSurface(I,J) = hsnowActual(I,J) -c SnowMeltRateFromSurface(I,J) = SnowMeltRateFromSurface(I,J) = & SnowMeltFromSurface(I,J) * recip_deltaTtherm @@ -1240,18 +1243,24 @@ SUBROUTINE SEAICE_GROWTH_ADX( myTime, myIter, myThid ) CAB Budget test , adding the energy stored in snow melt to qnet C Moved bunch of these to line 780 +catn Everything down here is diagnostic, and should reflect what we +catn calculated above and passed out to the ocean instead of computed +catn again. Otherwise we can end up with mismatch when we modify above +catn and not replicate down here. SItflux(I,J,bi,bj) = 0.0 + - & (AREApreTH(I,J) - & *(F_ia_net(I,J) - & + F_io_net(I,J) + QSWI(I,J)) - & +( ONE - AREApreTH(I,J)) * F_ao(I,J)) +c & (AREApreTH(I,J) +c & *(F_ia_net(I,J) +c & + F_io_net(I,J) + QSWI(I,J)) +c & +( ONE - AREApreTH(I,J)) * F_ao(I,J)) + & NetEnergyFluxOutOfOcean(I,J)*recip_deltaTtherm & *HEFFM(I,J,bi,bj) & +(SIheffNeg(I,J,bi,bj)*recip_QI & +( SIhsnwNeg(I,J,bi,bj) - ActualNewTotalSnowMelt(I,J) & + SnowAccOverIce(I,J) )*recip_QS) & * recip_deltaTtherm * HEFFM(I,J,bi,bj) - SIaaflux(I,J,bi,bj) = -EmPmR(I,J,bi,bj) +C Heat flux term associated with EmPmR: + SIeprflx(I,J,bi,bj) = -EmPmR(I,J,bi,bj) & * HeatCapacity_Cp *theta(I,J,kSurface,bi,bj) SIatmFW(I,J,bi,bj) = HEFFM(I,J,bi,bj)*( @@ -1261,8 +1270,6 @@ SUBROUTINE SEAICE_GROWTH_ADX( myTime, myIter, myThid ) & - RUNOFF(I,J,bi,bj) #endif /* ALLOW_RUNOFF */ & )*rhoConstFresh - & + FWsublim(i,j)* SEAICE_rhoIce * recip_deltaTtherm -CAB ENDDO ENDDO @@ -1449,7 +1456,7 @@ SUBROUTINE SEAICE_GROWTH_ADX( myTime, myIter, myThid ) CALL DIAGNOSTICS_FILL(SItflux, 'SItflux ',0,1,0,1,1,myThid) - CALL DIAGNOSTICS_FILL(SIaaflux,'SIaaflux',0,1,0,1,1,myThid) + CALL DIAGNOSTICS_FILL(SIeprflx,'SIeprflx',0,1,0,1,1,myThid) tmpscal1= - 1. _d 0 CALL DIAGNOSTICS_SCALE_FILL(SIatmFW, diff --git a/pkg/seaice/seaice_lsr.F b/pkg/seaice/seaice_lsr.F index 863b44434b..6609000902 100644 --- a/pkg/seaice/seaice_lsr.F +++ b/pkg/seaice/seaice_lsr.F @@ -175,7 +175,7 @@ SUBROUTINE SEAICE_LSR( myTime, myIter, myThid ) C recip_deltaT = 1. _d 0 / SEAICE_deltaTdyn -#ifdef ALLOW_AUTODIFF_TAMC +#ifdef ALLOW_AUTODIFF cph break artificial dependencies DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) @@ -934,7 +934,7 @@ SUBROUTINE SEAICE_LSR( myTime, myIter, myThid ) & - (uIce(i,j,bi,bj)+uIce(i+1,j,bi,bj)) )**2 & + ( (vIceNm1(i,j,bi,bj)+vIceNm1(i,j+1,bi,bj)) & - (vIce(i,j,bi,bj)+vIce(i,j+1,bi,bj)) )**2 ) - IF ( area(i,j,bi,bj) .gt. 0.5 _d 0 ) THEN + IF ( area(i,j,bi,bj) .GT. 0.5 _d 0 ) THEN EKnorm = EKnorm + 0.5 _d 0 * heff(i,j,bi,bj) * & ( ( (uIce(i,j,bi,bj)+uIce(i+1,j,bi,bj)) )**2 & + ( (vIce(i,j,bi,bj)+vIce(i,j+1,bi,bj)) )**2 ) @@ -947,11 +947,11 @@ SUBROUTINE SEAICE_LSR( myTime, myIter, myThid ) _GLOBAL_SUM_RL( resnorm, myThid ) _GLOBAL_SUM_RL( EKnorm, myThid ) _GLOBAL_SUM_RL( counter, myThid ) - IF ( counter .gt. 0. _d 0 ) EKnorm = EKnorm/counter + IF ( counter .GT. 0. _d 0 ) EKnorm = EKnorm/counter _BEGIN_MASTER( myThid ) WRITE(standardMessageUnit,'(A,I7,1X,2E22.14)') & 'S/R SEAICE_LSR: IPSEUDO, RESNORM, EKNORM = ', - & ipass, sqrt(resnorm), EKnorm + & ipass, SQRT(resnorm), EKnorm _END_MASTER( myThid ) ENDIF #endif /* SEAICE_ALLOW_CHECK_LSR_CONVERGENCE */ @@ -1348,7 +1348,7 @@ SUBROUTINE SEAICE_LSR_CALC_COEFFS( BU(i,j,bi,bj) = BU(i,j,bi,bj) * recip_rAw(i,j,bi,bj) & + seaiceMaskU(i,j,bi,bj) * & ( bdfAlphaOverDt*seaiceMassU(i,j,bi,bj) - & + 0.5 _d 0 * ( dragSym(i, J,bi,bj) + & + 0.5 _d 0 * ( dragSym(i, j,bi,bj) & + dragSym(i-1,j,bi,bj) )*areaW(i,j) & ) uRt1(i,j,bi,bj) = uRt1(i,j,bi,bj) * recip_rAw(i,j,bi,bj) @@ -1816,12 +1816,12 @@ SUBROUTINE SEAICE_LSR_TRIDIAGU( ENDDO CADJ loop = sequential DO i=iMin,iMax-1 - iM=sNx-I + iM=sNx-i DO j=jMinLoc,jMax,jStep #else CADJ loop = sequential DO i=iMin,iMax-1 - iM=sNx-I + iM=sNx-i #endif /* SEAICE_VECTORIZE_LSR */ URT(iM,j)=URT(iM,j)-CUU(iM,j)*URT(iM+1,j) ENDDO diff --git a/pkg/seaice/seaice_model.F b/pkg/seaice/seaice_model.F index 28790815e0..4b205e90a1 100644 --- a/pkg/seaice/seaice_model.F +++ b/pkg/seaice/seaice_model.F @@ -1,4 +1,7 @@ #include "SEAICE_OPTIONS.h" +#ifdef ALLOW_EXF +# include "EXF_OPTIONS.h" +#endif #ifdef ALLOW_AUTODIFF # include "AUTODIFF_OPTIONS.h" #endif @@ -37,7 +40,6 @@ SUBROUTINE SEAICE_MODEL( myTime, myIter, myThid ) #include "SEAICE.h" #include "SEAICE_TRACER.h" #ifdef ALLOW_EXF -# include "EXF_OPTIONS.h" # include "EXF_FIELDS.h" #endif #ifdef ALLOW_AUTODIFF_TAMC @@ -124,7 +126,7 @@ SUBROUTINE SEAICE_MODEL( myTime, myIter, myThid ) ENDIF #endif /* ALLOW_EXF */ -#ifdef ALLOW_AUTODIFF_TAMC +#ifdef ALLOW_AUTODIFF DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) DO j=1-OLy,sNy+OLy @@ -140,6 +142,8 @@ SUBROUTINE SEAICE_MODEL( myTime, myIter, myThid ) ENDDO ENDDO ENDDO +#endif /* ALLOW_AUTODIFF */ +#ifdef ALLOW_AUTODIFF_TAMC CADJ STORE heff = comlev1, key=ikey_dynamics, kind=isbyte CADJ STORE area = comlev1, key=ikey_dynamics, kind=isbyte CADJ STORE hsnow = comlev1, key=ikey_dynamics, kind=isbyte diff --git a/pkg/seaice/seaice_readparms.F b/pkg/seaice/seaice_readparms.F index a9b68e25a1..4d8c8c15a4 100644 --- a/pkg/seaice/seaice_readparms.F +++ b/pkg/seaice/seaice_readparms.F @@ -87,6 +87,7 @@ SUBROUTINE SEAICE_READPARMS( myThid ) CHARACTER*(MAX_LEN_MBUF) IceAgeFile, IceAgeTrFile(4) _RL SEAICE_abEps LOGICAL SEAICEuseAB2 +#ifdef ALLOW_COST C former ALLOW_SEAICE_COST_SMR_AREA related flags _RL mult_smrarea _RL mult_smrsst @@ -103,6 +104,7 @@ SUBROUTINE SEAICE_READPARMS( myThid ) _RL smrareaperiod _RL SEAICE_clamp_salt _RL SEAICE_clamp_theta +#endif /* ALLOW_COST */ C-- SEAICE parameters NAMELIST /SEAICE_PARM01/ @@ -1332,7 +1334,7 @@ SUBROUTINE SEAICE_READPARMS( myThid ) & 'is no longer allowed in file "data.seaice"' CALL PRINT_ERROR( msgBuf, myThid ) ENDIF -#endif +#endif /* ALLOW_COST */ IF ( nRetired .GT. 0 ) THEN WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: ', & 'Error reading parameter file "data.seaice"' diff --git a/pkg/seaice/seaice_reg_ridge.F b/pkg/seaice/seaice_reg_ridge.F index dd8388cb9b..96ca67a11d 100644 --- a/pkg/seaice/seaice_reg_ridge.F +++ b/pkg/seaice/seaice_reg_ridge.F @@ -91,16 +91,16 @@ SUBROUTINE SEAICE_REG_RIDGE( myTime, myIter, myThid ) tkey = bi + (bj-1)*nSx + (ikey_dynamics-1)*nSx*nSy #endif /* ALLOW_AUTODIFF_TAMC */ - DO J=1-OLy,sNy+OLy - DO I=1-OLx,sNx+OLx - d_HEFFbyNEG(I,J,bi,bj) = 0.0 _d 0 - d_HSNWbyNEG(I,J,bi,bj) = 0.0 _d 0 + DO j=1-OLy,sNy+OLy + DO i=1-OLx,sNx+OLx + d_HEFFbyNEG(i,j,bi,bj) = 0.0 _d 0 + d_HSNWbyNEG(i,j,bi,bj) = 0.0 _d 0 #ifdef EXF_SEAICE_FRACTION - d_AREAbyRLX(I,J,bi,bj) = 0.0 _d 0 - d_HEFFbyRLX(I,J,bi,bj) = 0.0 _d 0 + d_AREAbyRLX(i,j,bi,bj) = 0.0 _d 0 + d_HEFFbyRLX(i,j,bi,bj) = 0.0 _d 0 #endif /* EXF_SEAICE_FRACTION */ #ifdef SEAICE_VARIABLE_SALINITY - saltFluxAdjust(I,J,bi,bj) = 0.0 _d 0 + saltFluxAdjust(i,j,bi,bj) = 0.0 _d 0 #endif /* SEAICE_VARIABLE_SALINITY */ ENDDO ENDDO @@ -109,7 +109,7 @@ SUBROUTINE SEAICE_REG_RIDGE( myTime, myIter, myThid ) C ========== PART 1: treat pathological cases (post advdiff) ========== C ===================================================================== -#if (defined ALLOW_AUTODIFF_TAMC && defined SEAICE_MODIFY_GROWTH_ADJ) +#if (defined ALLOW_AUTODIFF && defined SEAICE_MODIFY_GROWTH_ADJ) Cgf no dependency through pathological cases treatment IF ( SEAICEadjMODE.EQ.0 ) THEN #endif @@ -119,26 +119,26 @@ SUBROUTINE SEAICE_REG_RIDGE( myTime, myIter, myThid ) CADJ STORE area(:,:,bi,bj) = comlev1_bibj, key = tkey,byte=isbyte C-- (0) relax sea ice concentration towards observation IF ( SEAICE_tauAreaObsRelax .GT. zeroRL ) THEN - DO J=1,sNy - DO I=1,sNx - IF ( exf_iceFraction(I,J,bi,bj).GT.AREA(I,J,bi,bj) ) THEN + DO j=1,sNy + DO i=1,sNx + IF ( exf_iceFraction(i,j,bi,bj).GT.AREA(i,j,bi,bj) ) THEN d_AREAbyRLX(i,j,bi,bj) = & SEAICE_deltaTtherm/SEAICE_tauAreaObsRelax - & * (exf_iceFraction(I,J,bi,bj) - AREA(I,J,bi,bj)) + & * (exf_iceFraction(i,j,bi,bj) - AREA(i,j,bi,bj)) ENDIF - IF ( exf_iceFraction(I,J,bi,bj).GT.zeroRS .AND. - & AREA(I,J,bi,bj).EQ.0. _d 0) THEN + IF ( exf_iceFraction(i,j,bi,bj).GT.zeroRS .AND. + & AREA(i,j,bi,bj).EQ.0. _d 0) THEN C d_HEFFbyRLX(i,j,bi,bj) = 1. _d 1 * siEps * d_AREAbyRLX(i,j,bi,bj) d_HEFFbyRLX(i,j,bi,bj) = 1. _d 1 * siEps ENDIF #ifdef SEAICE_ITD - AREAITD(I,J,1,bi,bj) = AREAITD(I,J,1,bi,bj) + AREAITD(i,j,1,bi,bj) = AREAITD(i,j,1,bi,bj) & + d_AREAbyRLX(i,j,bi,bj) - HEFFITD(I,J,1,bi,bj) = HEFFITD(I,J,1,bi,bj) + HEFFITD(i,j,1,bi,bj) = HEFFITD(i,j,1,bi,bj) & + d_HEFFbyRLX(i,j,bi,bj) #endif /* SEAICE_ITD */ - AREA(I,J,bi,bj) = AREA(I,J,bi,bj) + d_AREAbyRLX(i,j,bi,bj) - HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) + d_HEFFbyRLX(i,j,bi,bj) + AREA(i,j,bi,bj) = AREA(i,j,bi,bj) + d_AREAbyRLX(i,j,bi,bj) + HEFF(i,j,bi,bj) = HEFF(i,j,bi,bj) + d_HEFFbyRLX(i,j,bi,bj) ENDDO ENDDO ENDIF @@ -148,17 +148,17 @@ SUBROUTINE SEAICE_REG_RIDGE( myTime, myIter, myThid ) #ifdef SEAICE_ITD DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx tmpscal1=0. _d 0 tmpscal2=0. _d 0 - tmpscal1=MAX(-HEFFITD(I,J,IT,bi,bj),0. _d 0) - HEFFITD(I,J,IT,bi,bj)=HEFFITD(I,J,IT,bi,bj)+tmpscal1 - d_HEFFbyNEG(I,J,bi,bj)=d_HEFFbyNEG(I,J,bi,bj)+tmpscal1 - tmpscal2=MAX(-HSNOWITD(I,J,IT,bi,bj),0. _d 0) - HSNOWITD(I,J,IT,bi,bj)=HSNOWITD(I,J,IT,bi,bj)+tmpscal2 - d_HSNWbyNEG(I,J,bi,bj)=d_HSNWbyNEG(I,J,bi,bj)+tmpscal2 - AREAITD(I,J,IT,bi,bj)=MAX(AREAITD(I,J,IT,bi,bj),0. _d 0) + tmpscal1=MAX(-HEFFITD(i,j,IT,bi,bj),0. _d 0) + HEFFITD(i,j,IT,bi,bj)=HEFFITD(i,j,IT,bi,bj)+tmpscal1 + d_HEFFbyNEG(i,j,bi,bj)=d_HEFFbyNEG(i,j,bi,bj)+tmpscal1 + tmpscal2=MAX(-HSNOWITD(i,j,IT,bi,bj),0. _d 0) + HSNOWITD(i,j,IT,bi,bj)=HSNOWITD(i,j,IT,bi,bj)+tmpscal2 + d_HSNWbyNEG(i,j,bi,bj)=d_HSNWbyNEG(i,j,bi,bj)+tmpscal2 + AREAITD(i,j,IT,bi,bj)=MAX(AREAITD(i,j,IT,bi,bj),0. _d 0) C AREA, HEFF, and HSNOW will be updated at end of PART 1 C by calling SEAICE_ITD_SUM ENDDO @@ -173,13 +173,13 @@ SUBROUTINE SEAICE_REG_RIDGE( myTime, myIter, myThid ) CADJ STORE hsnow(:,:,bi,bj) = comlev1_bibj, key = tkey,byte=isbyte CADJ STORE area(:,:,bi,bj) = comlev1_bibj, key = tkey,byte=isbyte #endif /* ALLOW_AUTODIFF_TAMC */ - DO J=1,sNy - DO I=1,sNx - d_HEFFbyNEG(I,J,bi,bj)=MAX(-HEFF(I,J,bi,bj),0. _d 0) - HEFF(I,J,bi,bj)=HEFF(I,J,bi,bj)+d_HEFFbyNEG(I,J,bi,bj) - d_HSNWbyNEG(I,J,bi,bj)=MAX(-HSNOW(I,J,bi,bj),0. _d 0) - HSNOW(I,J,bi,bj)=HSNOW(I,J,bi,bj)+d_HSNWbyNEG(I,J,bi,bj) - AREA(I,J,bi,bj)=MAX(AREA(I,J,bi,bj),0. _d 0) + DO j=1,sNy + DO i=1,sNx + d_HEFFbyNEG(i,j,bi,bj)=MAX(-HEFF(i,j,bi,bj),0. _d 0) + HEFF(i,j,bi,bj)=HEFF(i,j,bi,bj)+d_HEFFbyNEG(i,j,bi,bj) + d_HSNWbyNEG(i,j,bi,bj)=MAX(-HSNOW(i,j,bi,bj),0. _d 0) + HSNOW(i,j,bi,bj)=HSNOW(i,j,bi,bj)+d_HSNWbyNEG(i,j,bi,bj) + AREA(i,j,bi,bj)=MAX(AREA(i,j,bi,bj),0. _d 0) ENDDO ENDDO #endif /* SEAICE_ITD */ @@ -193,11 +193,11 @@ SUBROUTINE SEAICE_REG_RIDGE( myTime, myIter, myThid ) C funny structures in the net heat and freshwater flux into the ocean. C Let us keep our fingers crossed, that the model will be benign! DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx - IF (HEFF(I,J,bi,bj).LE.siEps) THEN - HEFFITD(I,J,IT,bi,bj) = 0. _d 0 - HSNOWITD(I,J,IT,bi,bj) = 0. _d 0 + DO j=1,sNy + DO i=1,sNx + IF (HEFF(i,j,bi,bj).LE.siEps) THEN + HEFFITD(i,j,IT,bi,bj) = 0. _d 0 + HSNOWITD(i,j,IT,bi,bj) = 0. _d 0 ENDIF ENDDO ENDDO @@ -212,21 +212,21 @@ SUBROUTINE SEAICE_REG_RIDGE( myTime, myIter, myThid ) C hurt, either). CADJ INCOMPLETE TICES #endif /* ALLOW_AUTODIFF_TAMC */ - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx tmpscal1=0. _d 0 tmpscal2=0. _d 0 - IF (HEFF(I,J,bi,bj).LE.siEps) THEN - tmpscal1=-HEFF(I,J,bi,bj) - tmpscal2=-HSNOW(I,J,bi,bj) + IF (HEFF(i,j,bi,bj).LE.siEps) THEN + tmpscal1=-HEFF(i,j,bi,bj) + tmpscal2=-HSNOW(i,j,bi,bj) DO IT=1,SEAICE_multDim - TICES(I,J,IT,bi,bj)=celsius2K + TICES(i,j,IT,bi,bj)=celsius2K ENDDO ENDIF - HEFF(I,J,bi,bj)=HEFF(I,J,bi,bj)+tmpscal1 - HSNOW(I,J,bi,bj)=HSNOW(I,J,bi,bj)+tmpscal2 - d_HEFFbyNEG(I,J,bi,bj)=d_HEFFbyNEG(I,J,bi,bj)+tmpscal1 - d_HSNWbyNEG(I,J,bi,bj)=d_HSNWbyNEG(I,J,bi,bj)+tmpscal2 + HEFF(i,j,bi,bj)=HEFF(i,j,bi,bj)+tmpscal1 + HSNOW(i,j,bi,bj)=HSNOW(i,j,bi,bj)+tmpscal2 + d_HEFFbyNEG(i,j,bi,bj)=d_HEFFbyNEG(i,j,bi,bj)+tmpscal1 + d_HSNWbyNEG(i,j,bi,bj)=d_HSNWbyNEG(i,j,bi,bj)+tmpscal2 ENDDO ENDDO @@ -234,11 +234,11 @@ SUBROUTINE SEAICE_REG_RIDGE( myTime, myIter, myThid ) #ifdef SEAICE_ITD DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx - IF ( (HEFFITD(I,J,IT,bi,bj) .EQ.0. _d 0).AND. - & (HSNOWITD(I,J,IT,bi,bj).EQ.0. _d 0)) - & AREAITD(I,J,IT,bi,bj)=0. _d 0 + DO j=1,sNy + DO i=1,sNx + IF ( (HEFFITD(i,j,IT,bi,bj) .EQ.0. _d 0).AND. + & (HSNOWITD(i,j,IT,bi,bj).EQ.0. _d 0)) + & AREAITD(i,j,IT,bi,bj)=0. _d 0 ENDDO ENDDO ENDDO @@ -247,10 +247,10 @@ SUBROUTINE SEAICE_REG_RIDGE( myTime, myIter, myThid ) CADJ STORE heff(:,:,bi,bj) = comlev1_bibj, key = tkey,byte=isbyte CADJ STORE hsnow(:,:,bi,bj) = comlev1_bibj, key = tkey,byte=isbyte #endif /* ALLOW_AUTODIFF_TAMC */ - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx IF ((HEFF(i,j,bi,bj).EQ.0. _d 0).AND. - & (HSNOW(i,j,bi,bj).EQ.0. _d 0)) AREA(I,J,bi,bj)=0. _d 0 + & (HSNOW(i,j,bi,bj).EQ.0. _d 0)) AREA(i,j,bi,bj)=0. _d 0 ENDDO ENDDO #endif /* SEAICE_ITD */ @@ -261,15 +261,15 @@ SUBROUTINE SEAICE_REG_RIDGE( myTime, myIter, myThid ) #ifdef SEAICE_ITD recip_nitd = 1. _d 0 / float(SEAICE_multDim) DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx - IF ((HEFFITD(I,J,IT,bi,bj).GT.0).OR. - & (HSNOWITD(I,J,IT,bi,bj).GT.0)) THEN + DO j=1,sNy + DO i=1,sNx + IF ((HEFFITD(i,j,IT,bi,bj).GT.0).OR. + & (HSNOWITD(i,j,IT,bi,bj).GT.0)) THEN C SEAICE_area_floor*SEAICE_multDim cannot be allowed to exceed 1 C hence use SEAICE_area_floor devided by SEAICE_multDim C (or install a warning in e.g. seaice_readparms.F) - AREAITD(I,J,IT,bi,bj)= - & MAX(AREAITD(I,J,IT,bi,bj),SEAICE_area_floor*recip_nitd) + AREAITD(i,j,IT,bi,bj)= + & MAX(AREAITD(i,j,IT,bi,bj),SEAICE_area_floor*recip_nitd) ENDIF ENDDO ENDDO @@ -278,10 +278,10 @@ SUBROUTINE SEAICE_REG_RIDGE( myTime, myIter, myThid ) #ifdef ALLOW_AUTODIFF_TAMC CADJ STORE area(:,:,bi,bj) = comlev1_bibj, key = tkey,byte=isbyte #endif /* ALLOW_AUTODIFF_TAMC */ - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx IF ((HEFF(i,j,bi,bj).GT.0).OR.(HSNOW(i,j,bi,bj).GT.0)) THEN - AREA(I,J,bi,bj)=MAX(AREA(I,J,bi,bj),SEAICE_area_floor) + AREA(i,j,bi,bj)=MAX(AREA(i,j,bi,bj),SEAICE_area_floor) ENDIF ENDDO ENDDO @@ -294,13 +294,13 @@ SUBROUTINE SEAICE_REG_RIDGE( myTime, myIter, myThid ) CADJ STORE hsalt(:,:,bi,bj) = comlev1_bibj, key = tkey,byte=isbyte CADJ STORE heff(:,:,bi,bj) = comlev1_bibj, key = tkey,byte=isbyte #endif /* ALLOW_AUTODIFF_TAMC */ - DO J=1,sNy - DO I=1,sNx - IF ( (HSALT(I,J,bi,bj) .LT. 0.0).OR. - & (HEFF(I,J,bi,bj) .EQ. 0.0) ) THEN - saltFluxAdjust(I,J,bi,bj) = - HEFFM(I,J,bi,bj) * - & HSALT(I,J,bi,bj) * recip_deltaTtherm - HSALT(I,J,bi,bj) = 0.0 _d 0 + DO j=1,sNy + DO i=1,sNx + IF ( (HSALT(i,j,bi,bj) .LT. 0.0).OR. + & (HEFF(i,j,bi,bj) .EQ. 0.0) ) THEN + saltFluxAdjust(i,j,bi,bj) = - HEFFM(i,j,bi,bj) * + & HSALT(i,j,bi,bj) * recip_deltaTtherm + HSALT(i,j,bi,bj) = 0.0 _d 0 ENDIF ENDDO ENDDO @@ -315,37 +315,37 @@ SUBROUTINE SEAICE_REG_RIDGE( myTime, myIter, myThid ) #ifdef SEAICE_ITD C catch up with item (2) that involves category sums AREA and HEFF - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx tmpscal1itd(i,j) = 0. _d 0 tmpscal2itd(i,j) = 0. _d 0 tmpscal3itd(i,j) = 0. _d 0 ENDDO ENDDO DO IT=1,SEAICE_multDim - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx C TICES was changed above (item 2), now update TICE as ice volume C weighted average of TICES tmpscal1itd(i,j)=tmpscal1itd(i,j) - & + TICES(I,J,IT,bi,bj) * HEFFITD(I,J,IT,bi,bj) - tmpscal2itd(i,j)=tmpscal2itd(i,j) + HEFFITD(I,J,IT,bi,bj) + & + TICES(i,j,IT,bi,bj) * HEFFITD(i,j,IT,bi,bj) + tmpscal2itd(i,j)=tmpscal2itd(i,j) + HEFFITD(i,j,IT,bi,bj) C also compute total of AREAITD for diagnostics and SItrArea - tmpscal3itd(i,j)=tmpscal3itd(i,j) + AREAITD(I,J,IT,bi,bj) + tmpscal3itd(i,j)=tmpscal3itd(i,j) + AREAITD(i,j,IT,bi,bj) ENDDO ENDDO ENDDO - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx C save pre-ridging ice concentration for diagnostics: C these lines are executed before "ridging" is applied to AREA C hence we execute them here before SEAICE_ITD_REDIST is called C although this means that AREA has not been completely regularized #ifdef ALLOW_DIAGNOSTICS - DIAGarrayA(I,J) = tmpscal3itd(i,j) + DIAGarrayA(i,j) = tmpscal3itd(i,j) #endif #ifdef ALLOW_SITRACER - SItrAREA(I,J,bi,bj,1)=tmpscal3itd(i,j) + SItrAREA(i,j,bi,bj,1)=tmpscal3itd(i,j) #endif ENDDO ENDDO @@ -364,24 +364,24 @@ SUBROUTINE SEAICE_REG_RIDGE( myTime, myIter, myThid ) #ifdef ALLOW_AUTODIFF_TAMC CADJ STORE area(:,:,bi,bj) = comlev1_bibj, key = tkey,byte=isbyte #endif /* ALLOW_AUTODIFF_TAMC */ - DO J=1,sNy - DO I=1,sNx + DO j=1,sNy + DO i=1,sNx C save pre-ridging ice concentration for diagnostics #ifdef ALLOW_DIAGNOSTICS - DIAGarrayA(I,J) = AREA(I,J,bi,bj) + DIAGarrayA(i,j) = AREA(i,j,bi,bj) #endif /* ALLOW_DIAGNOSTICS */ #ifdef ALLOW_SITRACER - SItrAREA(I,J,bi,bj,1)=AREA(I,J,bi,bj) + SItrAREA(i,j,bi,bj,1)=AREA(i,j,bi,bj) #endif /* ALLOW_SITRACER */ C this is the simple Hibler (1979)-type ridging (capping of C concentrations > 1) for the non-ITD sea ice model - AREA(I,J,bi,bj)=MIN(AREA(I,J,bi,bj),SEAICE_area_max) + AREA(i,j,bi,bj)=MIN(AREA(i,j,bi,bj),SEAICE_area_max) ENDDO ENDDO #endif /* SEAICE_ITD */ -#if (defined ALLOW_AUTODIFF_TAMC && defined SEAICE_MODIFY_GROWTH_ADJ) +#if (defined ALLOW_AUTODIFF && defined SEAICE_MODIFY_GROWTH_ADJ) C end SEAICEadjMODE.EQ.0 statement: ENDIF #endif diff --git a/verification/hs94.1x64x5/code_ad/CTRL_OPTIONS.h b/verification/hs94.1x64x5/code_ad/CTRL_OPTIONS.h deleted file mode 100644 index b469e187d8..0000000000 --- a/verification/hs94.1x64x5/code_ad/CTRL_OPTIONS.h +++ /dev/null @@ -1,58 +0,0 @@ -CBOP -C !ROUTINE: CTRL_OPTIONS.h -C !INTERFACE: -C #include "CTRL_OPTIONS.h" - -C !DESCRIPTION: -C *==================================================================* -C | CPP options file for Control (ctrl) package: -C | Control which optional features to compile in this package code. -C *==================================================================* -CEOP - -#ifndef CTRL_OPTIONS_H -#define CTRL_OPTIONS_H -#include "PACKAGES_CONFIG.h" -#include "CPP_OPTIONS.h" - -#ifdef ALLOW_CTRL -#ifdef ECCO_CPPOPTIONS_H - -C-- When multi-package option-file ECCO_CPPOPTIONS.h is used (directly included -C in CPP_OPTIONS.h), this option file is left empty since all options that -C are specific to this package are assumed to be set in ECCO_CPPOPTIONS.h - -#else /* ndef ECCO_CPPOPTIONS_H */ -C ================================================================== -C-- Package-specific Options & Macros go here - -#undef EXCLUDE_CTRL_PACK -#undef ALLOW_NONDIMENSIONAL_CONTROL_IO - -C >>> Generic Control. -#define ALLOW_GENARR2D_CONTROL -#define ALLOW_GENARR3D_CONTROL -#define ALLOW_GENTIM2D_CONTROL - -C o Rotation of wind/stress controls adjustments -C from Eastward/Northward to model grid directions -#undef ALLOW_ROTATE_UV_CONTROLS - -C o use pkg/smooth correlation operator (incl. smoother) for 2D controls (Weaver, Courtier 01) -C This CPP option just sets the default for ctrlSmoothCorrel2D to .TRUE. -#undef ALLOW_SMOOTH_CORREL2D -C o use pkg/smooth correlation operator (incl. smoother) for 3D controls (Weaver, Courtier 01) -C This CPP option just sets the default for ctrlSmoothCorrel3D to .TRUE. -#undef ALLOW_SMOOTH_CORREL3D - -C o apply pkg/ctrl/ctrl_smooth.F to 2D controls (outside of ctrlSmoothCorrel2D) -#undef ALLOW_CTRL_SMOOTH -C o apply pkg/smooth/smooth_diff2d.F to 2D controls (outside of ctrlSmoothCorrel2D) -#undef ALLOW_SMOOTH_CTRL2D -C o apply pkg/smooth/smooth_diff3d.F to 3D controls (outside of ctrlSmoothCorrel3D) -#undef ALLOW_SMOOTH_CTRL3D - -C ================================================================== -#endif /* ndef ECCO_CPPOPTIONS_H */ -#endif /* ALLOW_CTRL */ -#endif /* CTRL_OPTIONS_H */ diff --git a/verification/hs94.1x64x5/code_oad/CTRL_OPTIONS.h b/verification/hs94.1x64x5/code_oad/CTRL_OPTIONS.h deleted file mode 100644 index b469e187d8..0000000000 --- a/verification/hs94.1x64x5/code_oad/CTRL_OPTIONS.h +++ /dev/null @@ -1,58 +0,0 @@ -CBOP -C !ROUTINE: CTRL_OPTIONS.h -C !INTERFACE: -C #include "CTRL_OPTIONS.h" - -C !DESCRIPTION: -C *==================================================================* -C | CPP options file for Control (ctrl) package: -C | Control which optional features to compile in this package code. -C *==================================================================* -CEOP - -#ifndef CTRL_OPTIONS_H -#define CTRL_OPTIONS_H -#include "PACKAGES_CONFIG.h" -#include "CPP_OPTIONS.h" - -#ifdef ALLOW_CTRL -#ifdef ECCO_CPPOPTIONS_H - -C-- When multi-package option-file ECCO_CPPOPTIONS.h is used (directly included -C in CPP_OPTIONS.h), this option file is left empty since all options that -C are specific to this package are assumed to be set in ECCO_CPPOPTIONS.h - -#else /* ndef ECCO_CPPOPTIONS_H */ -C ================================================================== -C-- Package-specific Options & Macros go here - -#undef EXCLUDE_CTRL_PACK -#undef ALLOW_NONDIMENSIONAL_CONTROL_IO - -C >>> Generic Control. -#define ALLOW_GENARR2D_CONTROL -#define ALLOW_GENARR3D_CONTROL -#define ALLOW_GENTIM2D_CONTROL - -C o Rotation of wind/stress controls adjustments -C from Eastward/Northward to model grid directions -#undef ALLOW_ROTATE_UV_CONTROLS - -C o use pkg/smooth correlation operator (incl. smoother) for 2D controls (Weaver, Courtier 01) -C This CPP option just sets the default for ctrlSmoothCorrel2D to .TRUE. -#undef ALLOW_SMOOTH_CORREL2D -C o use pkg/smooth correlation operator (incl. smoother) for 3D controls (Weaver, Courtier 01) -C This CPP option just sets the default for ctrlSmoothCorrel3D to .TRUE. -#undef ALLOW_SMOOTH_CORREL3D - -C o apply pkg/ctrl/ctrl_smooth.F to 2D controls (outside of ctrlSmoothCorrel2D) -#undef ALLOW_CTRL_SMOOTH -C o apply pkg/smooth/smooth_diff2d.F to 2D controls (outside of ctrlSmoothCorrel2D) -#undef ALLOW_SMOOTH_CTRL2D -C o apply pkg/smooth/smooth_diff3d.F to 3D controls (outside of ctrlSmoothCorrel3D) -#undef ALLOW_SMOOTH_CTRL3D - -C ================================================================== -#endif /* ndef ECCO_CPPOPTIONS_H */ -#endif /* ALLOW_CTRL */ -#endif /* CTRL_OPTIONS_H */ diff --git a/verification/lab_sea/input_ad/dorun.sh b/verification/lab_sea/input_ad/do_run.sh similarity index 56% rename from verification/lab_sea/input_ad/dorun.sh rename to verification/lab_sea/input_ad/do_run.sh index 6c1424b8ab..ada512e5ff 100755 --- a/verification/lab_sea/input_ad/dorun.sh +++ b/verification/lab_sea/input_ad/do_run.sh @@ -1,14 +1,24 @@ #! /usr/bin/env bash -# number of additional executions to perform is given by "add_DIVA_runs" +#- script to run the sequence of multiple Divided-Adjoint runs: +# no argment -> using non-MPI built AD-executable +# single-arg -> using MPI built executable and "mpirun -np ${single-arg}" command + +#- number of additional executions to perform is given by "add_DIVA_runs" # and corresponds to "nchklev_3" value in file "code_ad/tamc.h" -add_DIVA_runs=4 +#- take it from file "run_ADM_DIVA" (as done in testreport): +adm_diva_nb=`sed -n '/^ *add_DIVA_runs *=/p' run_ADM_DIVA | sed 's/ //g'` +echo " Divided Adjoint Run: $adm_diva_nb" +eval "let $adm_diva_nb" +#- or set-it directly: +#add_DIVA_runs=4 +extraRuns=`expr $add_DIVA_runs - 1` if test $# = 0 ; then rm -f costfunction*0000 costfinal divided.ctrl snapshot* #- not MPI run: echo "Run $add_DIVA_runs times + final run:" - for ii in `seq 1 $add_DIVA_runs` ; do + for ii in `seq 0 $extraRuns` ; do ./mitgcmuv_ad > output_adm.txt.diva_${ii} echo " additional DIVA run # $ii : done" done @@ -18,7 +28,7 @@ else rm -f costfunction*0000 costfinal divided.ctrl snapshot* #- MPI run on $1 procs (note: may need to edit mpirun command): echo "Run $add_DIVA_runs times + final run (use 'mpirun -np $1' ):" - for ii in `seq 1 $add_DIVA_runs` ; do + for ii in `seq 0 $extraRuns` ; do mpirun -np $1 ./mitgcmuv_ad echo " additional DIVA run # $ii : done" mv -f STDOUT.0000 STDOUT.0000.diva_${ii} diff --git a/verification/offline_exf_seaice/input/data b/verification/offline_exf_seaice/input/data index e3f3692902..9c075e9628 100644 --- a/verification/offline_exf_seaice/input/data +++ b/verification/offline_exf_seaice/input/data @@ -47,14 +47,16 @@ &PARM03 startTime=0.0, #endTime=432000., - deltaT=1800.0, +# Use half the original time step to test the option of stepping +# the sea ice dynamics solver with a longer timestep. + deltaT= 900.0, abEps=0.1, forcing_In_AB = .FALSE., pChkptFreq=3600000., dumpFreq = 864000., monitorFreq=86400., monitorSelect=2, - nTimeSteps=12, + nTimeSteps=24, monitorFreq=21600., & diff --git a/verification/offline_exf_seaice/input/data.ice b/verification/offline_exf_seaice/input/data.ice index 035b6d9903..01cec86a6f 100644 --- a/verification/offline_exf_seaice/input/data.ice +++ b/verification/offline_exf_seaice/input/data.ice @@ -27,7 +27,7 @@ thSIceFract_InitFile='const100.bin', thSIceThick_InitFile='const+20.bin', #thSIce_diagFreq=2592000., - thSIce_monFreq =21600., +#thSIce_monFreq =21600., thSIce_monFreq =1800., & diff --git a/verification/offline_exf_seaice/input/data.seaice b/verification/offline_exf_seaice/input/data.seaice index 8d0fe245cb..61acf16a3e 100644 --- a/verification/offline_exf_seaice/input/data.seaice +++ b/verification/offline_exf_seaice/input/data.seaice @@ -9,6 +9,7 @@ LSR_mixIniGuess = 1, SEAICE_no_Slip = .FALSE., SEAICEwriteState = .TRUE., + SEAICE_deltaTdyn = 1800., SEAICE_monFreq = 21600., SEAICE_monFreq = 1800., & diff --git a/verification/offline_exf_seaice/results/output.txt b/verification/offline_exf_seaice/results/output.txt index f13f5002f0..5866442d7a 100644 --- a/verification/offline_exf_seaice/results/output.txt +++ b/verification/offline_exf_seaice/results/output.txt @@ -5,21 +5,23 @@ (PID.TID 0000.0001) // ====================================================== (PID.TID 0000.0001) // execution environment starting up... (PID.TID 0000.0001) -(PID.TID 0000.0001) // MITgcmUV version: checkpoint67t +(PID.TID 0000.0001) // MITgcmUV version: checkpoint68o (PID.TID 0000.0001) // Build user: jm_c (PID.TID 0000.0001) // Build host: villon -(PID.TID 0000.0001) // Build date: Fri Dec 11 09:58:42 EST 2020 +(PID.TID 0000.0001) // Build date: Thu May 4 14:32:22 EDT 2023 (PID.TID 0000.0001) (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // Execution Environment parameter file "eedata" (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) ># Example "eedata" file (PID.TID 0000.0001) ># Lines beginning "#" are comments -(PID.TID 0000.0001) ># nTx - No. threads per process in X -(PID.TID 0000.0001) ># nTy - No. threads per process in Y +(PID.TID 0000.0001) ># nTx :: No. threads per process in X +(PID.TID 0000.0001) ># nTy :: No. threads per process in Y +(PID.TID 0000.0001) ># debugMode :: print debug msg (sequence of S/R calls) (PID.TID 0000.0001) > &EEPARMS (PID.TID 0000.0001) > nTx=1, (PID.TID 0000.0001) > nTy=1, +(PID.TID 0000.0001) >#debugMode=.TRUE., (PID.TID 0000.0001) > / (PID.TID 0000.0001) ># Note: Some systems use & as the namelist terminator (as shown here). (PID.TID 0000.0001) ># Other systems use a / character. @@ -155,14 +157,16 @@ (PID.TID 0000.0001) > &PARM03 (PID.TID 0000.0001) > startTime=0.0, (PID.TID 0000.0001) >#endTime=432000., -(PID.TID 0000.0001) > deltaT=1800.0, +(PID.TID 0000.0001) ># Use half the original time step to test the option of stepping +(PID.TID 0000.0001) ># the sea ice dynamics solver with a longer timestep. +(PID.TID 0000.0001) > deltaT= 900.0, (PID.TID 0000.0001) > abEps=0.1, (PID.TID 0000.0001) > forcing_In_AB = .FALSE., (PID.TID 0000.0001) > pChkptFreq=3600000., (PID.TID 0000.0001) > dumpFreq = 864000., (PID.TID 0000.0001) > monitorFreq=86400., (PID.TID 0000.0001) > monitorSelect=2, -(PID.TID 0000.0001) > nTimeSteps=12, +(PID.TID 0000.0001) > nTimeSteps=24, (PID.TID 0000.0001) > monitorFreq=21600., (PID.TID 0000.0001) > / (PID.TID 0000.0001) > @@ -318,6 +322,7 @@ (PID.TID 0000.0001) > LSR_mixIniGuess = 1, (PID.TID 0000.0001) > SEAICE_no_Slip = .FALSE., (PID.TID 0000.0001) > SEAICEwriteState = .TRUE., +(PID.TID 0000.0001) > SEAICE_deltaTdyn = 1800., (PID.TID 0000.0001) > SEAICE_monFreq = 21600., (PID.TID 0000.0001) > SEAICE_monFreq = 1800., (PID.TID 0000.0001) > / @@ -360,7 +365,7 @@ (PID.TID 0000.0001) > thSIceFract_InitFile='const100.bin', (PID.TID 0000.0001) > thSIceThick_InitFile='const+20.bin', (PID.TID 0000.0001) >#thSIce_diagFreq=2592000., -(PID.TID 0000.0001) > thSIce_monFreq =21600., +(PID.TID 0000.0001) >#thSIce_monFreq =21600., (PID.TID 0000.0001) > thSIce_monFreq =1800., (PID.TID 0000.0001) > / (PID.TID 0000.0001) > @@ -414,8 +419,8 @@ ThSI: thSIceAdvScheme = 77 ThSI: thSIceBalanceAtmFW= 0 ThSI: thSIce_diffK = 0.0000000000000E+00 - ThSI: thSIce_deltaT = 1.8000000000000E+03 - ThSI: ocean_deltaT = 1.8000000000000E+03 + ThSI: thSIce_deltaT = 9.0000000000000E+02 + ThSI: ocean_deltaT = 9.0000000000000E+02 ThSI: stepFwd_oceMxL = F ThSI: tauRelax_MxL = 0.0000000000000E+00 ThSI: tauRelax_MxL_salt = 0.0000000000000E+00 @@ -787,6 +792,9 @@ (PID.TID 0000.0001) exf_monFreq = /* EXF monitor frequency [ s ] */ (PID.TID 0000.0001) 8.640000000000000E+07 (PID.TID 0000.0001) ; +(PID.TID 0000.0001) exf_adjMonSelect = /* select group of exf AD-variables to monitor */ +(PID.TID 0000.0001) 1 +(PID.TID 0000.0001) ; (PID.TID 0000.0001) repeatPeriod = /* period for cycling forcing dataset [ s ] */ (PID.TID 0000.0001) 0.000000000000000E+00 (PID.TID 0000.0001) ; @@ -847,22 +855,31 @@ (PID.TID 0000.0001) sstExtrapol = /* extrapolation coeff from lev. 1 & 2 to surf [-] */ (PID.TID 0000.0001) 0.000000000000000E+00 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) cDrag_1 = /* coef used in drag calculation [?] */ +(PID.TID 0000.0001) cDrag_1 = /* coef used in drag calculation [m/s] */ (PID.TID 0000.0001) 2.700000000000000E-03 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) cDrag_2 = /* coef used in drag calculation [?] */ +(PID.TID 0000.0001) cDrag_2 = /* coef used in drag calculation [-] */ (PID.TID 0000.0001) 1.420000000000000E-04 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) cDrag_3 = /* coef used in drag calculation [?] */ +(PID.TID 0000.0001) cDrag_3 = /* coef used in drag calculation [s/m] */ (PID.TID 0000.0001) 7.640000000000000E-05 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) cStanton_1 = /* coef used in Stanton number calculation [?] */ +(PID.TID 0000.0001) cDrag_8 = /* coef used in drag calculation [(s/m)^6] */ +(PID.TID 0000.0001) 1.234567000000000E+05 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) cDragMax = /* maximum drag (Large and Yeager, 2009) [-] */ +(PID.TID 0000.0001) 1.234567000000000E+05 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) umax = /* at maximum wind (Large and Yeager, 2009) [m/s] */ +(PID.TID 0000.0001) 1.234567000000000E+05 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) cStanton_1 = /* coef used in Stanton number calculation [-] */ (PID.TID 0000.0001) 3.270000000000000E-02 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) cStanton_2 = /* coef used in Stanton number calculation [?] */ +(PID.TID 0000.0001) cStanton_2 = /* coef used in Stanton number calculation [-] */ (PID.TID 0000.0001) 1.800000000000000E-02 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) cDalton = /* coef used in Dalton number calculation [?] */ +(PID.TID 0000.0001) cDalton = /* Dalton number [-] */ (PID.TID 0000.0001) 3.460000000000000E-02 (PID.TID 0000.0001) ; (PID.TID 0000.0001) exf_scal_BulkCdn= /* Drag coefficient scaling factor [-] */ @@ -985,7 +1002,7 @@ (PID.TID 0000.0001) Seaice time stepping configuration > START < (PID.TID 0000.0001) ---------------------------------------------- (PID.TID 0000.0001) SEAICE_deltaTtherm= /* thermodynamic timestep */ -(PID.TID 0000.0001) 1.800000000000000E+03 +(PID.TID 0000.0001) 9.000000000000000E+02 (PID.TID 0000.0001) ; (PID.TID 0000.0001) SEAICE_deltaTdyn = /* dynamic timestep */ (PID.TID 0000.0001) 1.800000000000000E+03 @@ -1248,35 +1265,35 @@ (PID.TID 0000.0001) (PID.TID 0000.0001) ------------------------------------------------------------ (PID.TID 0000.0001) DIAGNOSTICS_SET_LEVELS: done -(PID.TID 0000.0001) Total Nb of available Diagnostics: ndiagt= 256 +(PID.TID 0000.0001) Total Nb of available Diagnostics: ndiagt= 258 (PID.TID 0000.0001) write list of available Diagnostics to file: available_diagnostics.log -(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 224 SI_Fract -(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 225 SI_Thick -(PID.TID 0000.0001) - NOTE - SETDIAG: Counter-mate # 224 SI_Fract is already set +(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 226 SI_Fract +(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 227 SI_Thick +(PID.TID 0000.0001) - NOTE - SETDIAG: Counter-mate # 226 SI_Fract is already set (PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 26 THETA -(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 227 SI_Tsrf -(PID.TID 0000.0001) - NOTE - SETDIAG: Counter-mate # 224 SI_Fract is already set -(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 237 SIflx2oc -(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 238 SIfrw2oc -(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 239 SIsaltFx -(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 235 SIflxAtm -(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 236 SIfrwAtm -(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 163 SIuice -(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 164 SIvice -(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 163 SIuice -(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 164 SIvice -(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 149 SIheff -(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 224 SI_Fract -(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 225 SI_Thick -(PID.TID 0000.0001) - NOTE - SETDIAG: Counter-mate # 224 SI_Fract is already set -(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 227 SI_Tsrf -(PID.TID 0000.0001) - NOTE - SETDIAG: Counter-mate # 224 SI_Fract is already set +(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 229 SI_Tsrf +(PID.TID 0000.0001) - NOTE - SETDIAG: Counter-mate # 226 SI_Fract is already set +(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 239 SIflx2oc +(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 240 SIfrw2oc +(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 241 SIsaltFx +(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 237 SIflxAtm +(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 238 SIfrwAtm +(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 165 SIuice +(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 166 SIvice +(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 165 SIuice +(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 166 SIvice +(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 151 SIheff +(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 226 SI_Fract +(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 227 SI_Thick +(PID.TID 0000.0001) - NOTE - SETDIAG: Counter-mate # 226 SI_Fract is already set +(PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 229 SI_Tsrf +(PID.TID 0000.0001) - NOTE - SETDIAG: Counter-mate # 226 SI_Fract is already set (PID.TID 0000.0001) SETDIAG: Allocate 1 x 1 Levels for Diagnostic # 26 THETA (PID.TID 0000.0001) space allocated for all diagnostics: 18 levels -(PID.TID 0000.0001) set mate pointer for diag # 163 SIuice , Parms: UU M1 , mate: 164 -(PID.TID 0000.0001) set mate pointer for diag # 164 SIvice , Parms: VV M1 , mate: 163 -(PID.TID 0000.0001) set mate pointer for diag # 163 SIuice , Parms: UU M1 , mate: 164 -(PID.TID 0000.0001) set mate pointer for diag # 164 SIvice , Parms: VV M1 , mate: 163 +(PID.TID 0000.0001) set mate pointer for diag # 165 SIuice , Parms: UU M1 , mate: 166 +(PID.TID 0000.0001) set mate pointer for diag # 166 SIvice , Parms: VV M1 , mate: 165 +(PID.TID 0000.0001) set mate pointer for diag # 165 SIuice , Parms: UU M1 , mate: 166 +(PID.TID 0000.0001) set mate pointer for diag # 166 SIvice , Parms: VV M1 , mate: 165 (PID.TID 0000.0001) DIAGNOSTICS_SET_POINTERS: Set levels for Outp.Stream: iceDiag (PID.TID 0000.0001) Levels: 1. (PID.TID 0000.0001) DIAGNOSTICS_SET_POINTERS: Set levels for Outp.Stream: snapshot @@ -1285,25 +1302,25 @@ (PID.TID 0000.0001) ------------------------------------------------------------ (PID.TID 0000.0001) DIAGSTATS_SET_REGIONS: define no region (PID.TID 0000.0001) ------------------------------------------------------------ -(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 224 SI_Fract -(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 225 SI_Thick -(PID.TID 0000.0001) - NOTE - SETDIAG: Counter Diagnostic # 224 SI_Fract has already been set +(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 226 SI_Fract +(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 227 SI_Thick +(PID.TID 0000.0001) - NOTE - SETDIAG: Counter Diagnostic # 226 SI_Fract has already been set (PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 26 THETA -(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 227 SI_Tsrf -(PID.TID 0000.0001) - NOTE - SETDIAG: Counter Diagnostic # 224 SI_Fract has already been set -(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 228 SI_Tice1 -(PID.TID 0000.0001) - NOTE - SETDIAG: Counter Diagnostic # 224 SI_Fract has already been set -(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 229 SI_Tice2 -(PID.TID 0000.0001) - NOTE - SETDIAG: Counter Diagnostic # 224 SI_Fract has already been set -(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 237 SIflx2oc -(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 238 SIfrw2oc -(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 239 SIsaltFx -(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 235 SIflxAtm -(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 236 SIfrwAtm -(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 226 SI_SnowH -(PID.TID 0000.0001) - NOTE - SETDIAG: Counter Diagnostic # 224 SI_Fract has already been set -(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 163 SIuice -(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 164 SIvice +(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 229 SI_Tsrf +(PID.TID 0000.0001) - NOTE - SETDIAG: Counter Diagnostic # 226 SI_Fract has already been set +(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 230 SI_Tice1 +(PID.TID 0000.0001) - NOTE - SETDIAG: Counter Diagnostic # 226 SI_Fract has already been set +(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 231 SI_Tice2 +(PID.TID 0000.0001) - NOTE - SETDIAG: Counter Diagnostic # 226 SI_Fract has already been set +(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 239 SIflx2oc +(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 240 SIfrw2oc +(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 241 SIsaltFx +(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 237 SIflxAtm +(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 238 SIfrwAtm +(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 228 SI_SnowH +(PID.TID 0000.0001) - NOTE - SETDIAG: Counter Diagnostic # 226 SI_Fract has already been set +(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 165 SIuice +(PID.TID 0000.0001) SETDIAG: Allocate 1 Levels for Stats-Diag # 166 SIvice (PID.TID 0000.0001) space allocated for all stats-diags: 14 levels (PID.TID 0000.0001) DIAGSTATS_SET_POINTERS: done (PID.TID 0000.0001) ------------------------------------------------------------ @@ -1346,9 +1363,15 @@ (PID.TID 0000.0001) tRef = /* Reference temperature profile ( oC or K ) */ (PID.TID 0000.0001) -1.620000000000000E+00 /* K = 1 */ (PID.TID 0000.0001) ; -(PID.TID 0000.0001) sRef = /* Reference salinity profile ( psu ) */ +(PID.TID 0000.0001) sRef = /* Reference salinity profile ( g/kg ) */ (PID.TID 0000.0001) 3.000000000000000E+01 /* K = 1 */ (PID.TID 0000.0001) ; +(PID.TID 0000.0001) rhoRef = /* Density vertical profile from (Ref,sRef)( kg/m^3 ) */ +(PID.TID 0000.0001) 1.030000000000000E+03 /* K = 1 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dBdrRef = /* Vertical grad. of reference buoyancy [(m/s/r)^2] */ +(PID.TID 0000.0001) 0.000000000000000E+00 /* K = 1 */ +(PID.TID 0000.0001) ; (PID.TID 0000.0001) useStrainTensionVisc= /* Use StrainTension Form of Viscous Operator */ (PID.TID 0000.0001) F (PID.TID 0000.0001) ; @@ -1442,7 +1465,7 @@ (PID.TID 0000.0001) tAlpha = /* Linear EOS thermal expansion coefficient ( 1/oC ) */ (PID.TID 0000.0001) 2.000000000000000E-04 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) sBeta = /* Linear EOS haline contraction coefficient ( 1/psu ) */ +(PID.TID 0000.0001) sBeta = /* Linear EOS haline contraction coefficient ( 1/(g/kg) ) */ (PID.TID 0000.0001) 0.000000000000000E+00 (PID.TID 0000.0001) ; (PID.TID 0000.0001) rhoNil = /* Reference density for Linear EOS ( kg/m^3 ) */ @@ -1509,28 +1532,31 @@ (PID.TID 0000.0001) freeSurfFac = /* Implicit free surface factor */ (PID.TID 0000.0001) 1.000000000000000E+00 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) implicSurfPress = /* Surface Pressure implicit factor (0-1)*/ +(PID.TID 0000.0001) implicSurfPress = /* Surface Pressure implicit factor (0-1) */ (PID.TID 0000.0001) 1.000000000000000E+00 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) implicDiv2DFlow = /* Barot. Flow Div. implicit factor (0-1)*/ +(PID.TID 0000.0001) implicDiv2DFlow = /* Barot. Flow Div. implicit factor (0-1) */ (PID.TID 0000.0001) 1.000000000000000E+00 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) uniformLin_PhiSurf = /* use uniform Bo_surf on/off flag*/ +(PID.TID 0000.0001) uniformLin_PhiSurf = /* use uniform Bo_surf on/off flag */ (PID.TID 0000.0001) T (PID.TID 0000.0001) ; (PID.TID 0000.0001) uniformFreeSurfLev = /* free-surface level-index is uniform */ (PID.TID 0000.0001) T (PID.TID 0000.0001) ; +(PID.TID 0000.0001) sIceLoadFac = /* scale factor for sIceLoad (0-1) */ +(PID.TID 0000.0001) 1.000000000000000E+00 +(PID.TID 0000.0001) ; (PID.TID 0000.0001) hFacMin = /* minimum partial cell factor (hFac) */ (PID.TID 0000.0001) 1.000000000000000E+00 (PID.TID 0000.0001) ; (PID.TID 0000.0001) hFacMinDr = /* minimum partial cell thickness ( m) */ (PID.TID 0000.0001) 0.000000000000000E+00 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) exactConserv = /* Exact Volume Conservation on/off flag*/ +(PID.TID 0000.0001) exactConserv = /* Exact Volume Conservation on/off flag */ (PID.TID 0000.0001) F (PID.TID 0000.0001) ; -(PID.TID 0000.0001) linFSConserveTr = /* Tracer correction for Lin Free Surface on/off flag*/ +(PID.TID 0000.0001) linFSConserveTr = /* Tracer correction for Lin Free Surface on/off flag */ (PID.TID 0000.0001) F (PID.TID 0000.0001) ; (PID.TID 0000.0001) nonlinFreeSurf = /* Non-linear Free Surf. options (-1,0,1,2,3)*/ @@ -1552,7 +1578,7 @@ (PID.TID 0000.0001) temp_EvPrRn = /* Temp. of Evap/Prec/R (UNSET=use local T)(oC)*/ (PID.TID 0000.0001) 1.234567000000000E+05 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) salt_EvPrRn = /* Salin. of Evap/Prec/R (UNSET=use local S)(psu)*/ +(PID.TID 0000.0001) salt_EvPrRn = /* Salin. of Evap/Prec/R (UNSET=use local S)(g/kg)*/ (PID.TID 0000.0001) 0.000000000000000E+00 (PID.TID 0000.0001) ; (PID.TID 0000.0001) selectAddFluid = /* option for mass source/sink of fluid (=0: off) */ @@ -1561,10 +1587,10 @@ (PID.TID 0000.0001) temp_addMass = /* Temp. of addMass array (UNSET=use local T)(oC)*/ (PID.TID 0000.0001) 1.234567000000000E+05 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) salt_addMass = /* Salin. of addMass array (UNSET=use local S)(psu)*/ +(PID.TID 0000.0001) salt_addMass = /* Salin. of addMass array (UNSET=use local S)(g/kg)*/ (PID.TID 0000.0001) 0.000000000000000E+00 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) convertFW2Salt = /* convert F.W. Flux to Salt Flux (-1=use local S)(psu)*/ +(PID.TID 0000.0001) convertFW2Salt = /* convert F.W. Flux to Salt Flux (-1=use local S)(g/kg)*/ (PID.TID 0000.0001) -1.000000000000000E+00 (PID.TID 0000.0001) ; (PID.TID 0000.0001) use3Dsolver = /* use 3-D pressure solver on/off flag */ @@ -1736,8 +1762,8 @@ (PID.TID 0000.0001) cg2dMaxIters = /* Upper limit on 2d con. grad iterations */ (PID.TID 0000.0001) 500 (PID.TID 0000.0001) ; -(PID.TID 0000.0001) cg2dChkResFreq = /* 2d con. grad convergence test frequency */ -(PID.TID 0000.0001) 1 +(PID.TID 0000.0001) cg2dMinItersNSA = /* Minimum number of iterations of 2d con. grad solver */ +(PID.TID 0000.0001) 0 (PID.TID 0000.0001) ; (PID.TID 0000.0001) cg2dUseMinResSol= /* use cg2d last-iter(=0) / min-resid.(=1) solution */ (PID.TID 0000.0001) 0 @@ -1754,6 +1780,9 @@ (PID.TID 0000.0001) useSRCGSolver = /* use single reduction CG solver(s) */ (PID.TID 0000.0001) F (PID.TID 0000.0001) ; +(PID.TID 0000.0001) useNSACGSolver = /* use not-self-adjoint CG solver */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; (PID.TID 0000.0001) printResidualFreq = /* Freq. for printing CG residual */ (PID.TID 0000.0001) 0 (PID.TID 0000.0001) ; @@ -1761,16 +1790,16 @@ (PID.TID 0000.0001) // Time stepping paramters ( PARM03 in namelist ) (PID.TID 0000.0001) // (PID.TID 0000.0001) deltaTMom = /* Momentum equation timestep ( s ) */ -(PID.TID 0000.0001) 1.800000000000000E+03 +(PID.TID 0000.0001) 9.000000000000000E+02 (PID.TID 0000.0001) ; (PID.TID 0000.0001) deltaTFreeSurf = /* FreeSurface equation timestep ( s ) */ -(PID.TID 0000.0001) 1.800000000000000E+03 +(PID.TID 0000.0001) 9.000000000000000E+02 (PID.TID 0000.0001) ; (PID.TID 0000.0001) dTtracerLev = /* Tracer equation timestep ( s ) */ -(PID.TID 0000.0001) 1.800000000000000E+03 /* K = 1 */ +(PID.TID 0000.0001) 9.000000000000000E+02 /* K = 1 */ (PID.TID 0000.0001) ; (PID.TID 0000.0001) deltaTClock = /* Model clock timestep ( s ) */ -(PID.TID 0000.0001) 1.800000000000000E+03 +(PID.TID 0000.0001) 9.000000000000000E+02 (PID.TID 0000.0001) ; (PID.TID 0000.0001) cAdjFreq = /* Convective adjustment interval ( s ) */ (PID.TID 0000.0001) 0.000000000000000E+00 @@ -1800,10 +1829,10 @@ (PID.TID 0000.0001) 0 (PID.TID 0000.0001) ; (PID.TID 0000.0001) nTimeSteps = /* Number of timesteps */ -(PID.TID 0000.0001) 12 +(PID.TID 0000.0001) 24 (PID.TID 0000.0001) ; (PID.TID 0000.0001) nEndIter = /* Run ending timestep number */ -(PID.TID 0000.0001) 12 +(PID.TID 0000.0001) 24 (PID.TID 0000.0001) ; (PID.TID 0000.0001) baseTime = /* Model base time ( s ) */ (PID.TID 0000.0001) 0.000000000000000E+00 @@ -2024,15 +2053,6 @@ (PID.TID 0000.0001) deepFacF = /* deep-model grid factor @ W-Interface (-) */ (PID.TID 0000.0001) 2 @ 1.000000000000000E+00 /* K = 1: 2 */ (PID.TID 0000.0001) ; -(PID.TID 0000.0001) rVel2wUnit = /* convert units: rVel -> wSpeed (=1 if z-coord)*/ -(PID.TID 0000.0001) 2 @ 1.000000000000000E+00 /* K = 1: 2 */ -(PID.TID 0000.0001) ; -(PID.TID 0000.0001) wUnit2rVel = /* convert units: wSpeed -> rVel (=1 if z-coord)*/ -(PID.TID 0000.0001) 2 @ 1.000000000000000E+00 /* K = 1: 2 */ -(PID.TID 0000.0001) ; -(PID.TID 0000.0001) dBdrRef = /* Vertical grad. of reference buoyancy [(m/s/r)^2] */ -(PID.TID 0000.0001) 0.000000000000000E+00 /* K = 1 */ -(PID.TID 0000.0001) ; (PID.TID 0000.0001) rotateGrid = /* use rotated grid ( True/False ) */ (PID.TID 0000.0001) F (PID.TID 0000.0001) ; @@ -2144,29 +2164,29 @@ listId= 1 ; file name: iceDiag 11 | 11 | 86400.000000 0.000000 | 1 levels: 1 diag# | name | ipt | iMate | kLev| count | mate.C| - 224 |SI_Fract| 1 | 0 | 1 | 0 | - 225 |SI_Thick| 2 | 1 | 1 | 0 | 0 | + 226 |SI_Fract| 1 | 0 | 1 | 0 | + 227 |SI_Thick| 2 | 1 | 1 | 0 | 0 | 26 |THETA | 3 | 0 | 1 | 0 | - 227 |SI_Tsrf | 4 | 1 | 1 | 0 | 0 | - 237 |SIflx2oc| 5 | 0 | 1 | 0 | - 238 |SIfrw2oc| 6 | 0 | 1 | 0 | - 239 |SIsaltFx| 7 | 0 | 1 | 0 | - 235 |SIflxAtm| 8 | 0 | 1 | 0 | - 236 |SIfrwAtm| 9 | 0 | 1 | 0 | - 163 |SIuice | 10 | 11 | 1 | 0 | 0 | - 164 |SIvice | 11 | 10 | 1 | 0 | 0 | + 229 |SI_Tsrf | 4 | 1 | 1 | 0 | 0 | + 239 |SIflx2oc| 5 | 0 | 1 | 0 | + 240 |SIfrw2oc| 6 | 0 | 1 | 0 | + 241 |SIsaltFx| 7 | 0 | 1 | 0 | + 237 |SIflxAtm| 8 | 0 | 1 | 0 | + 238 |SIfrwAtm| 9 | 0 | 1 | 0 | + 165 |SIuice | 10 | 11 | 1 | 0 | 0 | + 166 |SIvice | 11 | 10 | 1 | 0 | 0 | ------------------------------------------------------------------------ listId= 2 ; file name: snapshot nFlds, nActive, freq & phase , nLev 7 | 7 | -86400.000000 0.000000 | 1 levels: 1 diag# | name | ipt | iMate | kLev| count | mate.C| - 163 |SIuice | 12 | 13 | 1 | 0 | 0 | - 164 |SIvice | 13 | 12 | 1 | 0 | 0 | - 149 |SIheff | 14 | 0 | 1 | 0 | - 224 |SI_Fract| 15 | 0 | 1 | 0 | - 225 |SI_Thick| 16 | 15 | 1 | 0 | 0 | - 227 |SI_Tsrf | 17 | 15 | 1 | 0 | 0 | + 165 |SIuice | 12 | 13 | 1 | 0 | 0 | + 166 |SIvice | 13 | 12 | 1 | 0 | 0 | + 151 |SIheff | 14 | 0 | 1 | 0 | + 226 |SI_Fract| 15 | 0 | 1 | 0 | + 227 |SI_Thick| 16 | 15 | 1 | 0 | 0 | + 229 |SI_Tsrf | 17 | 15 | 1 | 0 | 0 | 26 |THETA | 18 | 0 | 1 | 0 | ------------------------------------------------------------------------ Global & Regional Statistics diagnostics: Number of lists: 1 @@ -2176,20 +2196,20 @@ listId= 1 ; file name: iceStDiag 14 | 14 | 7200.000000 1800.000000 | Regions: 0 diag# | name | ipt | iMate | Volume | mate-Vol. | - 224 |SI_Fract| 1 | 0 | 0.00000E+00 | - 225 |SI_Thick| 2 | 1 | 0.00000E+00 | 0.00000E+00 | + 226 |SI_Fract| 1 | 0 | 0.00000E+00 | + 227 |SI_Thick| 2 | 1 | 0.00000E+00 | 0.00000E+00 | 26 |THETA | 3 | 0 | 0.00000E+00 | - 227 |SI_Tsrf | 4 | 1 | 0.00000E+00 | 0.00000E+00 | - 228 |SI_Tice1| 5 | 1 | 0.00000E+00 | 0.00000E+00 | - 229 |SI_Tice2| 6 | 1 | 0.00000E+00 | 0.00000E+00 | - 237 |SIflx2oc| 7 | 0 | 0.00000E+00 | - 238 |SIfrw2oc| 8 | 0 | 0.00000E+00 | - 239 |SIsaltFx| 9 | 0 | 0.00000E+00 | - 235 |SIflxAtm| 10 | 0 | 0.00000E+00 | - 236 |SIfrwAtm| 11 | 0 | 0.00000E+00 | - 226 |SI_SnowH| 12 | 1 | 0.00000E+00 | 0.00000E+00 | - 163 |SIuice | 13 | 0 | 0.00000E+00 | - 164 |SIvice | 14 | 0 | 0.00000E+00 | + 229 |SI_Tsrf | 4 | 1 | 0.00000E+00 | 0.00000E+00 | + 230 |SI_Tice1| 5 | 1 | 0.00000E+00 | 0.00000E+00 | + 231 |SI_Tice2| 6 | 1 | 0.00000E+00 | 0.00000E+00 | + 239 |SIflx2oc| 7 | 0 | 0.00000E+00 | + 240 |SIfrw2oc| 8 | 0 | 0.00000E+00 | + 241 |SIsaltFx| 9 | 0 | 0.00000E+00 | + 237 |SIflxAtm| 10 | 0 | 0.00000E+00 | + 238 |SIfrwAtm| 11 | 0 | 0.00000E+00 | + 228 |SI_SnowH| 12 | 1 | 0.00000E+00 | 0.00000E+00 | + 165 |SIuice | 13 | 0 | 0.00000E+00 | + 166 |SIvice | 14 | 0 | 0.00000E+00 | ------------------------------------------------------------------------ (PID.TID 0000.0001) MDS_READ_FIELD: opening global file: windx.bin (PID.TID 0000.0001) MDS_READ_FIELD: opening global file: tair_4x.bin @@ -2242,9 +2262,9 @@ listId= 1 ; file name: iceStDiag (PID.TID 0000.0001) %MON trAdv_CFL_u_max = 0.0000000000000E+00 (PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 (PID.TID 0000.0001) %MON trAdv_CFL_w_max = 0.0000000000000E+00 -(PID.TID 0000.0001) %MON advcfl_uvel_max = 1.9690054439531E-01 -(PID.TID 0000.0001) %MON advcfl_vvel_max = 8.2010221574612E-02 -(PID.TID 0000.0001) %MON advcfl_wvel_max = 8.7816487489057E-02 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 9.8450272197654E-02 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 4.1005110787306E-02 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 4.3908243744528E-02 (PID.TID 0000.0001) %MON advcfl_W_hf_max = 0.0000000000000E+00 (PID.TID 0000.0001) %MON pe_b_mean = 0.0000000000000E+00 (PID.TID 0000.0001) %MON ke_max = 1.4564487757410E-01 @@ -2409,29 +2429,40 @@ listId= 1 ; file name: iceStDiag (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR EXF statistics (PID.TID 0000.0001) // ======================================================= - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 8.33439597E-01 1.20506078E-01 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 2.35737084E+03 5.23300008E+02 - SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 1.10611793E-06 1.19316739E-02 - SEAICE_LSR (ipass= 1) iters,dV,Resid= 502 9.93356005E-13 7.37873538E-09 - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 7.90680830E-01 1.27481070E-01 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 8.89176982E+01 1.13326545E+01 - SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 3.33219075E-05 5.95807665E-02 - SEAICE_LSR (ipass= 2) iters,dV,Resid= 392 9.51150400E-13 2.95263878E-10 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 8.33439597E-01 1.20506078E-01 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 2.35740960E+03 5.23309025E+02 + SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 1.10610101E-06 1.19317410E-02 + SEAICE_LSR (ipass= 1) iters,dV,Resid= 502 9.93358824E-13 7.37875585E-09 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 7.90681342E-01 1.27481328E-01 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 8.89207011E+01 1.13330631E+01 + SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 3.33228975E-05 5.95852058E-02 + SEAICE_LSR (ipass= 2) iters,dV,Resid= 392 9.51135221E-13 2.95269106E-10 + Computing Diagnostic # 165 SIuice Counter: 1 Parms: UU M1 + Vector Mate for SIuice Diagnostic # 166 SIvice exists + Computing Diagnostic # 166 SIvice Counter: 1 Parms: VV M1 + Vector Mate for SIvice Diagnostic # 165 SIuice exists + Computing Diagnostic # 151 SIheff Counter: 1 Parms: SM M1 + Computing Diagnostic # 226 SI_Fract Counter: 1 Parms: SM P M1 + Computing Diagnostic # 227 SI_Thick Counter: 1 Parms: SM PC M1 + use Counter Mate for SI_Thick Diagnostic # 226 SI_Fract + Computing Diagnostic # 229 SI_Tsrf Counter: 1 Parms: SM C M1 + use Counter Mate for SI_Tsrf Diagnostic # 226 SI_Fract + Computing Diagnostic # 26 THETA Counter: 1 Parms: SMR MR (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // Begin MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= -(PID.TID 0000.0001) %MON seaice_tsnumber = 1 +(PID.TID 0000.0001) %MON seaice_tsnumber = 2 (PID.TID 0000.0001) %MON seaice_time_sec = 1.8000000000000E+03 -(PID.TID 0000.0001) %MON seaice_uice_max = 2.8588538990214E-01 -(PID.TID 0000.0001) %MON seaice_uice_min = 6.3158501874265E-03 -(PID.TID 0000.0001) %MON seaice_uice_mean = 1.8809666978113E-01 -(PID.TID 0000.0001) %MON seaice_uice_sd = 9.5014074230491E-02 -(PID.TID 0000.0001) %MON seaice_uice_del2 = 6.5182695329844E-05 -(PID.TID 0000.0001) %MON seaice_vice_max = 7.5679091185730E-03 -(PID.TID 0000.0001) %MON seaice_vice_min = -7.2445989601779E-03 -(PID.TID 0000.0001) %MON seaice_vice_mean = -7.7328976195178E-05 -(PID.TID 0000.0001) %MON seaice_vice_sd = 2.9082343728416E-03 -(PID.TID 0000.0001) %MON seaice_vice_del2 = 2.1051239057076E-06 +(PID.TID 0000.0001) %MON seaice_uice_max = 2.8588000066545E-01 +(PID.TID 0000.0001) %MON seaice_uice_min = 6.3156810660238E-03 +(PID.TID 0000.0001) %MON seaice_uice_mean = 1.8809306801570E-01 +(PID.TID 0000.0001) %MON seaice_uice_sd = 9.5012357249819E-02 +(PID.TID 0000.0001) %MON seaice_uice_del2 = 6.5181397629905E-05 +(PID.TID 0000.0001) %MON seaice_vice_max = 7.5677056007996E-03 +(PID.TID 0000.0001) %MON seaice_vice_min = -7.2442628295366E-03 +(PID.TID 0000.0001) %MON seaice_vice_mean = -7.7305000521621E-05 +(PID.TID 0000.0001) %MON seaice_vice_sd = 2.9081319040201E-03 +(PID.TID 0000.0001) %MON seaice_vice_del2 = 2.1050494703053E-06 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= @@ -2439,97 +2470,86 @@ listId= 1 ; file name: iceStDiag (PID.TID 0000.0001) // Begin MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) %MON thSI_time_sec = 1.8000000000000E+03 -(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.9482539206043E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.9484400013076E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9998139192967E+10 -(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0004330219441E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0009940250930E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0000194816748E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_S = 2.0473312138041E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0032785765516E-01 +(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.9482538941805E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.9484399388042E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9998139553763E+10 +(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0004338012067E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0009936816331E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0000210885584E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_S = 2.0475036719926E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0032725098115E-01 (PID.TID 0000.0001) %MON thSI_SnwH_ave_G = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_N = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_N = 0.0000000000000E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.1061754211703E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.1041015850334E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.1077041376421E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -3.6805798424775E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -3.6805798424775E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -4.8735132065731E-01 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -4.8735132065731E-01 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -1.7313802408098E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -1.7314309797875E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -1.7313428206372E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -1.8720116256869E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -1.8720116256869E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -1.5937877370027E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.5937877370027E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.6842901256825E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.6842963230426E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.6842855551079E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -1.7014671239557E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -1.7014671239557E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -1.2740344225381E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.6674843024137E+00 -(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1584483659420E+18 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.1067950084854E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.1046960134778E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.1083422706283E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -3.6827608886553E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -3.6828508071288E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -4.8788224216476E-01 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -4.8843608268018E-01 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -1.7324035285965E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -1.7324979260096E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -1.7323339102459E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -1.8761664991455E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -1.8761664991455E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -1.5922224773333E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.5922133894237E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.6820766560794E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.6820859208102E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.6820698233151E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -1.6969787872540E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -1.6969787872540E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -1.2381641165479E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.6674315639644E+00 +(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1584611394473E+18 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= - Computing Diagnostic # 163 SIuice Counter: 1 Parms: UU M1 - Vector Mate for SIuice Diagnostic # 164 SIvice exists - Computing Diagnostic # 164 SIvice Counter: 1 Parms: VV M1 - Vector Mate for SIvice Diagnostic # 163 SIuice exists - Computing Diagnostic # 149 SIheff Counter: 1 Parms: SM M1 - Computing Diagnostic # 224 SI_Fract Counter: 1 Parms: SM P M1 - Computing Diagnostic # 225 SI_Thick Counter: 1 Parms: SM PC M1 - use Counter Mate for SI_Thick Diagnostic # 224 SI_Fract - Computing Diagnostic # 227 SI_Tsrf Counter: 1 Parms: SM C M1 - use Counter Mate for SI_Tsrf Diagnostic # 224 SI_Fract - Computing Diagnostic # 26 THETA Counter: 1 Parms: SMR MR - Compute Stats, Diag. # 224 SI_Fract vol( 0 ): 6.950E+10 Parms: SM P M1 - Compute Stats, Diag. # 225 SI_Thick vol( 0 ): 6.950E+10 Parms: SM PC M1 - use Counter Mate # 224 SI_Fract vol( 0 ): 6.950E+10 integral 6.950E+10 - Compute Stats, Diag. # 26 THETA vol( 0 ): 6.950E+11 Parms: SMR MR - Compute Stats, Diag. # 227 SI_Tsrf vol( 0 ): 6.950E+10 Parms: SM C M1 - use Counter Mate # 224 SI_Fract vol( 0 ): 6.950E+10 integral 6.950E+10 - Compute Stats, Diag. # 228 SI_Tice1 vol( 0 ): 6.950E+10 Parms: SM C M1 - use Counter Mate # 224 SI_Fract vol( 0 ): 6.950E+10 integral 6.950E+10 - Compute Stats, Diag. # 229 SI_Tice2 vol( 0 ): 6.950E+10 Parms: SM C M1 - use Counter Mate # 224 SI_Fract vol( 0 ): 6.950E+10 integral 6.950E+10 - Compute Stats, Diag. # 237 SIflx2oc vol( 0 ): 6.950E+10 Parms: SM M1 - Compute Stats, Diag. # 238 SIfrw2oc vol( 0 ): 6.950E+10 Parms: SM M1 - Compute Stats, Diag. # 239 SIsaltFx vol( 0 ): 6.950E+10 Parms: SM M1 - Compute Stats, Diag. # 235 SIflxAtm vol( 0 ): 6.950E+10 Parms: SM M1 - Compute Stats, Diag. # 236 SIfrwAtm vol( 0 ): 6.950E+10 Parms: SM M1 - Compute Stats, Diag. # 226 SI_SnowH vol( 0 ): 6.950E+10 Parms: SM PC M1 - use Counter Mate # 224 SI_Fract vol( 0 ): 6.950E+10 integral 6.950E+10 - Compute Stats, Diag. # 163 SIuice vol( 0 ): 6.900E+10 Parms: UU M1 - Compute Stats, Diag. # 164 SIvice vol( 0 ): 6.750E+10 Parms: VV M1 - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 2.61369648E-01 8.44250267E-02 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 2.68665702E+00 8.55301968E-01 - SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 2.80406220E-05 1.50070478E-02 - SEAICE_LSR (ipass= 1) iters,dV,Resid= 258 9.63110017E-13 1.19420313E-11 - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 1.34112401E-01 3.69954996E-02 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 4.16868230E+00 9.56491850E-01 - SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 4.66677409E-05 3.08486168E-02 - SEAICE_LSR (ipass= 2) iters,dV,Resid= 270 9.62192132E-13 1.03501443E-11 + Compute Stats, Diag. # 226 SI_Fract vol( 0 ): 1.390E+11 Parms: SM P M1 + Compute Stats, Diag. # 227 SI_Thick vol( 0 ): 1.390E+11 Parms: SM PC M1 + use Counter Mate # 226 SI_Fract vol( 0 ): 1.390E+11 integral 1.390E+11 + Compute Stats, Diag. # 26 THETA vol( 0 ): 1.390E+12 Parms: SMR MR + Compute Stats, Diag. # 229 SI_Tsrf vol( 0 ): 1.390E+11 Parms: SM C M1 + use Counter Mate # 226 SI_Fract vol( 0 ): 1.390E+11 integral 1.390E+11 + Compute Stats, Diag. # 230 SI_Tice1 vol( 0 ): 1.390E+11 Parms: SM C M1 + use Counter Mate # 226 SI_Fract vol( 0 ): 1.390E+11 integral 1.390E+11 + Compute Stats, Diag. # 231 SI_Tice2 vol( 0 ): 1.390E+11 Parms: SM C M1 + use Counter Mate # 226 SI_Fract vol( 0 ): 1.390E+11 integral 1.390E+11 + Compute Stats, Diag. # 239 SIflx2oc vol( 0 ): 1.390E+11 Parms: SM M1 + Compute Stats, Diag. # 240 SIfrw2oc vol( 0 ): 1.390E+11 Parms: SM M1 + Compute Stats, Diag. # 241 SIsaltFx vol( 0 ): 1.390E+11 Parms: SM M1 + Compute Stats, Diag. # 237 SIflxAtm vol( 0 ): 1.390E+11 Parms: SM M1 + Compute Stats, Diag. # 238 SIfrwAtm vol( 0 ): 1.390E+11 Parms: SM M1 + Compute Stats, Diag. # 228 SI_SnowH vol( 0 ): 1.390E+11 Parms: SM PC M1 + use Counter Mate # 226 SI_Fract vol( 0 ): 1.390E+11 integral 1.390E+11 + Compute Stats, Diag. # 165 SIuice vol( 0 ): 1.380E+11 Parms: UU M1 + Compute Stats, Diag. # 166 SIvice vol( 0 ): 1.350E+11 Parms: VV M1 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 2.61374744E-01 8.44258091E-02 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 2.68679036E+00 8.55357363E-01 + SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 2.80411895E-05 1.50086187E-02 + SEAICE_LSR (ipass= 1) iters,dV,Resid= 258 9.63235351E-13 1.19441475E-11 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 1.34115283E-01 3.69964148E-02 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 4.17416284E+00 9.56565548E-01 + SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 4.66702394E-05 3.08514139E-02 + SEAICE_LSR (ipass= 2) iters,dV,Resid= 270 9.62336981E-13 1.03523419E-11 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // Begin MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= -(PID.TID 0000.0001) %MON seaice_tsnumber = 2 +(PID.TID 0000.0001) %MON seaice_tsnumber = 4 (PID.TID 0000.0001) %MON seaice_time_sec = 3.6000000000000E+03 -(PID.TID 0000.0001) %MON seaice_uice_max = 5.7807660076686E-01 -(PID.TID 0000.0001) %MON seaice_uice_min = 7.6992714497757E-02 -(PID.TID 0000.0001) %MON seaice_uice_mean = 4.7854220678156E-01 -(PID.TID 0000.0001) %MON seaice_uice_sd = 1.2242666035877E-01 -(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.3488615758411E-04 -(PID.TID 0000.0001) %MON seaice_vice_max = 7.8688415828962E-02 -(PID.TID 0000.0001) %MON seaice_vice_min = -6.5186002991134E-02 -(PID.TID 0000.0001) %MON seaice_vice_mean = -1.4023426425965E-05 -(PID.TID 0000.0001) %MON seaice_vice_sd = 2.3606014777294E-02 -(PID.TID 0000.0001) %MON seaice_vice_del2 = 4.4373451166640E-05 +(PID.TID 0000.0001) %MON seaice_uice_max = 5.7807290264585E-01 +(PID.TID 0000.0001) %MON seaice_uice_min = 7.6989476680113E-02 +(PID.TID 0000.0001) %MON seaice_uice_mean = 4.7853763599652E-01 +(PID.TID 0000.0001) %MON seaice_uice_sd = 1.2242841515388E-01 +(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.3493723830527E-04 +(PID.TID 0000.0001) %MON seaice_vice_max = 7.8686073621970E-02 +(PID.TID 0000.0001) %MON seaice_vice_min = -6.5185017103690E-02 +(PID.TID 0000.0001) %MON seaice_vice_mean = -1.3971467396988E-05 +(PID.TID 0000.0001) %MON seaice_vice_sd = 2.3605465992030E-02 +(PID.TID 0000.0001) %MON seaice_vice_del2 = 4.4379323458012E-05 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= @@ -2537,67 +2557,67 @@ listId= 1 ; file name: iceStDiag (PID.TID 0000.0001) // Begin MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) %MON thSI_time_sec = 3.6000000000000E+03 -(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.9414311146224E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.9422127142203E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9992184004021E+10 -(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0023094662288E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0051088233824E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0002499877547E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_S = 2.1986068207362E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0056667957720E-01 +(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.9414293900784E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.9422098395879E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9992195504905E+10 +(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0023046027326E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0051046362209E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0002446292861E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_S = 2.2011100178263E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0056939094410E-01 (PID.TID 0000.0001) %MON thSI_SnwH_ave_G = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_N = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_N = 0.0000000000000E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.1239783365740E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.1207215615041E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.1263743360065E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -3.7726641121678E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -3.7728191925572E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -4.4348326213349E-01 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -4.4449547478908E-01 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -1.7668708295472E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -1.7670590580831E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -1.7667320140088E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -2.0491658321426E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -2.0491658321426E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -1.5036973913289E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.5036667845608E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.6786586000252E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.6786827157639E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.6786408150532E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -1.7240266571417E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -1.7240266571417E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -9.9157790696120E-01 -(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.6358728871486E+00 -(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1593950894880E+18 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.1250019588391E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.1216806717896E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.1274454164472E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -3.7771424441881E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -3.7772833679670E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -4.3545028444741E-01 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -4.4266869827375E-01 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -1.7691652258210E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -1.7696490602620E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -1.7688084058902E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -2.0577655402391E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -2.0577635921326E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -1.5010642528897E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.5009636285080E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.6760684813046E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.6761447235940E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.6760122538720E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -1.7191410044165E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -1.7191409129949E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -9.4895451591682E-01 +(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.6352753252117E+00 +(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1594197067727E+18 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 1.26658341E-01 4.15281431E-02 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 3.77943971E+00 8.70396467E-01 - SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 4.06148434E-06 2.57666877E-03 - SEAICE_LSR (ipass= 1) iters,dV,Resid= 196 9.53277388E-13 5.89503961E-11 - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 5.87919033E-02 3.15645218E-02 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 3.78094400E+00 6.09113832E-01 - SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 2.95466824E-07 1.33282802E-04 - SEAICE_LSR (ipass= 2) iters,dV,Resid= 254 9.39668482E-13 1.46633909E-11 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 1.26656329E-01 4.15632034E-02 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 3.78005127E+00 8.70498945E-01 + SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 4.06316765E-06 2.57821920E-03 + SEAICE_LSR (ipass= 1) iters,dV,Resid= 196 9.55149154E-13 5.89483068E-11 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 5.87877427E-02 3.15724810E-02 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 3.78061321E+00 6.09150236E-01 + SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 2.95568878E-07 1.33347117E-04 + SEAICE_LSR (ipass= 2) iters,dV,Resid= 254 9.42381589E-13 1.47041311E-11 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // Begin MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= -(PID.TID 0000.0001) %MON seaice_tsnumber = 3 +(PID.TID 0000.0001) %MON seaice_tsnumber = 6 (PID.TID 0000.0001) %MON seaice_time_sec = 5.4000000000000E+03 -(PID.TID 0000.0001) %MON seaice_uice_max = 5.6891298230317E-01 -(PID.TID 0000.0001) %MON seaice_uice_min = 1.5749667813549E-01 -(PID.TID 0000.0001) %MON seaice_uice_mean = 4.5811444304616E-01 -(PID.TID 0000.0001) %MON seaice_uice_sd = 7.6930548942553E-02 -(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.2342478196938E-04 -(PID.TID 0000.0001) %MON seaice_vice_max = 9.5486412298207E-02 -(PID.TID 0000.0001) %MON seaice_vice_min = -9.1048900751943E-02 -(PID.TID 0000.0001) %MON seaice_vice_mean = -1.2949626640188E-03 -(PID.TID 0000.0001) %MON seaice_vice_sd = 3.4248136980704E-02 -(PID.TID 0000.0001) %MON seaice_vice_del2 = 5.5150437111547E-05 +(PID.TID 0000.0001) %MON seaice_uice_max = 5.6891177835247E-01 +(PID.TID 0000.0001) %MON seaice_uice_min = 1.5745373987876E-01 +(PID.TID 0000.0001) %MON seaice_uice_mean = 4.5810429651922E-01 +(PID.TID 0000.0001) %MON seaice_uice_sd = 7.6951140013552E-02 +(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.2359319516150E-04 +(PID.TID 0000.0001) %MON seaice_vice_max = 9.5483540829499E-02 +(PID.TID 0000.0001) %MON seaice_vice_min = -9.1015574102371E-02 +(PID.TID 0000.0001) %MON seaice_vice_mean = -1.2892901876725E-03 +(PID.TID 0000.0001) %MON seaice_vice_sd = 3.4237698314309E-02 +(PID.TID 0000.0001) %MON seaice_vice_del2 = 5.5506460670904E-05 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= @@ -2605,67 +2625,67 @@ listId= 1 ; file name: iceStDiag (PID.TID 0000.0001) // Begin MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) %MON thSI_time_sec = 5.4000000000000E+03 -(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.9354148532712E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.9365042416983E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9989106115729E+10 -(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0039539618881E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0089291099419E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0003005810597E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_S = 2.3852802861800E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0084559111782E-01 +(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.9354178967083E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.9365002145323E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9989176821760E+10 +(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0039394283965E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0089128847835E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0002873012690E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_S = 2.3902108812363E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0084791435179E-01 (PID.TID 0000.0001) %MON thSI_SnwH_ave_G = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_N = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_N = 0.0000000000000E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.1431724283421E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.1387827424208E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.1463958890742E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -3.8654066932352E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -3.8655229736811E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -3.9277201093244E-01 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -4.0509623253455E-01 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -1.8051525093210E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -1.8059522713097E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -1.8045626899307E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -2.2273422907968E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -2.2273397032330E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -1.4262355299130E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.4259718618112E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.6798211599325E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.6799953606682E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.6796926879956E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -1.7600802698739E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -1.7600800375891E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -8.0345206461562E-01 -(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.6063570236205E+00 -(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1602323844881E+18 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.1448758534892E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.1405355736147E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.1480630240676E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -3.8722791657586E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -3.8725360181309E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -3.7938160421084E-01 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -4.0332739240400E-01 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -1.8086461718062E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -1.8099052970708E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -1.8077175791659E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -2.2405141599266E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -2.2405062418046E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -1.4229026798472E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.4225588375799E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.6776741671195E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.6779464190383E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.6774733839764E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -1.7567348733397E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -1.7567347614707E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -7.6443920159708E-01 +(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.6051681520032E+00 +(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1602693972947E+18 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 3.35697727E-02 2.67236872E-02 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 4.93703865E+00 6.75491665E-01 - SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 5.78381271E-08 2.22095442E-05 - SEAICE_LSR (ipass= 1) iters,dV,Resid= 322 9.45719197E-13 1.66131865E-11 - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 2.75870054E-02 2.01959772E-02 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 5.60648855E+00 7.75344449E-01 - SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 1.66262704E-09 5.58247590E-07 - SEAICE_LSR (ipass= 2) iters,dV,Resid= 318 9.69887365E-13 1.66420646E-11 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 3.35315910E-02 2.66781713E-02 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 4.93701800E+00 6.75531874E-01 + SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 5.78302463E-08 2.22087882E-05 + SEAICE_LSR (ipass= 1) iters,dV,Resid= 322 9.52047469E-13 1.67243732E-11 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 2.75449623E-02 2.01714202E-02 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 5.59855301E+00 7.75214232E-01 + SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 1.65500991E-09 5.55118748E-07 + SEAICE_LSR (ipass= 2) iters,dV,Resid= 318 9.76690950E-13 1.67558196E-11 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // Begin MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= -(PID.TID 0000.0001) %MON seaice_tsnumber = 4 +(PID.TID 0000.0001) %MON seaice_tsnumber = 8 (PID.TID 0000.0001) %MON seaice_time_sec = 7.2000000000000E+03 -(PID.TID 0000.0001) %MON seaice_uice_max = 5.8982742684367E-01 -(PID.TID 0000.0001) %MON seaice_uice_min = 1.9150851298278E-01 -(PID.TID 0000.0001) %MON seaice_uice_mean = 4.6356065600540E-01 -(PID.TID 0000.0001) %MON seaice_uice_sd = 7.7977107400177E-02 -(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.1653537495617E-04 -(PID.TID 0000.0001) %MON seaice_vice_max = 1.1538507746618E-01 -(PID.TID 0000.0001) %MON seaice_vice_min = -1.1094124704967E-01 -(PID.TID 0000.0001) %MON seaice_vice_mean = -1.9796273101786E-03 -(PID.TID 0000.0001) %MON seaice_vice_sd = 4.3785448218009E-02 -(PID.TID 0000.0001) %MON seaice_vice_del2 = 5.6491764642222E-05 +(PID.TID 0000.0001) %MON seaice_uice_max = 5.8983256057547E-01 +(PID.TID 0000.0001) %MON seaice_uice_min = 1.9137442619644E-01 +(PID.TID 0000.0001) %MON seaice_uice_mean = 4.6355089676598E-01 +(PID.TID 0000.0001) %MON seaice_uice_sd = 7.7999416089823E-02 +(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.1675196807897E-04 +(PID.TID 0000.0001) %MON seaice_vice_max = 1.1538111752947E-01 +(PID.TID 0000.0001) %MON seaice_vice_min = -1.1087779650532E-01 +(PID.TID 0000.0001) %MON seaice_vice_mean = -1.9686042397536E-03 +(PID.TID 0000.0001) %MON seaice_vice_sd = 4.3765416554726E-02 +(PID.TID 0000.0001) %MON seaice_vice_del2 = 5.6979913856911E-05 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= @@ -2673,67 +2693,67 @@ listId= 1 ; file name: iceStDiag (PID.TID 0000.0001) // Begin MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) %MON thSI_time_sec = 7.2000000000000E+03 -(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.9296913827799E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.9311607718514E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9985306109285E+10 -(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0055264302254E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0125278590856E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0003939664233E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_S = 2.5793126486325E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0105337184767E-01 +(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.9297009462262E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.9311564259609E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9985445202654E+10 +(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0055002136064E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0124986283430E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0003699847888E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_S = 2.5865953753667E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0105767139050E-01 (PID.TID 0000.0001) %MON thSI_SnwH_ave_G = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_N = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_N = 0.0000000000000E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.1630543313741E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.1578380779645E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.1668781553880E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -3.9566612853199E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -3.9570193716355E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -3.3853821338370E-01 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -3.7146909354540E-01 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -1.8442924501689E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -1.8458892285763E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -1.8431148164538E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -2.4023629063389E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -2.4023523415582E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -1.3587409875908E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.3582577313353E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.6853523251104E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.6857707838748E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.6850437092454E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -1.8042885497049E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -1.8042881328034E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -6.7513567691282E-01 -(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.5793849361828E+00 -(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1609632415625E+18 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.1654258444250E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.1603676060524E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.1691338156216E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -3.9658528334590E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -3.9664242707770E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -3.2466466541540E-01 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -3.6953910997276E-01 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -1.8489945583475E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -1.8512030011265E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -1.8473658306767E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -2.4199482701582E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -2.4199350324383E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -1.3549784458104E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.3544127852447E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.6839976973750E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.6845669773004E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.6835778531410E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -1.8032918619329E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -1.8032904498778E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -6.4301781791629E-01 +(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.5777223281387E+00 +(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1610083310406E+18 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 2.01968877E-02 1.74801194E-02 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 5.21468423E+00 1.01997643E+00 - SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 3.88077228E-08 2.15340140E-05 - SEAICE_LSR (ipass= 1) iters,dV,Resid= 314 9.54590573E-13 1.54933965E-11 - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 1.84436598E-02 1.45901818E-02 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 5.33067047E+00 1.14105060E+00 - SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 5.11520841E-08 3.23885967E-05 - SEAICE_LSR (ipass= 2) iters,dV,Resid= 306 9.86211113E-13 1.52356859E-11 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 2.01474749E-02 1.74877914E-02 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 5.21349508E+00 1.02062284E+00 + SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 3.88575469E-08 2.15727103E-05 + SEAICE_LSR (ipass= 1) iters,dV,Resid= 314 9.64429925E-13 1.56476245E-11 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 1.83886741E-02 1.45882873E-02 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 5.33557346E+00 1.14253243E+00 + SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 5.11460856E-08 3.23895562E-05 + SEAICE_LSR (ipass= 2) iters,dV,Resid= 306 9.96633331E-13 1.53937991E-11 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // Begin MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= -(PID.TID 0000.0001) %MON seaice_tsnumber = 5 +(PID.TID 0000.0001) %MON seaice_tsnumber = 10 (PID.TID 0000.0001) %MON seaice_time_sec = 9.0000000000000E+03 -(PID.TID 0000.0001) %MON seaice_uice_max = 5.9802931036510E-01 -(PID.TID 0000.0001) %MON seaice_uice_min = 2.0317531626883E-01 -(PID.TID 0000.0001) %MON seaice_uice_mean = 4.6425019839911E-01 -(PID.TID 0000.0001) %MON seaice_uice_sd = 7.8490041340796E-02 -(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.1441063691113E-04 -(PID.TID 0000.0001) %MON seaice_vice_max = 1.2570559680669E-01 -(PID.TID 0000.0001) %MON seaice_vice_min = -1.1934228724376E-01 -(PID.TID 0000.0001) %MON seaice_vice_mean = -2.0869260423667E-03 -(PID.TID 0000.0001) %MON seaice_vice_sd = 4.8463231065269E-02 -(PID.TID 0000.0001) %MON seaice_vice_del2 = 5.9365278604046E-05 +(PID.TID 0000.0001) %MON seaice_uice_max = 5.9804249676075E-01 +(PID.TID 0000.0001) %MON seaice_uice_min = 2.0288596445772E-01 +(PID.TID 0000.0001) %MON seaice_uice_mean = 4.6423809821367E-01 +(PID.TID 0000.0001) %MON seaice_uice_sd = 7.8516274025035E-02 +(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.1485102684851E-04 +(PID.TID 0000.0001) %MON seaice_vice_max = 1.2571562563925E-01 +(PID.TID 0000.0001) %MON seaice_vice_min = -1.1931367955632E-01 +(PID.TID 0000.0001) %MON seaice_vice_mean = -2.0793454983409E-03 +(PID.TID 0000.0001) %MON seaice_vice_sd = 4.8451654598116E-02 +(PID.TID 0000.0001) %MON seaice_vice_del2 = 5.9915022021375E-05 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= @@ -2741,86 +2761,86 @@ listId= 1 ; file name: iceStDiag (PID.TID 0000.0001) // Begin MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) %MON thSI_time_sec = 9.0000000000000E+03 -(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.9241184998669E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.9260057193998E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9981127804671E+10 -(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0070723303238E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0160297180381E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0005168955168E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_S = 2.7554053642010E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0126789686398E-01 +(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.9241329971173E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.9259997977431E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9981331993741E+10 +(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0070358346888E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0159891252735E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0004834450775E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_S = 2.7658682927254E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0127315508117E-01 (PID.TID 0000.0001) %MON thSI_SnwH_ave_G = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_N = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_N = 0.0000000000000E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.1828070291845E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.1769534876847E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.1870909243240E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -4.0444559723380E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -4.0451483063413E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -2.8886249192206E-01 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -3.4198572566762E-01 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -1.8829368946781E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -1.8853900652333E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -1.8811276280220E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -2.5704612754284E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -2.5704409227865E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -1.2906441892946E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.2986911710271E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.6935818863641E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.6943093864164E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.6930453392479E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -1.8528070623051E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -1.8528036508145E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -5.8520713961356E-01 -(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.5550199795551E+00 -(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1615849216043E+18 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.1857895262030E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.1801893707638E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.1898879523597E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -4.0557317391770E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -4.0566016345845E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -2.7595195736235E-01 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -3.3995554539898E-01 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -1.8887637160368E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -1.8919624695642E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -1.8864045905951E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -2.5920039700698E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -2.5919851480787E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -1.2902352418359E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.2945876887886E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.6931137864937E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.6940465026439E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.6924258952945E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -1.8543615499512E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -1.8543571540238E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -5.6018328935305E-01 +(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.5530353895910E+00 +(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1616355600590E+18 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= - Compute Stats, Diag. # 224 SI_Fract vol( 0 ): 2.780E+11 Parms: SM P M1 - Compute Stats, Diag. # 225 SI_Thick vol( 0 ): 2.775E+11 Parms: SM PC M1 - use Counter Mate # 224 SI_Fract vol( 0 ): 2.780E+11 integral 2.775E+11 - Compute Stats, Diag. # 26 THETA vol( 0 ): 2.780E+12 Parms: SMR MR - Compute Stats, Diag. # 227 SI_Tsrf vol( 0 ): 2.775E+11 Parms: SM C M1 - use Counter Mate # 224 SI_Fract vol( 0 ): 2.780E+11 integral 2.775E+11 - Compute Stats, Diag. # 228 SI_Tice1 vol( 0 ): 2.775E+11 Parms: SM C M1 - use Counter Mate # 224 SI_Fract vol( 0 ): 2.780E+11 integral 2.775E+11 - Compute Stats, Diag. # 229 SI_Tice2 vol( 0 ): 2.775E+11 Parms: SM C M1 - use Counter Mate # 224 SI_Fract vol( 0 ): 2.780E+11 integral 2.775E+11 - Compute Stats, Diag. # 237 SIflx2oc vol( 0 ): 2.780E+11 Parms: SM M1 - Compute Stats, Diag. # 238 SIfrw2oc vol( 0 ): 2.780E+11 Parms: SM M1 - Compute Stats, Diag. # 239 SIsaltFx vol( 0 ): 2.780E+11 Parms: SM M1 - Compute Stats, Diag. # 235 SIflxAtm vol( 0 ): 2.780E+11 Parms: SM M1 - Compute Stats, Diag. # 236 SIfrwAtm vol( 0 ): 2.780E+11 Parms: SM M1 - Compute Stats, Diag. # 226 SI_SnowH vol( 0 ): 2.775E+11 Parms: SM PC M1 - use Counter Mate # 224 SI_Fract vol( 0 ): 2.780E+11 integral 2.775E+11 - Compute Stats, Diag. # 163 SIuice vol( 0 ): 2.760E+11 Parms: UU M1 - Compute Stats, Diag. # 164 SIvice vol( 0 ): 2.700E+11 Parms: VV M1 - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 1.65286881E-02 1.32420393E-02 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 5.83220303E+00 1.43684623E+00 - SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 7.53712374E-08 7.05272233E-05 - SEAICE_LSR (ipass= 1) iters,dV,Resid= 300 8.91689500E-13 1.29412478E-11 - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 1.54050368E-02 1.12975451E-02 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 6.19390190E+00 1.60761310E+00 - SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 7.23271565E-08 6.93622821E-05 - SEAICE_LSR (ipass= 2) iters,dV,Resid= 290 9.57053881E-13 1.32909476E-11 + Compute Stats, Diag. # 226 SI_Fract vol( 0 ): 5.560E+11 Parms: SM P M1 + Compute Stats, Diag. # 227 SI_Thick vol( 0 ): 5.550E+11 Parms: SM PC M1 + use Counter Mate # 226 SI_Fract vol( 0 ): 5.560E+11 integral 5.550E+11 + Compute Stats, Diag. # 26 THETA vol( 0 ): 5.560E+12 Parms: SMR MR + Compute Stats, Diag. # 229 SI_Tsrf vol( 0 ): 5.550E+11 Parms: SM C M1 + use Counter Mate # 226 SI_Fract vol( 0 ): 5.560E+11 integral 5.550E+11 + Compute Stats, Diag. # 230 SI_Tice1 vol( 0 ): 5.550E+11 Parms: SM C M1 + use Counter Mate # 226 SI_Fract vol( 0 ): 5.560E+11 integral 5.550E+11 + Compute Stats, Diag. # 231 SI_Tice2 vol( 0 ): 5.550E+11 Parms: SM C M1 + use Counter Mate # 226 SI_Fract vol( 0 ): 5.560E+11 integral 5.550E+11 + Compute Stats, Diag. # 239 SIflx2oc vol( 0 ): 5.560E+11 Parms: SM M1 + Compute Stats, Diag. # 240 SIfrw2oc vol( 0 ): 5.560E+11 Parms: SM M1 + Compute Stats, Diag. # 241 SIsaltFx vol( 0 ): 5.560E+11 Parms: SM M1 + Compute Stats, Diag. # 237 SIflxAtm vol( 0 ): 5.560E+11 Parms: SM M1 + Compute Stats, Diag. # 238 SIfrwAtm vol( 0 ): 5.560E+11 Parms: SM M1 + Compute Stats, Diag. # 228 SI_SnowH vol( 0 ): 5.550E+11 Parms: SM PC M1 + use Counter Mate # 226 SI_Fract vol( 0 ): 5.560E+11 integral 5.550E+11 + Compute Stats, Diag. # 165 SIuice vol( 0 ): 5.520E+11 Parms: UU M1 + Compute Stats, Diag. # 166 SIvice vol( 0 ): 5.400E+11 Parms: VV M1 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 1.65039166E-02 1.32573898E-02 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 5.84451846E+00 1.44016278E+00 + SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 7.55997000E-08 7.08609319E-05 + SEAICE_LSR (ipass= 1) iters,dV,Resid= 300 9.03319086E-13 1.31059602E-11 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 1.53774066E-02 1.13017321E-02 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 6.20860400E+00 1.61163385E+00 + SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 7.23390670E-08 6.93762040E-05 + SEAICE_LSR (ipass= 2) iters,dV,Resid= 290 9.69072045E-13 1.34573989E-11 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // Begin MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= -(PID.TID 0000.0001) %MON seaice_tsnumber = 6 +(PID.TID 0000.0001) %MON seaice_tsnumber = 12 (PID.TID 0000.0001) %MON seaice_time_sec = 1.0800000000000E+04 -(PID.TID 0000.0001) %MON seaice_uice_max = 6.0271002183890E-01 -(PID.TID 0000.0001) %MON seaice_uice_min = 2.0325160339660E-01 -(PID.TID 0000.0001) %MON seaice_uice_mean = 4.6431394904546E-01 -(PID.TID 0000.0001) %MON seaice_uice_sd = 7.9048235770198E-02 -(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.1657043178640E-04 -(PID.TID 0000.0001) %MON seaice_vice_max = 1.3233633431919E-01 -(PID.TID 0000.0001) %MON seaice_vice_min = -1.2270431313089E-01 -(PID.TID 0000.0001) %MON seaice_vice_mean = -1.9919316248966E-03 -(PID.TID 0000.0001) %MON seaice_vice_sd = 5.0610015476114E-02 -(PID.TID 0000.0001) %MON seaice_vice_del2 = 6.3948850385583E-05 +(PID.TID 0000.0001) %MON seaice_uice_max = 6.0272989798091E-01 +(PID.TID 0000.0001) %MON seaice_uice_min = 2.0268649110057E-01 +(PID.TID 0000.0001) %MON seaice_uice_mean = 4.6429764288548E-01 +(PID.TID 0000.0001) %MON seaice_uice_sd = 7.9084292541976E-02 +(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.1743857299103E-04 +(PID.TID 0000.0001) %MON seaice_vice_max = 1.3237997594615E-01 +(PID.TID 0000.0001) %MON seaice_vice_min = -1.2270613198675E-01 +(PID.TID 0000.0001) %MON seaice_vice_mean = -1.9877666830768E-03 +(PID.TID 0000.0001) %MON seaice_vice_sd = 5.0607843282868E-02 +(PID.TID 0000.0001) %MON seaice_vice_del2 = 6.4779144790048E-05 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= @@ -2828,67 +2848,67 @@ listId= 1 ; file name: iceStDiag (PID.TID 0000.0001) // Begin MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) %MON thSI_time_sec = 1.0800000000000E+04 -(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.9186130767648E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.9209406114052E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9976724653596E+10 -(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0086197155187E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0194983974830E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0006710943589E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_S = 2.9109432053516E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0149481608594E-01 +(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.9186318841831E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.9209333757007E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9976985084824E+10 +(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0085745616970E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0194479135373E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0006299064839E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_S = 2.9244142660767E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0149646652779E-01 (PID.TID 0000.0001) %MON thSI_SnwH_ave_G = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_N = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_N = 0.0000000000000E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.2018112933445E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.1954033108485E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.2064933518352E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -4.1272069328350E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -4.1281410834954E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -2.4530759663426E-01 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -3.1588424803268E-01 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -1.9200127961011E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -1.9232697185370E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -1.9176106979478E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -2.7286443096108E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -2.7286098861134E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -1.2245486015227E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.2458530284538E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.7033247288949E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.7043908417704E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.7025384320703E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -1.9028328908369E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -1.9028233756374E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -5.2024678094934E-01 -(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.5331293703025E+00 -(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1621020509718E+18 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.2053185097194E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.1992427996829E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.2097577499944E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -4.1402151774893E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -4.1412788315055E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -2.3365569560822E-01 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -3.1379494691207E-01 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -1.9268078043763E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -1.9309195073691E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -1.9237753152757E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -2.7534614374722E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -2.7534329443252E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -1.2235710556563E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.2416067129471E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.7037063503453E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.7050298396926E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.7027302421421E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -1.9068103206369E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -1.9068010820486E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -5.0134920610812E-01 +(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.5309576805998E+00 +(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1621551182925E+18 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 1.43895331E-02 1.08581144E-02 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 7.22402898E+00 1.99239410E+00 - SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 7.24478084E-08 9.94218690E-05 - SEAICE_LSR (ipass= 1) iters,dV,Resid= 286 9.93281846E-13 1.34111800E-11 - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 1.33307215E-02 9.65750596E-03 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 7.86985072E+00 2.20981877E+00 - SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 5.19661792E-08 6.88334983E-05 - SEAICE_LSR (ipass= 2) iters,dV,Resid= 278 9.05490960E-13 1.18792542E-11 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 1.44401064E-02 1.08624927E-02 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 7.23988495E+00 1.99879352E+00 + SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 7.32915121E-08 1.00284203E-04 + SEAICE_LSR (ipass= 1) iters,dV,Resid= 288 8.84903262E-13 1.19703342E-11 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 1.33704452E-02 9.65874887E-03 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 7.88075353E+00 2.21624733E+00 + SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 5.20356076E-08 6.88883739E-05 + SEAICE_LSR (ipass= 2) iters,dV,Resid= 278 9.16836052E-13 1.20255348E-11 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // Begin MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= -(PID.TID 0000.0001) %MON seaice_tsnumber = 7 +(PID.TID 0000.0001) %MON seaice_tsnumber = 14 (PID.TID 0000.0001) %MON seaice_time_sec = 1.2600000000000E+04 -(PID.TID 0000.0001) %MON seaice_uice_max = 6.0594743637505E-01 -(PID.TID 0000.0001) %MON seaice_uice_min = 1.9668666055706E-01 -(PID.TID 0000.0001) %MON seaice_uice_mean = 4.6420048691356E-01 -(PID.TID 0000.0001) %MON seaice_uice_sd = 7.9611559624848E-02 -(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.2108781999301E-04 -(PID.TID 0000.0001) %MON seaice_vice_max = 1.4142700823969E-01 -(PID.TID 0000.0001) %MON seaice_vice_min = -1.2457470571817E-01 -(PID.TID 0000.0001) %MON seaice_vice_mean = -1.8372083919213E-03 -(PID.TID 0000.0001) %MON seaice_vice_sd = 5.1777139670197E-02 -(PID.TID 0000.0001) %MON seaice_vice_del2 = 7.0902580281430E-05 +(PID.TID 0000.0001) %MON seaice_uice_max = 6.0597832719700E-01 +(PID.TID 0000.0001) %MON seaice_uice_min = 1.9587160155422E-01 +(PID.TID 0000.0001) %MON seaice_uice_mean = 4.6417954781457E-01 +(PID.TID 0000.0001) %MON seaice_uice_sd = 7.9660020906589E-02 +(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.2249909167169E-04 +(PID.TID 0000.0001) %MON seaice_vice_max = 1.4175339456169E-01 +(PID.TID 0000.0001) %MON seaice_vice_min = -1.2460343548074E-01 +(PID.TID 0000.0001) %MON seaice_vice_mean = -1.8355017971547E-03 +(PID.TID 0000.0001) %MON seaice_vice_sd = 5.1779694171590E-02 +(PID.TID 0000.0001) %MON seaice_vice_del2 = 7.2272692353903E-05 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= @@ -2896,67 +2916,67 @@ listId= 1 ; file name: iceStDiag (PID.TID 0000.0001) // Begin MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) %MON thSI_time_sec = 1.2600000000000E+04 -(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.9131362123586E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.9159262909910E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9972099213676E+10 -(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0101815601741E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0229593826690E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0008602612462E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_S = 3.0477977254317E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0176326792403E-01 +(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.9131585353562E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.9159178085501E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9972407268061E+10 +(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0101296534554E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0229009658511E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0008132024837E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_S = 3.0637956073484E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0177252799137E-01 (PID.TID 0000.0001) %MON thSI_SnwH_ave_G = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_N = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_N = 0.0000000000000E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.2196341655256E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.2126799808244E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.2247071765512E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -4.2038178906114E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -4.2049009781240E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -2.0748315029443E-01 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -2.9258225453245E-01 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -1.9547416864288E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -1.9586654698600E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -1.9518477098094E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -2.8748583757378E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -2.8748005746758E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -1.1643315220594E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.1986382393090E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.7137364331147E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.7151380947746E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.7127026410762E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -1.9523396082997E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -1.9523203655224E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -4.7177400602053E-01 -(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.5134940096244E+00 -(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1625204413235E+18 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.2235576907135E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.2169992162156E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.2283419841530E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -4.2181336951722E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -4.2193106898588E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -1.9708417624625E-01 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -2.9046782023017E-01 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -1.9623009740336E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -1.9671645003117E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -1.9587139497344E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -2.9021317150885E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -2.9020866166180E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -1.1629765915039E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.1943270438412E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.7148663811638E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.7165726377178E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.7136079560275E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -1.9584333906790E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -1.9584168842558E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -4.5774717131947E-01 +(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.5112385201009E+00 +(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1625727935927E+18 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 1.32839981E-02 9.92624199E-03 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 9.53642241E+00 2.71093488E+00 - SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 8.17123634E-08 1.04704329E-04 - SEAICE_LSR (ipass= 1) iters,dV,Resid= 280 8.82863227E-13 1.14189873E-11 - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 1.23308519E-02 9.01141463E-03 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 1.03926360E+01 2.84049552E+00 - SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 3.46436493E-08 5.76068614E-05 - SEAICE_LSR (ipass= 2) iters,dV,Resid= 270 8.88317198E-13 1.12647777E-11 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 1.33984080E-02 9.91979500E-03 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 9.50521764E+00 2.71432983E+00 + SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 8.25946989E-08 1.05814487E-04 + SEAICE_LSR (ipass= 1) iters,dV,Resid= 280 8.94333219E-13 1.15616658E-11 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 1.24349093E-02 9.00398432E-03 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 1.03150195E+01 2.84081135E+00 + SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 3.46322855E-08 5.76843390E-05 + SEAICE_LSR (ipass= 2) iters,dV,Resid= 270 8.97733277E-13 1.13794136E-11 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // Begin MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= -(PID.TID 0000.0001) %MON seaice_tsnumber = 8 +(PID.TID 0000.0001) %MON seaice_tsnumber = 16 (PID.TID 0000.0001) %MON seaice_time_sec = 1.4400000000000E+04 -(PID.TID 0000.0001) %MON seaice_uice_max = 6.0858542498772E-01 -(PID.TID 0000.0001) %MON seaice_uice_min = 1.8564872747978E-01 -(PID.TID 0000.0001) %MON seaice_uice_mean = 4.6402672565373E-01 -(PID.TID 0000.0001) %MON seaice_uice_sd = 8.0214773739535E-02 -(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.2677124170441E-04 -(PID.TID 0000.0001) %MON seaice_vice_max = 1.4982412770843E-01 -(PID.TID 0000.0001) %MON seaice_vice_min = -1.2593345052758E-01 -(PID.TID 0000.0001) %MON seaice_vice_mean = -1.6771675316785E-03 -(PID.TID 0000.0001) %MON seaice_vice_sd = 5.2568960930114E-02 -(PID.TID 0000.0001) %MON seaice_vice_del2 = 7.9974819061584E-05 +(PID.TID 0000.0001) %MON seaice_uice_max = 6.0861899485746E-01 +(PID.TID 0000.0001) %MON seaice_uice_min = 1.8465289478520E-01 +(PID.TID 0000.0001) %MON seaice_uice_mean = 4.6400141408549E-01 +(PID.TID 0000.0001) %MON seaice_uice_sd = 8.0276309223622E-02 +(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.2879213720739E-04 +(PID.TID 0000.0001) %MON seaice_vice_max = 1.5020803676210E-01 +(PID.TID 0000.0001) %MON seaice_vice_min = -1.2597919963047E-01 +(PID.TID 0000.0001) %MON seaice_vice_mean = -1.6780796309721E-03 +(PID.TID 0000.0001) %MON seaice_vice_sd = 5.2571749568313E-02 +(PID.TID 0000.0001) %MON seaice_vice_del2 = 8.1651092192841E-05 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= @@ -2964,67 +2984,67 @@ listId= 1 ; file name: iceStDiag (PID.TID 0000.0001) // Begin MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) %MON thSI_time_sec = 1.4400000000000E+04 -(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.9076741820902E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.9109471420227E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9967270400676E+10 -(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0117620531205E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0264229591747E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0010840352949E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_S = 3.1692742967036E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0205659702328E-01 +(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.9076991480584E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.9109374378608E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9967617101976E+10 +(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0117053419963E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0263586865935E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0010329595851E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_S = 3.1872326905373E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0206336383271E-01 (PID.TID 0000.0001) %MON thSI_SnwH_ave_G = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_N = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_N = 0.0000000000000E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.2359954691800E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.2284564592520E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.2414863769110E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -4.2736669602223E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -4.2748436426499E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -1.7465400952675E-01 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -2.7163626575909E-01 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -1.9866173586171E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -1.9910205180916E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -1.9833697849151E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -3.0079621185142E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -3.0078681490686E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -1.1094854920328E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.1561730446095E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.7242207637134E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.7259292055387E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.7229606933536E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -1.9999063687280E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -1.9998729531211E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -4.3438233865282E-01 -(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.4958683318289E+00 -(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1628469915727E+18 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.2402165136845E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.2331219533384E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.2453836521867E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -4.2888436550018E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -4.2900945489297E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -1.6542286360969E-01 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -2.6952108277852E-01 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -1.9947176528851E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -2.0001217702152E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -1.9907318899383E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -3.0368366562233E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -3.0367667873003E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -1.1078963442638E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.1518493817367E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.7259697237073E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.7280228790905E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.7244554355913E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -2.0077224070628E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -2.0076957471264E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -4.2405007698369E-01 +(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.4936011181381E+00 +(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1628957160545E+18 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 1.24954112E-02 8.93029391E-03 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 1.48169248E+01 3.04014438E+00 - SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 8.20876211E-08 1.02912158E-04 - SEAICE_LSR (ipass= 1) iters,dV,Resid= 274 9.24357813E-13 1.15448612E-11 - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 1.16660157E-02 8.55093894E-03 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 1.92634011E+01 3.13144751E+00 - SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 2.76194321E-08 4.35057217E-05 - SEAICE_LSR (ipass= 2) iters,dV,Resid= 264 9.09466946E-13 1.12037791E-11 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 1.26440309E-02 8.90616931E-03 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 1.43290646E+01 3.02912731E+00 + SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 8.28755621E-08 1.04026361E-04 + SEAICE_LSR (ipass= 1) iters,dV,Resid= 274 9.35494737E-13 1.16779547E-11 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 1.18104256E-02 8.51066199E-03 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 1.83322157E+01 3.10025392E+00 + SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 2.75245828E-08 4.35072852E-05 + SEAICE_LSR (ipass= 2) iters,dV,Resid= 264 9.17058096E-13 1.12912132E-11 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // Begin MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= -(PID.TID 0000.0001) %MON seaice_tsnumber = 9 +(PID.TID 0000.0001) %MON seaice_tsnumber = 18 (PID.TID 0000.0001) %MON seaice_time_sec = 1.6200000000000E+04 -(PID.TID 0000.0001) %MON seaice_uice_max = 6.1077959402359E-01 -(PID.TID 0000.0001) %MON seaice_uice_min = 1.7035467791643E-01 -(PID.TID 0000.0001) %MON seaice_uice_mean = 4.6382991153608E-01 -(PID.TID 0000.0001) %MON seaice_uice_sd = 8.0851969050731E-02 -(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.3292257116359E-04 -(PID.TID 0000.0001) %MON seaice_vice_max = 1.5688883378583E-01 -(PID.TID 0000.0001) %MON seaice_vice_min = -1.2732849329198E-01 -(PID.TID 0000.0001) %MON seaice_vice_mean = -1.5338594318180E-03 -(PID.TID 0000.0001) %MON seaice_vice_sd = 5.3184105029352E-02 -(PID.TID 0000.0001) %MON seaice_vice_del2 = 8.9503900221658E-05 +(PID.TID 0000.0001) %MON seaice_uice_max = 6.1081222663487E-01 +(PID.TID 0000.0001) %MON seaice_uice_min = 1.6918403711525E-01 +(PID.TID 0000.0001) %MON seaice_uice_mean = 4.6380069143378E-01 +(PID.TID 0000.0001) %MON seaice_uice_sd = 8.0927166633950E-02 +(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.3547840774025E-04 +(PID.TID 0000.0001) %MON seaice_vice_max = 1.5731286048729E-01 +(PID.TID 0000.0001) %MON seaice_vice_min = -1.2741542456306E-01 +(PID.TID 0000.0001) %MON seaice_vice_mean = -1.5374913369231E-03 +(PID.TID 0000.0001) %MON seaice_vice_sd = 5.3182199101814E-02 +(PID.TID 0000.0001) %MON seaice_vice_del2 = 9.1211432762648E-05 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= @@ -3032,86 +3052,86 @@ listId= 1 ; file name: iceStDiag (PID.TID 0000.0001) // Begin MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) %MON thSI_time_sec = 1.6200000000000E+04 -(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.9022188701181E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.9059960123102E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9962228578079E+10 -(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0133627404359E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0298936539525E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0013416969486E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_S = 3.2786423728301E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0237081943745E-01 +(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.9022455187348E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.9059849370683E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9962605816665E+10 +(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0133030834318E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0298256465531E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0012882714416E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_S = 3.2980568938115E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0237339473992E-01 (PID.TID 0000.0001) %MON thSI_SnwH_ave_G = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_N = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_N = 0.0000000000000E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.2507405435278E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.2425496316426E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.2566968573076E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -4.3365397959956E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -4.3377862447673E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -1.4610107131034E-01 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -2.5269527253841E-01 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -2.0153685012717E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -2.0200367289189E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -2.0119254032814E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -3.1275923072412E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -3.1274479286559E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -1.0594677728930E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.1177572688673E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.7343676254975E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.7363350773535E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.7329165117038E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -2.0445916532890E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -2.0445390420582E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -4.0459247146516E-01 -(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.4800111932061E+00 -(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1630892081632E+18 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.2551419939523E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.2474305066354E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.2607496027474E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -4.3521514058966E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -4.3534664580762E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -1.3791709054080E-01 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -2.5059640232032E-01 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -2.0237894275540E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -2.0294977888736E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -2.0195792530248E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -3.1572559748898E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -3.1571529660825E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -1.0577457709557E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.1134558062533E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.7365992046368E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.7389431710183E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.7348704234675E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -2.0537077719769E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -2.0536678692777E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -3.9698204639433E-01 +(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.4777786892524E+00 +(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1631317603354E+18 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= - Compute Stats, Diag. # 224 SI_Fract vol( 0 ): 2.780E+11 Parms: SM P M1 - Compute Stats, Diag. # 225 SI_Thick vol( 0 ): 2.766E+11 Parms: SM PC M1 - use Counter Mate # 224 SI_Fract vol( 0 ): 2.780E+11 integral 2.766E+11 - Compute Stats, Diag. # 26 THETA vol( 0 ): 2.780E+12 Parms: SMR MR - Compute Stats, Diag. # 227 SI_Tsrf vol( 0 ): 2.766E+11 Parms: SM C M1 - use Counter Mate # 224 SI_Fract vol( 0 ): 2.780E+11 integral 2.766E+11 - Compute Stats, Diag. # 228 SI_Tice1 vol( 0 ): 2.766E+11 Parms: SM C M1 - use Counter Mate # 224 SI_Fract vol( 0 ): 2.780E+11 integral 2.766E+11 - Compute Stats, Diag. # 229 SI_Tice2 vol( 0 ): 2.766E+11 Parms: SM C M1 - use Counter Mate # 224 SI_Fract vol( 0 ): 2.780E+11 integral 2.766E+11 - Compute Stats, Diag. # 237 SIflx2oc vol( 0 ): 2.780E+11 Parms: SM M1 - Compute Stats, Diag. # 238 SIfrw2oc vol( 0 ): 2.780E+11 Parms: SM M1 - Compute Stats, Diag. # 239 SIsaltFx vol( 0 ): 2.780E+11 Parms: SM M1 - Compute Stats, Diag. # 235 SIflxAtm vol( 0 ): 2.780E+11 Parms: SM M1 - Compute Stats, Diag. # 236 SIfrwAtm vol( 0 ): 2.780E+11 Parms: SM M1 - Compute Stats, Diag. # 226 SI_SnowH vol( 0 ): 2.766E+11 Parms: SM PC M1 - use Counter Mate # 224 SI_Fract vol( 0 ): 2.780E+11 integral 2.766E+11 - Compute Stats, Diag. # 163 SIuice vol( 0 ): 2.760E+11 Parms: UU M1 - Compute Stats, Diag. # 164 SIvice vol( 0 ): 2.700E+11 Parms: VV M1 - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 1.18354544E-02 8.41435659E-03 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 3.12673387E+01 3.69213251E+00 - SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 7.90586727E-08 1.01321687E-04 - SEAICE_LSR (ipass= 1) iters,dV,Resid= 270 9.20721832E-13 1.11778027E-11 - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 1.13171231E-02 7.61492199E-03 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 3.07626653E+01 3.72258866E+00 - SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 2.28712855E-08 3.54177171E-05 - SEAICE_LSR (ipass= 2) iters,dV,Resid= 260 8.89038843E-13 1.06676904E-11 + Compute Stats, Diag. # 226 SI_Fract vol( 0 ): 5.560E+11 Parms: SM P M1 + Compute Stats, Diag. # 227 SI_Thick vol( 0 ): 5.532E+11 Parms: SM PC M1 + use Counter Mate # 226 SI_Fract vol( 0 ): 5.560E+11 integral 5.532E+11 + Compute Stats, Diag. # 26 THETA vol( 0 ): 5.560E+12 Parms: SMR MR + Compute Stats, Diag. # 229 SI_Tsrf vol( 0 ): 5.532E+11 Parms: SM C M1 + use Counter Mate # 226 SI_Fract vol( 0 ): 5.560E+11 integral 5.532E+11 + Compute Stats, Diag. # 230 SI_Tice1 vol( 0 ): 5.532E+11 Parms: SM C M1 + use Counter Mate # 226 SI_Fract vol( 0 ): 5.560E+11 integral 5.532E+11 + Compute Stats, Diag. # 231 SI_Tice2 vol( 0 ): 5.532E+11 Parms: SM C M1 + use Counter Mate # 226 SI_Fract vol( 0 ): 5.560E+11 integral 5.532E+11 + Compute Stats, Diag. # 239 SIflx2oc vol( 0 ): 5.560E+11 Parms: SM M1 + Compute Stats, Diag. # 240 SIfrw2oc vol( 0 ): 5.560E+11 Parms: SM M1 + Compute Stats, Diag. # 241 SIsaltFx vol( 0 ): 5.560E+11 Parms: SM M1 + Compute Stats, Diag. # 237 SIflxAtm vol( 0 ): 5.560E+11 Parms: SM M1 + Compute Stats, Diag. # 238 SIfrwAtm vol( 0 ): 5.560E+11 Parms: SM M1 + Compute Stats, Diag. # 228 SI_SnowH vol( 0 ): 5.532E+11 Parms: SM PC M1 + use Counter Mate # 226 SI_Fract vol( 0 ): 5.560E+11 integral 5.532E+11 + Compute Stats, Diag. # 165 SIuice vol( 0 ): 5.520E+11 Parms: UU M1 + Compute Stats, Diag. # 166 SIvice vol( 0 ): 5.400E+11 Parms: VV M1 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 1.19937421E-02 8.37422470E-03 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 3.00600323E+01 3.63151604E+00 + SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 7.97904599E-08 1.02390962E-04 + SEAICE_LSR (ipass= 1) iters,dV,Resid= 270 9.32018351E-13 1.13074557E-11 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 1.14051678E-02 7.65785541E-03 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 3.00108638E+01 3.66921803E+00 + SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 2.27128536E-08 3.53107626E-05 + SEAICE_LSR (ipass= 2) iters,dV,Resid= 260 8.95436503E-13 1.07369089E-11 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // Begin MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= -(PID.TID 0000.0001) %MON seaice_tsnumber = 10 +(PID.TID 0000.0001) %MON seaice_tsnumber = 20 (PID.TID 0000.0001) %MON seaice_time_sec = 1.8000000000000E+04 -(PID.TID 0000.0001) %MON seaice_uice_max = 6.1264395785013E-01 -(PID.TID 0000.0001) %MON seaice_uice_min = 1.5501879708363E-01 -(PID.TID 0000.0001) %MON seaice_uice_mean = 4.6362357050274E-01 -(PID.TID 0000.0001) %MON seaice_uice_sd = 8.1510372863770E-02 -(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.3906985330909E-04 -(PID.TID 0000.0001) %MON seaice_vice_max = 1.6276649255362E-01 -(PID.TID 0000.0001) %MON seaice_vice_min = -1.2886034307673E-01 -(PID.TID 0000.0001) %MON seaice_vice_mean = -1.4127793186979E-03 -(PID.TID 0000.0001) %MON seaice_vice_sd = 5.3687781491635E-02 -(PID.TID 0000.0001) %MON seaice_vice_del2 = 9.8852186308901E-05 +(PID.TID 0000.0001) %MON seaice_uice_max = 6.1267080708919E-01 +(PID.TID 0000.0001) %MON seaice_uice_min = 1.5371301854211E-01 +(PID.TID 0000.0001) %MON seaice_uice_mean = 4.6359093605089E-01 +(PID.TID 0000.0001) %MON seaice_uice_sd = 8.1598574764103E-02 +(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.4216309850147E-04 +(PID.TID 0000.0001) %MON seaice_vice_max = 1.6321246085179E-01 +(PID.TID 0000.0001) %MON seaice_vice_min = -1.2895990482468E-01 +(PID.TID 0000.0001) %MON seaice_vice_mean = -1.4192151104136E-03 +(PID.TID 0000.0001) %MON seaice_vice_sd = 5.3678004902023E-02 +(PID.TID 0000.0001) %MON seaice_vice_del2 = 1.0089827949107E-04 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= @@ -3119,67 +3139,67 @@ listId= 1 ; file name: iceStDiag (PID.TID 0000.0001) // Begin MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) %MON thSI_time_sec = 1.8000000000000E+04 -(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.8967680088890E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.9010687460823E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9956992628067E+10 -(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0149827949730E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0333736863669E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0016301283366E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_S = 3.3785198526001E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0274963329694E-01 +(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.8967956829878E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.9010563706469E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9957393123409E+10 +(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0149217712679E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0333037533172E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0015757639434E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_S = 3.3990303911865E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0274571170437E-01 (PID.TID 0000.0001) %MON thSI_SnwH_ave_G = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_N = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_N = 0.0000000000000E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.2638160019695E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.2548888427737E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.2702975464580E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -4.3925375451391E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -4.3938497752739E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -1.2116332597736E-01 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -2.3547677031819E-01 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -2.0409102901999E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -2.0456196760332E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -2.0374368256599E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -3.2339832150077E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -3.2337740893389E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -1.0137553327077E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.0828231690896E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.7439076626016E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.7460735230213E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.7423102060260E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -2.0858307884428E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -2.0857537363363E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -3.8014136011543E-01 -(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.4657004220877E+00 -(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1632547684349E+18 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.2682900021204E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.2598648589828E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.2744069715377E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -4.4082068543005E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -4.4095946010703E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -1.1391435143056E-01 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -2.3340566270581E-01 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -2.0494494801934E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -2.0552183610664E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -2.0451946638310E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -3.2637192222359E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -3.2635750519245E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -1.0119697831286E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.0785659972275E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.7464904556961E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.7490558337333E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.7445983707859E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -2.0958365390465E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -2.0957803191530E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -3.7449923057324E-01 +(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.4635299019426E+00 +(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1632890409800E+18 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 1.13647632E-02 7.37970701E-03 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 2.84609422E+01 4.31243665E+00 - SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 7.56648207E-08 1.00494862E-04 - SEAICE_LSR (ipass= 1) iters,dV,Resid= 266 9.66435265E-13 1.14475217E-11 - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 1.06732424E-02 7.01528520E-03 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 2.81210990E+01 4.61796132E+00 - SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 1.94031690E-08 3.08526264E-05 - SEAICE_LSR (ipass= 2) iters,dV,Resid= 256 9.18917720E-13 1.07601357E-11 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 1.15720550E-02 7.43284642E-03 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 2.77293844E+01 4.18612852E+00 + SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 7.64364875E-08 1.01624995E-04 + SEAICE_LSR (ipass= 1) iters,dV,Resid= 266 9.79882842E-13 1.15987784E-11 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 1.08583551E-02 7.08763994E-03 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 2.73707148E+01 4.47555832E+00 + SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 1.92375366E-08 3.06611754E-05 + SEAICE_LSR (ipass= 2) iters,dV,Resid= 256 9.26383970E-13 1.08390186E-11 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // Begin MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= -(PID.TID 0000.0001) %MON seaice_tsnumber = 11 +(PID.TID 0000.0001) %MON seaice_tsnumber = 22 (PID.TID 0000.0001) %MON seaice_time_sec = 1.9800000000000E+04 -(PID.TID 0000.0001) %MON seaice_uice_max = 6.1424931346824E-01 -(PID.TID 0000.0001) %MON seaice_uice_min = 1.4059790586977E-01 -(PID.TID 0000.0001) %MON seaice_uice_mean = 4.6341382288413E-01 -(PID.TID 0000.0001) %MON seaice_uice_sd = 8.2178478907956E-02 -(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.4510029915098E-04 -(PID.TID 0000.0001) %MON seaice_vice_max = 1.6758657584423E-01 -(PID.TID 0000.0001) %MON seaice_vice_min = -1.3180828943523E-01 -(PID.TID 0000.0001) %MON seaice_vice_mean = -1.3117894666680E-03 -(PID.TID 0000.0001) %MON seaice_vice_sd = 5.4108443788555E-02 -(PID.TID 0000.0001) %MON seaice_vice_del2 = 1.0852540190449E-04 +(PID.TID 0000.0001) %MON seaice_uice_max = 6.1426769318762E-01 +(PID.TID 0000.0001) %MON seaice_uice_min = 1.3919992895051E-01 +(PID.TID 0000.0001) %MON seaice_uice_mean = 4.6337819443470E-01 +(PID.TID 0000.0001) %MON seaice_uice_sd = 8.2278478612756E-02 +(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.4866968172772E-04 +(PID.TID 0000.0001) %MON seaice_vice_max = 1.6803871069106E-01 +(PID.TID 0000.0001) %MON seaice_vice_min = -1.3288547137667E-01 +(PID.TID 0000.0001) %MON seaice_vice_mean = -1.3210486395847E-03 +(PID.TID 0000.0001) %MON seaice_vice_sd = 5.4089763575233E-02 +(PID.TID 0000.0001) %MON seaice_vice_del2 = 1.1118320037247E-04 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= @@ -3187,56 +3207,56 @@ listId= 1 ; file name: iceStDiag (PID.TID 0000.0001) // Begin MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) %MON thSI_time_sec = 1.9800000000000E+04 -(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.8913198917403E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.8961628111754E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9951570805650E+10 -(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0166208145281E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0368637416399E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0019463445365E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_S = 3.4707521256980E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0314894516917E-01 +(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.8913469046700E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.8961481042000E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9951988004700E+10 +(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0165600783153E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0367942345259E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0018921941683E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_S = 3.4922107184097E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0313697187067E-01 (PID.TID 0000.0001) %MON thSI_SnwH_ave_G = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_N = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_N = 0.0000000000000E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.2752420606315E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.2654859309407E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.2823144583926E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -4.4419830223145E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -4.4433688973964E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -9.9277880468618E-02 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -2.1975015075511E-01 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -2.0632952612766E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -2.0678238294251E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -2.0599551605447E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -3.3277852389717E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -3.3274976923468E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -9.7186862445535E-01 -(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.0509055322776E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.7526773384921E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.7549733052429E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.7509839201812E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -2.1233484340801E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -2.1232417965908E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -3.5953873095487E-01 -(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.4527383941270E+00 -(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1633512006595E+18 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.2796950325039E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.2704527325524E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.2863948416548E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -4.4573960247831E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -4.4588758897069E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -9.2834261563617E-02 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -2.1771400055394E-01 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -2.0717774947243E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -2.0773679694807E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -2.0676542649798E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -3.3569985942131E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -3.3568058687890E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -9.7006573533213E-01 +(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.0467056858330E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.7554919301499E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.7582018764305E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.7534932213467E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -2.1338705709479E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -2.1337951618448E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -3.5530385543329E-01 +(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.4506436691123E+00 +(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1633755371494E+18 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 1.06867732E-02 6.90835771E-03 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 2.56309913E+01 5.02430402E+00 - SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 7.32660615E-08 1.00789960E-04 - SEAICE_LSR (ipass= 1) iters,dV,Resid= 264 9.26717036E-13 1.07690855E-11 - SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 1.02056773E-02 6.64252819E-03 - SEAICE_LSR: Residual FrDrift U_fd,V_fd= 2.47712738E+01 5.13013701E+00 - SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 1.68251150E-08 2.76365551E-05 - SEAICE_LSR (ipass= 2) iters,dV,Resid= 254 8.73509598E-13 1.00333108E-11 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 1 1.08646080E-02 6.99242184E-03 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 2.49199866E+01 4.87360492E+00 + SEAICE_LSR (ipass= 1) iters,dU,Resid= 1500 7.41646212E-08 1.02101708E-04 + SEAICE_LSR (ipass= 1) iters,dV,Resid= 264 9.42912415E-13 1.09499866E-11 + SEAICE_LSR: Residual Initial ipass,Uice,Vice= 2 1.03838491E-02 6.73659333E-03 + SEAICE_LSR: Residual FrDrift U_fd,V_fd= 2.40548176E+01 4.98030928E+00 + SEAICE_LSR (ipass= 2) iters,dU,Resid= 1500 1.67309966E-08 2.74316636E-05 + SEAICE_LSR (ipass= 2) iters,dV,Resid= 254 8.83140783E-13 1.01374740E-11 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // Begin MONITOR dynamic field statistics (PID.TID 0000.0001) // ======================================================= -(PID.TID 0000.0001) %MON time_tsnumber = 12 +(PID.TID 0000.0001) %MON time_tsnumber = 24 (PID.TID 0000.0001) %MON time_secondsf = 2.1600000000000E+04 (PID.TID 0000.0001) %MON dynstat_eta_max = 0.0000000000000E+00 (PID.TID 0000.0001) %MON dynstat_eta_min = 0.0000000000000E+00 @@ -3258,22 +3278,22 @@ listId= 1 ; file name: iceStDiag (PID.TID 0000.0001) %MON dynstat_wvel_mean = -1.8006686469634E-21 (PID.TID 0000.0001) %MON dynstat_wvel_sd = 1.8006622332191E-05 (PID.TID 0000.0001) %MON dynstat_wvel_del2 = 3.4047422448573E-07 -(PID.TID 0000.0001) %MON dynstat_theta_max = -1.6116166858956E+00 -(PID.TID 0000.0001) %MON dynstat_theta_min = -1.6198943984140E+00 -(PID.TID 0000.0001) %MON dynstat_theta_mean = -1.6145850790965E+00 -(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.1226977817299E-03 -(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.0060575435947E-06 +(PID.TID 0000.0001) %MON dynstat_theta_max = -1.6116289876020E+00 +(PID.TID 0000.0001) %MON dynstat_theta_min = -1.6201505483769E+00 +(PID.TID 0000.0001) %MON dynstat_theta_mean = -1.6146038919065E+00 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.1179978721758E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 5.7916816120817E-06 (PID.TID 0000.0001) %MON dynstat_salt_max = 3.0000000000000E+01 (PID.TID 0000.0001) %MON dynstat_salt_min = 3.0000000000000E+01 (PID.TID 0000.0001) %MON dynstat_salt_mean = 3.0000000000000E+01 (PID.TID 0000.0001) %MON dynstat_salt_sd = 0.0000000000000E+00 (PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 -(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 1.9690054439531E-01 -(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 8.2010221574612E-02 -(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 2.9800257921617E-02 -(PID.TID 0000.0001) %MON advcfl_uvel_max = 1.9690054439531E-01 -(PID.TID 0000.0001) %MON advcfl_vvel_max = 8.2010221574612E-02 -(PID.TID 0000.0001) %MON advcfl_wvel_max = 8.7816487489057E-02 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 9.8450272197654E-02 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 4.1005110787306E-02 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 1.4900128960809E-02 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 9.8450272197654E-02 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 4.1005110787306E-02 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 4.3908243744528E-02 (PID.TID 0000.0001) %MON advcfl_W_hf_max = 0.0000000000000E+00 (PID.TID 0000.0001) %MON pe_b_mean = 0.0000000000000E+00 (PID.TID 0000.0001) %MON ke_max = 1.4564487757410E-01 @@ -3285,7 +3305,7 @@ listId= 1 ; file name: iceStDiag (PID.TID 0000.0001) %MON vort_a_sd = 1.5889649807104E-05 (PID.TID 0000.0001) %MON vort_p_mean = -6.8228760045090E-22 (PID.TID 0000.0001) %MON vort_p_sd = 3.0669223294758E-05 -(PID.TID 0000.0001) %MON surfExpan_theta_mean = 5.8225539497177E-09 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = 6.0203691997909E-09 (PID.TID 0000.0001) %MON surfExpan_salt_mean = 1.6750406018264E-20 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR dynamic field statistics @@ -3293,18 +3313,18 @@ listId= 1 ; file name: iceStDiag (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // Begin MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= -(PID.TID 0000.0001) %MON seaice_tsnumber = 12 +(PID.TID 0000.0001) %MON seaice_tsnumber = 24 (PID.TID 0000.0001) %MON seaice_time_sec = 2.1600000000000E+04 -(PID.TID 0000.0001) %MON seaice_uice_max = 6.1564839876923E-01 -(PID.TID 0000.0001) %MON seaice_uice_min = 1.2759185985814E-01 -(PID.TID 0000.0001) %MON seaice_uice_mean = 4.6320322271165E-01 -(PID.TID 0000.0001) %MON seaice_uice_sd = 8.2846803437482E-02 -(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.5088022259846E-04 -(PID.TID 0000.0001) %MON seaice_vice_max = 1.7150555247705E-01 -(PID.TID 0000.0001) %MON seaice_vice_min = -1.3767759317492E-01 -(PID.TID 0000.0001) %MON seaice_vice_mean = -1.2260255050367E-03 -(PID.TID 0000.0001) %MON seaice_vice_sd = 5.4467120912040E-02 -(PID.TID 0000.0001) %MON seaice_vice_del2 = 1.1890009089601E-04 +(PID.TID 0000.0001) %MON seaice_uice_max = 6.1565635211976E-01 +(PID.TID 0000.0001) %MON seaice_uice_min = 1.2613902459537E-01 +(PID.TID 0000.0001) %MON seaice_uice_mean = 4.6316499903727E-01 +(PID.TID 0000.0001) %MON seaice_uice_sd = 8.2957326819679E-02 +(PID.TID 0000.0001) %MON seaice_uice_del2 = 1.5476426869189E-04 +(PID.TID 0000.0001) %MON seaice_vice_max = 1.7192269716743E-01 +(PID.TID 0000.0001) %MON seaice_vice_min = -1.3870837424919E-01 +(PID.TID 0000.0001) %MON seaice_vice_mean = -1.2384930761290E-03 +(PID.TID 0000.0001) %MON seaice_vice_sd = 5.4440484840901E-02 +(PID.TID 0000.0001) %MON seaice_vice_del2 = 1.2199920508588E-04 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR SEAICE statistics (PID.TID 0000.0001) // ======================================================= @@ -3312,212 +3332,212 @@ listId= 1 ; file name: iceStDiag (PID.TID 0000.0001) // Begin MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) %MON thSI_time_sec = 2.1600000000000E+04 -(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.8858735153395E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.8912761539978E+10 -(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9945973613417E+10 -(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0182749748112E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0403636178056E-01 -(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0022872891982E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_S = 3.5566815387252E-01 -(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0356003839215E-01 +(PID.TID 0000.0001) %MON thSI_Ice_Area_G = 6.8858968514095E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_S = 2.8912567388742E+10 +(PID.TID 0000.0001) %MON thSI_Ice_Area_N = 3.9946401125353E+10 +(PID.TID 0000.0001) %MON thSI_IceH_ave_G = 2.0182163425304E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_S = 2.0402976533078E-01 +(PID.TID 0000.0001) %MON thSI_IceH_ave_N = 2.0022342423186E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_S = 3.5785604279032E-01 +(PID.TID 0000.0001) %MON thSI_IceH_max_N = 2.0353250545789E-01 (PID.TID 0000.0001) %MON thSI_SnwH_ave_G = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_ave_N = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_S = 0.0000000000000E+00 (PID.TID 0000.0001) %MON thSI_SnwH_max_N = 0.0000000000000E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.2850900503564E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.2744095745021E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.2928205429086E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -4.4853386595504E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -4.4868129597643E+00 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -7.9936972183489E-02 -(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -2.0532496763094E-01 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -2.0826700761529E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -2.0868053087914E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -2.0796200912401E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -3.4099077906874E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -3.4095293208865E+00 -(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -9.3337931573189E-01 -(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.0216195575216E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.7605915023783E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.7629457326682E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.7588551147326E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -2.1570836631195E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -2.1569426779584E+00 -(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -3.4178883181588E-01 -(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.4409528645202E+00 -(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1633856605353E+18 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_G = -2.2894451140387E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_S = -2.2792815782609E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_ave_N = -2.2968013189734E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_S = -4.5002485237845E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_min_N = -4.5018453860230E+00 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_S = -7.4169544557371E-02 +(PID.TID 0000.0001) %MON thSI_Tsrf_max_N = -2.0332776378401E-01 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_G = -2.0909513482079E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_S = -2.0961372290412E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_ave_N = -2.0871265354632E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_S = -3.4381321259936E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_min_N = -3.4378842006290E+00 +(PID.TID 0000.0001) %MON thSI_Tic1_max_S = -9.3158922245359E-01 +(PID.TID 0000.0001) %MON thSI_Tic1_max_N = -1.0174834710637E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_G = -1.7635341457071E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_S = -1.7663091022987E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_ave_N = -1.7614874944864E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_S = -2.1678005130547E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_min_N = -2.1677033786135E+00 +(PID.TID 0000.0001) %MON thSI_Tic2_max_S = -3.3855418862721E-01 +(PID.TID 0000.0001) %MON thSI_Tic2_max_N = -1.4389387324759E+00 +(PID.TID 0000.0001) %MON thSI_TotEnerg_G = -4.1633988440614E+18 (PID.TID 0000.0001) // ======================================================= (PID.TID 0000.0001) // End MONITOR Therm.SeaIce statistics (PID.TID 0000.0001) // ======================================================= - Computing Diagnostic # 224 SI_Fract Counter: 12 Parms: SM P M1 - Computing Diagnostic # 225 SI_Thick Counter: 12 Parms: SM PC M1 - use Counter Mate for SI_Thick Diagnostic # 224 SI_Fract - Computing Diagnostic # 26 THETA Counter: 12 Parms: SMR MR - Computing Diagnostic # 227 SI_Tsrf Counter: 12 Parms: SM C M1 - use Counter Mate for SI_Tsrf Diagnostic # 224 SI_Fract - Computing Diagnostic # 237 SIflx2oc Counter: 12 Parms: SM M1 - Computing Diagnostic # 238 SIfrw2oc Counter: 12 Parms: SM M1 - Computing Diagnostic # 239 SIsaltFx Counter: 12 Parms: SM M1 - Computing Diagnostic # 235 SIflxAtm Counter: 12 Parms: SM M1 - Computing Diagnostic # 236 SIfrwAtm Counter: 12 Parms: SM M1 - Computing Diagnostic # 163 SIuice Counter: 12 Parms: UU M1 - Vector Mate for SIuice Diagnostic # 164 SIvice exists - Computing Diagnostic # 164 SIvice Counter: 12 Parms: VV M1 - Vector Mate for SIvice Diagnostic # 163 SIuice exists - Compute Stats, Diag. # 224 SI_Fract vol( 0 ): 2.085E+11 Parms: SM P M1 - Compute Stats, Diag. # 225 SI_Thick vol( 0 ): 2.069E+11 Parms: SM PC M1 - use Counter Mate # 224 SI_Fract vol( 0 ): 2.085E+11 integral 2.069E+11 - Compute Stats, Diag. # 26 THETA vol( 0 ): 2.085E+12 Parms: SMR MR - Compute Stats, Diag. # 227 SI_Tsrf vol( 0 ): 2.069E+11 Parms: SM C M1 - use Counter Mate # 224 SI_Fract vol( 0 ): 2.085E+11 integral 2.069E+11 - Compute Stats, Diag. # 228 SI_Tice1 vol( 0 ): 2.069E+11 Parms: SM C M1 - use Counter Mate # 224 SI_Fract vol( 0 ): 2.085E+11 integral 2.069E+11 - Compute Stats, Diag. # 229 SI_Tice2 vol( 0 ): 2.069E+11 Parms: SM C M1 - use Counter Mate # 224 SI_Fract vol( 0 ): 2.085E+11 integral 2.069E+11 - Compute Stats, Diag. # 237 SIflx2oc vol( 0 ): 2.085E+11 Parms: SM M1 - Compute Stats, Diag. # 238 SIfrw2oc vol( 0 ): 2.085E+11 Parms: SM M1 - Compute Stats, Diag. # 239 SIsaltFx vol( 0 ): 2.085E+11 Parms: SM M1 - Compute Stats, Diag. # 235 SIflxAtm vol( 0 ): 2.085E+11 Parms: SM M1 - Compute Stats, Diag. # 236 SIfrwAtm vol( 0 ): 2.085E+11 Parms: SM M1 - Compute Stats, Diag. # 226 SI_SnowH vol( 0 ): 2.069E+11 Parms: SM PC M1 - use Counter Mate # 224 SI_Fract vol( 0 ): 2.085E+11 integral 2.069E+11 - Compute Stats, Diag. # 163 SIuice vol( 0 ): 2.070E+11 Parms: UU M1 - Compute Stats, Diag. # 164 SIvice vol( 0 ): 2.025E+11 Parms: VV M1 + Computing Diagnostic # 226 SI_Fract Counter: 24 Parms: SM P M1 + Computing Diagnostic # 227 SI_Thick Counter: 24 Parms: SM PC M1 + use Counter Mate for SI_Thick Diagnostic # 226 SI_Fract + Computing Diagnostic # 26 THETA Counter: 24 Parms: SMR MR + Computing Diagnostic # 229 SI_Tsrf Counter: 24 Parms: SM C M1 + use Counter Mate for SI_Tsrf Diagnostic # 226 SI_Fract + Computing Diagnostic # 239 SIflx2oc Counter: 24 Parms: SM M1 + Computing Diagnostic # 240 SIfrw2oc Counter: 24 Parms: SM M1 + Computing Diagnostic # 241 SIsaltFx Counter: 24 Parms: SM M1 + Computing Diagnostic # 237 SIflxAtm Counter: 24 Parms: SM M1 + Computing Diagnostic # 238 SIfrwAtm Counter: 24 Parms: SM M1 + Computing Diagnostic # 165 SIuice Counter: 24 Parms: UU M1 + Vector Mate for SIuice Diagnostic # 166 SIvice exists + Computing Diagnostic # 166 SIvice Counter: 24 Parms: VV M1 + Vector Mate for SIvice Diagnostic # 165 SIuice exists + Compute Stats, Diag. # 226 SI_Fract vol( 0 ): 4.170E+11 Parms: SM P M1 + Compute Stats, Diag. # 227 SI_Thick vol( 0 ): 4.137E+11 Parms: SM PC M1 + use Counter Mate # 226 SI_Fract vol( 0 ): 4.170E+11 integral 4.137E+11 + Compute Stats, Diag. # 26 THETA vol( 0 ): 4.170E+12 Parms: SMR MR + Compute Stats, Diag. # 229 SI_Tsrf vol( 0 ): 4.137E+11 Parms: SM C M1 + use Counter Mate # 226 SI_Fract vol( 0 ): 4.170E+11 integral 4.137E+11 + Compute Stats, Diag. # 230 SI_Tice1 vol( 0 ): 4.137E+11 Parms: SM C M1 + use Counter Mate # 226 SI_Fract vol( 0 ): 4.170E+11 integral 4.137E+11 + Compute Stats, Diag. # 231 SI_Tice2 vol( 0 ): 4.137E+11 Parms: SM C M1 + use Counter Mate # 226 SI_Fract vol( 0 ): 4.170E+11 integral 4.137E+11 + Compute Stats, Diag. # 239 SIflx2oc vol( 0 ): 4.170E+11 Parms: SM M1 + Compute Stats, Diag. # 240 SIfrw2oc vol( 0 ): 4.170E+11 Parms: SM M1 + Compute Stats, Diag. # 241 SIsaltFx vol( 0 ): 4.170E+11 Parms: SM M1 + Compute Stats, Diag. # 237 SIflxAtm vol( 0 ): 4.170E+11 Parms: SM M1 + Compute Stats, Diag. # 238 SIfrwAtm vol( 0 ): 4.170E+11 Parms: SM M1 + Compute Stats, Diag. # 228 SI_SnowH vol( 0 ): 4.137E+11 Parms: SM PC M1 + use Counter Mate # 226 SI_Fract vol( 0 ): 4.170E+11 integral 4.137E+11 + Compute Stats, Diag. # 165 SIuice vol( 0 ): 4.140E+11 Parms: UU M1 + Compute Stats, Diag. # 166 SIvice vol( 0 ): 4.050E+11 Parms: VV M1 (PID.TID 0000.0001) DIAGSTATS_CLOSE_IO: close file: iceStDiag.0000000000.txt , unit= 9 -(PID.TID 0000.0001) %CHECKPOINT 12 ckptA +(PID.TID 0000.0001) %CHECKPOINT 24 ckptA (PID.TID 0000.0001) Seconds in section "ALL [THE_MODEL_MAIN]": -(PID.TID 0000.0001) User time: 27.517810700461268 -(PID.TID 0000.0001) System time: 0.32901701144874096 -(PID.TID 0000.0001) Wall clock time: 28.529180049896240 +(PID.TID 0000.0001) User time: 29.490306854248047 +(PID.TID 0000.0001) System time: 4.6912000514566898E-002 +(PID.TID 0000.0001) Wall clock time: 29.555981159210205 (PID.TID 0000.0001) No. starts: 1 (PID.TID 0000.0001) No. stops: 1 (PID.TID 0000.0001) Seconds in section "INITIALISE_FIXED [THE_MODEL_MAIN]": -(PID.TID 0000.0001) User time: 5.4510000976733863E-002 -(PID.TID 0000.0001) System time: 9.6690001664683223E-003 -(PID.TID 0000.0001) Wall clock time: 0.13912606239318848 +(PID.TID 0000.0001) User time: 5.6442998349666595E-002 +(PID.TID 0000.0001) System time: 6.9960001856088638E-003 +(PID.TID 0000.0001) Wall clock time: 7.2374105453491211E-002 (PID.TID 0000.0001) No. starts: 1 (PID.TID 0000.0001) No. stops: 1 (PID.TID 0000.0001) Seconds in section "THE_MAIN_LOOP [THE_MODEL_MAIN]": -(PID.TID 0000.0001) User time: 27.463264070451260 -(PID.TID 0000.0001) System time: 0.31933001149445772 -(PID.TID 0000.0001) Wall clock time: 28.390015840530396 +(PID.TID 0000.0001) User time: 29.433844223618507 +(PID.TID 0000.0001) System time: 3.9837000891566277E-002 +(PID.TID 0000.0001) Wall clock time: 29.483536958694458 (PID.TID 0000.0001) No. starts: 1 (PID.TID 0000.0001) No. stops: 1 (PID.TID 0000.0001) Seconds in section "INITIALISE_VARIA [THE_MAIN_LOOP]": -(PID.TID 0000.0001) User time: 4.4278997927904129E-002 -(PID.TID 0000.0001) System time: 2.3523000068962574E-002 -(PID.TID 0000.0001) Wall clock time: 0.63800311088562012 +(PID.TID 0000.0001) User time: 3.0333995819091797E-002 +(PID.TID 0000.0001) System time: 1.9286999478936195E-002 +(PID.TID 0000.0001) Wall clock time: 5.7332992553710938E-002 (PID.TID 0000.0001) No. starts: 1 (PID.TID 0000.0001) No. stops: 1 (PID.TID 0000.0001) Seconds in section "MAIN LOOP [THE_MAIN_LOOP]": -(PID.TID 0000.0001) User time: 27.418954350054264 -(PID.TID 0000.0001) System time: 0.29580001160502434 -(PID.TID 0000.0001) Wall clock time: 27.751976966857910 +(PID.TID 0000.0001) User time: 29.403482593595982 +(PID.TID 0000.0001) System time: 2.0541001111268997E-002 +(PID.TID 0000.0001) Wall clock time: 29.426170110702515 (PID.TID 0000.0001) No. starts: 1 (PID.TID 0000.0001) No. stops: 1 (PID.TID 0000.0001) Seconds in section "MAIN_DO_LOOP [THE_MAIN_LOOP]": -(PID.TID 0000.0001) User time: 27.418856374919415 -(PID.TID 0000.0001) System time: 0.29579701274633408 -(PID.TID 0000.0001) Wall clock time: 27.751876354217529 -(PID.TID 0000.0001) No. starts: 12 -(PID.TID 0000.0001) No. stops: 12 +(PID.TID 0000.0001) User time: 29.403270751237869 +(PID.TID 0000.0001) System time: 2.0537000149488449E-002 +(PID.TID 0000.0001) Wall clock time: 29.425958633422852 +(PID.TID 0000.0001) No. starts: 24 +(PID.TID 0000.0001) No. stops: 24 (PID.TID 0000.0001) Seconds in section "FORWARD_STEP [MAIN_DO_LOOP]": -(PID.TID 0000.0001) User time: 27.418624468147755 -(PID.TID 0000.0001) System time: 0.29579001292586327 -(PID.TID 0000.0001) Wall clock time: 27.751662969589233 -(PID.TID 0000.0001) No. starts: 12 -(PID.TID 0000.0001) No. stops: 12 +(PID.TID 0000.0001) User time: 29.402858443558216 +(PID.TID 0000.0001) System time: 2.0532000809907913E-002 +(PID.TID 0000.0001) Wall clock time: 29.425533771514893 +(PID.TID 0000.0001) No. starts: 24 +(PID.TID 0000.0001) No. stops: 24 (PID.TID 0000.0001) Seconds in section "DO_STATEVARS_DIAGS [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 2.5875084102153778E-002 -(PID.TID 0000.0001) System time: 4.8980116844177246E-005 -(PID.TID 0000.0001) Wall clock time: 2.5942802429199219E-002 -(PID.TID 0000.0001) No. starts: 36 -(PID.TID 0000.0001) No. stops: 36 +(PID.TID 0000.0001) User time: 5.5908352136611938E-002 +(PID.TID 0000.0001) System time: 9.2500075697898865E-004 +(PID.TID 0000.0001) Wall clock time: 5.6859493255615234E-002 +(PID.TID 0000.0001) No. starts: 72 +(PID.TID 0000.0001) No. stops: 72 (PID.TID 0000.0001) Seconds in section "LOAD_FIELDS_DRIVER [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 6.2516048550605774E-002 -(PID.TID 0000.0001) System time: 2.9951333999633789E-006 -(PID.TID 0000.0001) Wall clock time: 6.2519073486328125E-002 -(PID.TID 0000.0001) No. starts: 12 -(PID.TID 0000.0001) No. stops: 12 +(PID.TID 0000.0001) User time: 0.11140028387308121 +(PID.TID 0000.0001) System time: 4.0009617805480957E-006 +(PID.TID 0000.0001) Wall clock time: 0.11140465736389160 +(PID.TID 0000.0001) No. starts: 24 +(PID.TID 0000.0001) No. stops: 24 (PID.TID 0000.0001) Seconds in section "EXF_GETFORCING [LOAD_FLDS_DRIVER]": -(PID.TID 0000.0001) User time: 6.2056280672550201E-002 -(PID.TID 0000.0001) System time: 9.9837779998779297E-007 -(PID.TID 0000.0001) Wall clock time: 6.2076330184936523E-002 -(PID.TID 0000.0001) No. starts: 12 -(PID.TID 0000.0001) No. stops: 12 +(PID.TID 0000.0001) User time: 0.11049450188875198 +(PID.TID 0000.0001) System time: 0.0000000000000000 +(PID.TID 0000.0001) Wall clock time: 0.11053156852722168 +(PID.TID 0000.0001) No. starts: 24 +(PID.TID 0000.0001) No. stops: 24 (PID.TID 0000.0001) Seconds in section "EXTERNAL_FLDS_LOAD [LOAD_FLDS_DRIVER]": -(PID.TID 0000.0001) User time: 1.3104081153869629E-004 -(PID.TID 0000.0001) System time: 9.8347663879394531E-007 -(PID.TID 0000.0001) Wall clock time: 1.3065338134765625E-004 -(PID.TID 0000.0001) No. starts: 12 -(PID.TID 0000.0001) No. stops: 12 +(PID.TID 0000.0001) User time: 2.2866576910018921E-004 +(PID.TID 0000.0001) System time: 0.0000000000000000 +(PID.TID 0000.0001) Wall clock time: 2.2768974304199219E-004 +(PID.TID 0000.0001) No. starts: 24 +(PID.TID 0000.0001) No. stops: 24 (PID.TID 0000.0001) Seconds in section "DO_ATMOSPHERIC_PHYS [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 9.3780457973480225E-005 -(PID.TID 0000.0001) System time: 9.9837779998779297E-007 -(PID.TID 0000.0001) Wall clock time: 9.7036361694335938E-005 -(PID.TID 0000.0001) No. starts: 12 -(PID.TID 0000.0001) No. stops: 12 +(PID.TID 0000.0001) User time: 2.0912289619445801E-004 +(PID.TID 0000.0001) System time: 0.0000000000000000 +(PID.TID 0000.0001) Wall clock time: 2.1028518676757812E-004 +(PID.TID 0000.0001) No. starts: 24 +(PID.TID 0000.0001) No. stops: 24 (PID.TID 0000.0001) Seconds in section "DO_OCEANIC_PHYS [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 27.235668644309044 -(PID.TID 0000.0001) System time: 0.28765401989221573 -(PID.TID 0000.0001) Wall clock time: 27.560529232025146 -(PID.TID 0000.0001) No. starts: 12 -(PID.TID 0000.0001) No. stops: 12 +(PID.TID 0000.0001) User time: 29.107003688812256 +(PID.TID 0000.0001) System time: 3.6219991743564606E-003 +(PID.TID 0000.0001) Wall clock time: 29.112549781799316 +(PID.TID 0000.0001) No. starts: 24 +(PID.TID 0000.0001) No. stops: 24 (PID.TID 0000.0001) Seconds in section "THSICE_MAIN [DO_OCEANIC_PHYS]": -(PID.TID 0000.0001) User time: 8.6008898913860321E-002 -(PID.TID 0000.0001) System time: 0.0000000000000000 -(PID.TID 0000.0001) Wall clock time: 8.6033582687377930E-002 -(PID.TID 0000.0001) No. starts: 12 -(PID.TID 0000.0001) No. stops: 12 +(PID.TID 0000.0001) User time: 0.17309726774692535 +(PID.TID 0000.0001) System time: 3.3209994435310364E-003 +(PID.TID 0000.0001) Wall clock time: 0.17644309997558594 +(PID.TID 0000.0001) No. starts: 24 +(PID.TID 0000.0001) No. stops: 24 (PID.TID 0000.0001) Seconds in section "SEAICE_MODEL [DO_OCEANIC_PHYS]": -(PID.TID 0000.0001) User time: 27.136534705758095 -(PID.TID 0000.0001) System time: 0.28754898160696030 -(PID.TID 0000.0001) Wall clock time: 27.461311578750610 -(PID.TID 0000.0001) No. starts: 12 -(PID.TID 0000.0001) No. stops: 12 +(PID.TID 0000.0001) User time: 28.906892687082291 +(PID.TID 0000.0001) System time: 2.9800087213516235E-004 +(PID.TID 0000.0001) Wall clock time: 28.909140110015869 +(PID.TID 0000.0001) No. starts: 24 +(PID.TID 0000.0001) No. stops: 24 (PID.TID 0000.0001) Seconds in section "SEAICE_DYNSOLVER [SEAICE_MODEL]": -(PID.TID 0000.0001) User time: 27.045055508613586 -(PID.TID 0000.0001) System time: 0.27949797362089157 -(PID.TID 0000.0001) Wall clock time: 27.361209154129028 -(PID.TID 0000.0001) No. starts: 12 -(PID.TID 0000.0001) No. stops: 12 -(PID.TID 0000.0001) Seconds in section "BLOCKING_EXCHANGES [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 2.6688575744628906E-003 -(PID.TID 0000.0001) System time: 1.9997358322143555E-005 -(PID.TID 0000.0001) Wall clock time: 2.6922225952148438E-003 +(PID.TID 0000.0001) User time: 28.699109189212322 +(PID.TID 0000.0001) System time: 1.6999989748001099E-004 +(PID.TID 0000.0001) Wall clock time: 28.701203107833862 (PID.TID 0000.0001) No. starts: 24 (PID.TID 0000.0001) No. stops: 24 +(PID.TID 0000.0001) Seconds in section "BLOCKING_EXCHANGES [FORWARD_STEP]": +(PID.TID 0000.0001) User time: 6.1080455780029297E-003 +(PID.TID 0000.0001) System time: 0.0000000000000000 +(PID.TID 0000.0001) Wall clock time: 6.1070919036865234E-003 +(PID.TID 0000.0001) No. starts: 48 +(PID.TID 0000.0001) No. stops: 48 (PID.TID 0000.0001) Seconds in section "THERMODYNAMICS [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 2.3661613464355469E-002 -(PID.TID 0000.0001) System time: 6.4000487327575684E-005 -(PID.TID 0000.0001) Wall clock time: 2.3738145828247070E-002 -(PID.TID 0000.0001) No. starts: 12 -(PID.TID 0000.0001) No. stops: 12 +(PID.TID 0000.0001) User time: 5.0441265106201172E-002 +(PID.TID 0000.0001) System time: 0.0000000000000000 +(PID.TID 0000.0001) Wall clock time: 5.0444602966308594E-002 +(PID.TID 0000.0001) No. starts: 24 +(PID.TID 0000.0001) No. stops: 24 (PID.TID 0000.0001) Seconds in section "TRC_CORRECTION_STEP [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 9.5605850219726562E-005 +(PID.TID 0000.0001) User time: 2.4604797363281250E-004 (PID.TID 0000.0001) System time: 0.0000000000000000 -(PID.TID 0000.0001) Wall clock time: 1.0061264038085938E-004 -(PID.TID 0000.0001) No. starts: 12 -(PID.TID 0000.0001) No. stops: 12 +(PID.TID 0000.0001) Wall clock time: 2.4247169494628906E-004 +(PID.TID 0000.0001) No. starts: 24 +(PID.TID 0000.0001) No. stops: 24 (PID.TID 0000.0001) Seconds in section "MONITOR [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 5.2447319030761719E-003 +(PID.TID 0000.0001) User time: 5.2111148834228516E-003 (PID.TID 0000.0001) System time: 0.0000000000000000 -(PID.TID 0000.0001) Wall clock time: 5.2471160888671875E-003 -(PID.TID 0000.0001) No. starts: 12 -(PID.TID 0000.0001) No. stops: 12 +(PID.TID 0000.0001) Wall clock time: 5.2146911621093750E-003 +(PID.TID 0000.0001) No. starts: 24 +(PID.TID 0000.0001) No. stops: 24 (PID.TID 0000.0001) Seconds in section "DO_THE_MODEL_IO [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 5.8943271636962891E-002 -(PID.TID 0000.0001) System time: 4.0110200643539429E-003 -(PID.TID 0000.0001) Wall clock time: 6.2996864318847656E-002 -(PID.TID 0000.0001) No. starts: 12 -(PID.TID 0000.0001) No. stops: 12 +(PID.TID 0000.0001) User time: 6.1699151992797852E-002 +(PID.TID 0000.0001) System time: 1.1969000101089478E-002 +(PID.TID 0000.0001) Wall clock time: 7.3909282684326172E-002 +(PID.TID 0000.0001) No. starts: 24 +(PID.TID 0000.0001) No. stops: 24 (PID.TID 0000.0001) Seconds in section "DO_WRITE_PICKUP [FORWARD_STEP]": -(PID.TID 0000.0001) User time: 2.4452209472656250E-003 -(PID.TID 0000.0001) System time: 3.9770156145095825E-003 -(PID.TID 0000.0001) Wall clock time: 6.4251422882080078E-003 -(PID.TID 0000.0001) No. starts: 12 -(PID.TID 0000.0001) No. stops: 12 +(PID.TID 0000.0001) User time: 1.5356540679931641E-003 +(PID.TID 0000.0001) System time: 4.0019974112510681E-003 +(PID.TID 0000.0001) Wall clock time: 5.5356025695800781E-003 +(PID.TID 0000.0001) No. starts: 24 +(PID.TID 0000.0001) No. stops: 24 (PID.TID 0000.0001) // ====================================================== (PID.TID 0000.0001) // Tile <-> Tile communication statistics (PID.TID 0000.0001) // ====================================================== @@ -3566,9 +3586,9 @@ listId= 1 ; file name: iceStDiag (PID.TID 0000.0001) // Total. Y spins = 0 (PID.TID 0000.0001) // Avg. Y spins = 0.00E+00 (PID.TID 0000.0001) // o Thread number: 000001 -(PID.TID 0000.0001) // No. barriers = 46950 +(PID.TID 0000.0001) // No. barriers = 46960 (PID.TID 0000.0001) // Max. barrier spins = 1 (PID.TID 0000.0001) // Min. barrier spins = 1 -(PID.TID 0000.0001) // Total barrier spins = 46950 +(PID.TID 0000.0001) // Total barrier spins = 46960 (PID.TID 0000.0001) // Avg. barrier spins = 1.00E+00 PROGRAM MAIN: Execution ended Normally diff --git a/verification/testreport b/verification/testreport index c371d31871..706a5ef01c 100755 --- a/verification/testreport +++ b/verification/testreport @@ -876,9 +876,10 @@ runmodel() echo " Divided Adjoint Run: $adm_diva_nb" >> $RUNLOG eval "let $adm_diva_nb" if [ $add_DIVA_runs -ge 1 ] ; then + extraRuns=`expr $add_DIVA_runs - 1` rm -f costf* divided.ctrl snapshot* echo -n "(add_DIVA_runs=$add_DIVA_runs) ... " - for ii in `seq 1 $add_DIVA_runs` ; do + for ii in `seq 0 $extraRuns` ; do ( eval $COMMAND ) >> $RUNLOG 2>&1 echo " additional DIVA run # $ii : done" >> $RUNLOG mv -f $OUTPUTFILE ${OUTPUTFILE}.diva_${ii} diff --git a/verification/tutorial_plume_on_slope/README b/verification/tutorial_plume_on_slope/README deleted file mode 100644 index 98fe51c536..0000000000 --- a/verification/tutorial_plume_on_slope/README +++ /dev/null @@ -1,26 +0,0 @@ -Tutorial Example: "Gravity plume on a continental slope" -======================================================== -(formerly "plume_on_slope" verification ; - also "nonhydrostatic_plume_on_slope" in release.1 branch) - -Configure and compile the code: - cd build - ../../../tools/genmake2 -mods ../code [-of my_platform_optionFile] - make depend - make - cd .. - -To run: - cd run - ln -s ../input/* . - ln -s ../build/mitgcmuv . - ./mitgcmuv > output.txt - cd .. - -There is comparison output in the directory: - results/output.txt - -Comments: - The input data is real*8 and generated using the MATLAB script - gendata.m. - diff --git a/verification/tutorial_plume_on_slope/README.md b/verification/tutorial_plume_on_slope/README.md new file mode 100644 index 0000000000..1c791a052b --- /dev/null +++ b/verification/tutorial_plume_on_slope/README.md @@ -0,0 +1,54 @@ +Tutorial Example: "Gravity plume on a continental slope" +======================================================== +(formerly "plume_on_slope" verification ; + also "nonhydrostatic_plume_on_slope" in release.1 branch) + +### Overview: +This is a 2D set-up with (variable) high-resolution and non-hydrostatic dynamics, where dense water is produced on a shelf that then flows as a gravity current down the slope. + +The **primary** test uses a no-slip bottom boundary condition (`no_slip_bottom=.TRUE.`) and no explicit drag. + +The **secondary** test `rough.Bot` uses the logarithmic law of the wall to compute the drag coefficient for quadratic bottom drag as a function of distance from the bottom (i.e. cell thickness) and a prescribed roughness length `zRoughBot = 0.01` (in meters). For this configuration (i.e. vertical grid spacing) this value of `zRoughBot` corresponds to approximately `bottomDragQuadratic=5.E-2`. For consistency, the bottom boundary conditions is set to free slip (`no_slip_bottom=.FALSE.`). + +## Instructions +Configure and compile the code: + +``` + cd build + ../../../tools/genmake2 -mods ../code [-of my_platform_optionFile] + make depend + make + cd .. +``` + +To run: + +``` + cd run + ln -s ../input/* . + ln -s ../build/mitgcmuv . + ./mitgcmuv > output.txt + cd .. +``` + +To run the **secondary** test `roughBot`: + +``` + cd run + rm * + ln -s ../input.roughBot/* . + ln -s ../input/* . + ../build/mitgcmuv > output.txt +``` + +There is comparison output in the directory: + +``` + results/output.txt + results/output.roughBot.txt +``` + +## Comments + The input data is `real*8` and generated using the MATLAB script + gendata.m. + diff --git a/verification/tutorial_plume_on_slope/code/MOM_COMMON_OPTIONS.h b/verification/tutorial_plume_on_slope/code/MOM_COMMON_OPTIONS.h new file mode 100644 index 0000000000..bda928a629 --- /dev/null +++ b/verification/tutorial_plume_on_slope/code/MOM_COMMON_OPTIONS.h @@ -0,0 +1,30 @@ +C CPP options file for mom_common package +C Use this file for selecting CPP options within the mom_common package + +#ifndef MOM_COMMON_OPTIONS_H +#define MOM_COMMON_OPTIONS_H +#include "PACKAGES_CONFIG.h" +#include "CPP_OPTIONS.h" + +#ifdef ALLOW_MOM_COMMON +C Package-specific options go here + +C allow LeithQG coefficient to be calculated +#undef ALLOW_LEITH_QG + +C allow isotropic 3-D Smagorinsky viscosity +#undef ALLOW_SMAG_3D + +C allow full 3D specification of horizontal Laplacian Viscosity +#undef ALLOW_3D_VISCAH + +C allow full 3D specification of horizontal Biharmonic Viscosity +#undef ALLOW_3D_VISCA4 + +C Compute bottom drag coefficents, following the logarithmic law of the wall, +C as a function of grid cell thickness and roughness length +C zRoughBot (order 0.01m), assuming a von Karman constant = 0.4. +#define ALLOW_BOTTOMDRAG_ROUGHNESS + +#endif /* ALLOW_MOM_COMMON */ +#endif /* MOM_COMMON_OPTIONS_H */ diff --git a/verification/tutorial_plume_on_slope/input.roughBot/data b/verification/tutorial_plume_on_slope/input.roughBot/data new file mode 100644 index 0000000000..11128f3133 --- /dev/null +++ b/verification/tutorial_plume_on_slope/input.roughBot/data @@ -0,0 +1,84 @@ +# ==================== +# | Model parameters | +# ==================== +# +# Continuous equation parameters + &PARM01 + tRef=60*1., + sRef=60*35., + viscA4=0.0E4, + viscAh=1.E-2, + viscAz=1.E-3, + bottomDragLinear=0.E-4, + no_slip_sides=.TRUE., + no_slip_bottom=.FALSE., +# Instead of a constant bottom drag coefficient, compute coefficient +# from logarithmic law of the wall and bottom roughness length. + zRoughBot = 0.01, +# For this configuration (vertical grid spacing) +# this value of zRoughBot corresponds to approximately +# bottomDragQuadratic=5.E-2, + diffK4T=0.E4, + diffKhT=0.E-2, + diffKzT=0.E-3, + diffK4S=0.E4, + diffKhS=1.E-2, + diffKzS=1.E-5, + tempAdvScheme=33, + staggerTimeStep=.TRUE., + f0=0.e-4, + beta=0.E-11, + eosType='LINEAR', + tAlpha=2.E-4, + sBeta =0.E-4, + rigidLid=.FALSE., + implicitFreeSurface=.TRUE., + hFacMin=0.05, + nonHydrostatic=.TRUE., + readBinaryPrec=64, +#- not safe to use globalFiles in multi-processors runs +#globalFiles=.TRUE., + useSingleCpuIO = .TRUE., + plotLevel=0, + & + +# Elliptic solver parameters + &PARM02 + cg2dMaxIters=300, + cg2dTargetResidual=1.E-13, + cg3dMaxIters=20, + cg3dTargetResidual=1.E-8, + & + +# Time stepping parameters + &PARM03 + nIter0=0, + nTimeSteps=20, +#nTimeSteps=8640, + deltaT=20.0, + abEps=0.01, + pChkptFreq=0.0, + chkptFreq=0.0, + dumpFreq=6000.0, +#taveFreq=864000.0, + monitorSelect=2, + monitorFreq=1., + & + +# Gridding parameters + &PARM04 + usingCartesianGrid=.TRUE., + delXfile='dx.bin', + dYspacing=200., + delZ=60*3.33333333333333333333333, + & + +# Input datasets + &PARM05 + bathyFile ='topog.slope', + hydrogThetaFile='T.init', + surfQnetFile ='Qnet.forcing', +#hydrogThetaFile='T.pickup', +#uVelInitFile ='U.pickup', +#pSurfInitFile ='Eta.pickup', + & diff --git a/verification/tutorial_plume_on_slope/input.roughBot/eedata.mth b/verification/tutorial_plume_on_slope/input.roughBot/eedata.mth new file mode 100644 index 0000000000..8558945c16 --- /dev/null +++ b/verification/tutorial_plume_on_slope/input.roughBot/eedata.mth @@ -0,0 +1,11 @@ +# Example "eedata" file for multi-threaded test +# (copy "eedata.mth" to "eedata" to use it) +# Lines beginning "#" are comments +# nTx - No. threads per process in X +# nTy - No. threads per process in Y + &EEPARMS + nTx=2, + nTy=1, + & +# Note: Some systems use & as the namelist terminator (as shown here). +# Other systems use a / character. diff --git a/verification/tutorial_plume_on_slope/results/output.roughBot.txt b/verification/tutorial_plume_on_slope/results/output.roughBot.txt new file mode 100644 index 0000000000..f875e98926 --- /dev/null +++ b/verification/tutorial_plume_on_slope/results/output.roughBot.txt @@ -0,0 +1,3235 @@ +(PID.TID 0000.0001) +(PID.TID 0000.0001) // ====================================================== +(PID.TID 0000.0001) // MITgcm UV +(PID.TID 0000.0001) // ========= +(PID.TID 0000.0001) // ====================================================== +(PID.TID 0000.0001) // execution environment starting up... +(PID.TID 0000.0001) +(PID.TID 0000.0001) // MITgcmUV version: checkpoint68o +(PID.TID 0000.0001) // Build user: jm_c +(PID.TID 0000.0001) // Build host: villon +(PID.TID 0000.0001) // Build date: Thu Mar 30 15:52:04 EDT 2023 +(PID.TID 0000.0001) +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Execution Environment parameter file "eedata" +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) ># Example "eedata" file +(PID.TID 0000.0001) ># Lines beginning "#" are comments +(PID.TID 0000.0001) ># nTx - No. threads per process in X +(PID.TID 0000.0001) ># nTy - No. threads per process in Y +(PID.TID 0000.0001) > &EEPARMS +(PID.TID 0000.0001) > / +(PID.TID 0000.0001) ># Note: Some systems use & as the +(PID.TID 0000.0001) ># namelist terminator. Other systems +(PID.TID 0000.0001) ># use a / character (as shown here). +(PID.TID 0000.0001) +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Computational Grid Specification ( see files "SIZE.h" ) +(PID.TID 0000.0001) // ( and "eedata" ) +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) nPx = 1 ; /* No. processes in X */ +(PID.TID 0000.0001) nPy = 1 ; /* No. processes in Y */ +(PID.TID 0000.0001) nSx = 4 ; /* No. tiles in X per process */ +(PID.TID 0000.0001) nSy = 1 ; /* No. tiles in Y per process */ +(PID.TID 0000.0001) sNx = 80 ; /* Tile size in X */ +(PID.TID 0000.0001) sNy = 1 ; /* Tile size in Y */ +(PID.TID 0000.0001) OLx = 3 ; /* Tile overlap distance in X */ +(PID.TID 0000.0001) OLy = 3 ; /* Tile overlap distance in Y */ +(PID.TID 0000.0001) nTx = 1 ; /* No. threads in X per process */ +(PID.TID 0000.0001) nTy = 1 ; /* No. threads in Y per process */ +(PID.TID 0000.0001) Nr = 60 ; /* No. levels in the vertical */ +(PID.TID 0000.0001) Nx = 320 ; /* Total domain size in X ( = nPx*nSx*sNx ) */ +(PID.TID 0000.0001) Ny = 1 ; /* Total domain size in Y ( = nPy*nSy*sNy ) */ +(PID.TID 0000.0001) nTiles = 4 ; /* Total no. tiles per process ( = nSx*nSy ) */ +(PID.TID 0000.0001) nProcs = 1 ; /* Total no. processes ( = nPx*nPy ) */ +(PID.TID 0000.0001) nThreads = 1 ; /* Total no. threads per process ( = nTx*nTy ) */ +(PID.TID 0000.0001) usingMPI = F ; /* Flag used to control whether MPI is in use */ +(PID.TID 0000.0001) /* note: To execute a program with MPI calls */ +(PID.TID 0000.0001) /* it must be launched appropriately e.g */ +(PID.TID 0000.0001) /* "mpirun -np 64 ......" */ +(PID.TID 0000.0001) useCoupler= F ; /* Flag used to control communications with */ +(PID.TID 0000.0001) /* other model components, through a coupler */ +(PID.TID 0000.0001) useNest2W_parent = F ;/* Control 2-W Nesting comm */ +(PID.TID 0000.0001) useNest2W_child = F ;/* Control 2-W Nesting comm */ +(PID.TID 0000.0001) debugMode = F ; /* print debug msg. (sequence of S/R calls) */ +(PID.TID 0000.0001) printMapIncludesZeros= F ; /* print zeros in Std.Output maps */ +(PID.TID 0000.0001) maxLengthPrt1D= 65 /* maxLength of 1D array printed to StdOut */ +(PID.TID 0000.0001) +(PID.TID 0000.0001) // ====================================================== +(PID.TID 0000.0001) // Mapping of tiles to threads +(PID.TID 0000.0001) // ====================================================== +(PID.TID 0000.0001) // -o- Thread 1, tiles ( 1: 4, 1: 1) +(PID.TID 0000.0001) +(PID.TID 0000.0001) // ====================================================== +(PID.TID 0000.0001) // Tile <-> Tile connectvity table +(PID.TID 0000.0001) // ====================================================== +(PID.TID 0000.0001) // Tile number: 000001 (process no. = 000000) +(PID.TID 0000.0001) // WEST: Tile = 000004, Process = 000000, Comm = put +(PID.TID 0000.0001) // bi = 000004, bj = 000001 +(PID.TID 0000.0001) // EAST: Tile = 000002, Process = 000000, Comm = put +(PID.TID 0000.0001) // bi = 000002, bj = 000001 +(PID.TID 0000.0001) // SOUTH: Tile = 000001, Process = 000000, Comm = put +(PID.TID 0000.0001) // bi = 000001, bj = 000001 +(PID.TID 0000.0001) // NORTH: Tile = 000001, Process = 000000, Comm = put +(PID.TID 0000.0001) // bi = 000001, bj = 000001 +(PID.TID 0000.0001) // Tile number: 000002 (process no. = 000000) +(PID.TID 0000.0001) // WEST: Tile = 000001, Process = 000000, Comm = put +(PID.TID 0000.0001) // bi = 000001, bj = 000001 +(PID.TID 0000.0001) // EAST: Tile = 000003, Process = 000000, Comm = put +(PID.TID 0000.0001) // bi = 000003, bj = 000001 +(PID.TID 0000.0001) // SOUTH: Tile = 000002, Process = 000000, Comm = put +(PID.TID 0000.0001) // bi = 000002, bj = 000001 +(PID.TID 0000.0001) // NORTH: Tile = 000002, Process = 000000, Comm = put +(PID.TID 0000.0001) // bi = 000002, bj = 000001 +(PID.TID 0000.0001) // Tile number: 000003 (process no. = 000000) +(PID.TID 0000.0001) // WEST: Tile = 000002, Process = 000000, Comm = put +(PID.TID 0000.0001) // bi = 000002, bj = 000001 +(PID.TID 0000.0001) // EAST: Tile = 000004, Process = 000000, Comm = put +(PID.TID 0000.0001) // bi = 000004, bj = 000001 +(PID.TID 0000.0001) // SOUTH: Tile = 000003, Process = 000000, Comm = put +(PID.TID 0000.0001) // bi = 000003, bj = 000001 +(PID.TID 0000.0001) // NORTH: Tile = 000003, Process = 000000, Comm = put +(PID.TID 0000.0001) // bi = 000003, bj = 000001 +(PID.TID 0000.0001) // Tile number: 000004 (process no. = 000000) +(PID.TID 0000.0001) // WEST: Tile = 000003, Process = 000000, Comm = put +(PID.TID 0000.0001) // bi = 000003, bj = 000001 +(PID.TID 0000.0001) // EAST: Tile = 000001, Process = 000000, Comm = put +(PID.TID 0000.0001) // bi = 000001, bj = 000001 +(PID.TID 0000.0001) // SOUTH: Tile = 000004, Process = 000000, Comm = put +(PID.TID 0000.0001) // bi = 000004, bj = 000001 +(PID.TID 0000.0001) // NORTH: Tile = 000004, Process = 000000, Comm = put +(PID.TID 0000.0001) // bi = 000004, bj = 000001 +(PID.TID 0000.0001) +(PID.TID 0000.0001) INI_PARMS: opening model parameter file "data" +(PID.TID 0000.0001) OPEN_COPY_DATA_FILE: opening file data +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Parameter file "data" +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) ># ==================== +(PID.TID 0000.0001) ># | Model parameters | +(PID.TID 0000.0001) ># ==================== +(PID.TID 0000.0001) ># +(PID.TID 0000.0001) ># Continuous equation parameters +(PID.TID 0000.0001) > &PARM01 +(PID.TID 0000.0001) > tRef=60*1., +(PID.TID 0000.0001) > sRef=60*35., +(PID.TID 0000.0001) > viscA4=0.0E4, +(PID.TID 0000.0001) > viscAh=1.E-2, +(PID.TID 0000.0001) > viscAz=1.E-3, +(PID.TID 0000.0001) > bottomDragLinear=0.E-4, +(PID.TID 0000.0001) > no_slip_sides=.TRUE., +(PID.TID 0000.0001) > no_slip_bottom=.FALSE., +(PID.TID 0000.0001) ># Instead of a constant bottom drag coefficient, compute coefficient +(PID.TID 0000.0001) ># from logarithmic law of the wall and bottom roughness length. +(PID.TID 0000.0001) > zRoughBot = 0.01, +(PID.TID 0000.0001) ># For this configuration (vertical grid spacing) +(PID.TID 0000.0001) ># this value of zRoughBot corresponds to approximately +(PID.TID 0000.0001) ># bottomDragQuadratic=5.E-2, +(PID.TID 0000.0001) > diffK4T=0.E4, +(PID.TID 0000.0001) > diffKhT=0.E-2, +(PID.TID 0000.0001) > diffKzT=0.E-3, +(PID.TID 0000.0001) > diffK4S=0.E4, +(PID.TID 0000.0001) > diffKhS=1.E-2, +(PID.TID 0000.0001) > diffKzS=1.E-5, +(PID.TID 0000.0001) > tempAdvScheme=33, +(PID.TID 0000.0001) > staggerTimeStep=.TRUE., +(PID.TID 0000.0001) > f0=0.e-4, +(PID.TID 0000.0001) > beta=0.E-11, +(PID.TID 0000.0001) > eosType='LINEAR', +(PID.TID 0000.0001) > tAlpha=2.E-4, +(PID.TID 0000.0001) > sBeta =0.E-4, +(PID.TID 0000.0001) > rigidLid=.FALSE., +(PID.TID 0000.0001) > implicitFreeSurface=.TRUE., +(PID.TID 0000.0001) > hFacMin=0.05, +(PID.TID 0000.0001) > nonHydrostatic=.TRUE., +(PID.TID 0000.0001) > readBinaryPrec=64, +(PID.TID 0000.0001) >#- not safe to use globalFiles in multi-processors runs +(PID.TID 0000.0001) >#globalFiles=.TRUE., +(PID.TID 0000.0001) > useSingleCpuIO = .TRUE., +(PID.TID 0000.0001) > plotLevel=0, +(PID.TID 0000.0001) > / +(PID.TID 0000.0001) > +(PID.TID 0000.0001) ># Elliptic solver parameters +(PID.TID 0000.0001) > &PARM02 +(PID.TID 0000.0001) > cg2dMaxIters=300, +(PID.TID 0000.0001) > cg2dTargetResidual=1.E-13, +(PID.TID 0000.0001) > cg3dMaxIters=20, +(PID.TID 0000.0001) > cg3dTargetResidual=1.E-8, +(PID.TID 0000.0001) > / +(PID.TID 0000.0001) > +(PID.TID 0000.0001) ># Time stepping parameters +(PID.TID 0000.0001) > &PARM03 +(PID.TID 0000.0001) > nIter0=0, +(PID.TID 0000.0001) > nTimeSteps=20, +(PID.TID 0000.0001) >#nTimeSteps=8640, +(PID.TID 0000.0001) > deltaT=20.0, +(PID.TID 0000.0001) > abEps=0.01, +(PID.TID 0000.0001) > pChkptFreq=0.0, +(PID.TID 0000.0001) > chkptFreq=0.0, +(PID.TID 0000.0001) > dumpFreq=6000.0, +(PID.TID 0000.0001) >#taveFreq=864000.0, +(PID.TID 0000.0001) > monitorSelect=2, +(PID.TID 0000.0001) > monitorFreq=1., +(PID.TID 0000.0001) > / +(PID.TID 0000.0001) > +(PID.TID 0000.0001) ># Gridding parameters +(PID.TID 0000.0001) > &PARM04 +(PID.TID 0000.0001) > usingCartesianGrid=.TRUE., +(PID.TID 0000.0001) > delXfile='dx.bin', +(PID.TID 0000.0001) > dYspacing=200., +(PID.TID 0000.0001) > delZ=60*3.33333333333333333333333, +(PID.TID 0000.0001) > / +(PID.TID 0000.0001) > +(PID.TID 0000.0001) ># Input datasets +(PID.TID 0000.0001) > &PARM05 +(PID.TID 0000.0001) > bathyFile ='topog.slope', +(PID.TID 0000.0001) > hydrogThetaFile='T.init', +(PID.TID 0000.0001) > surfQnetFile ='Qnet.forcing', +(PID.TID 0000.0001) >#hydrogThetaFile='T.pickup', +(PID.TID 0000.0001) >#uVelInitFile ='U.pickup', +(PID.TID 0000.0001) >#pSurfInitFile ='Eta.pickup', +(PID.TID 0000.0001) > / +(PID.TID 0000.0001) +(PID.TID 0000.0001) INI_PARMS ; starts to read PARM01 +(PID.TID 0000.0001) INI_PARMS ; read PARM01 : OK +(PID.TID 0000.0001) INI_PARMS ; starts to read PARM02 +(PID.TID 0000.0001) INI_PARMS ; read PARM02 : OK +(PID.TID 0000.0001) INI_PARMS ; starts to read PARM03 +(PID.TID 0000.0001) INI_PARMS ; read PARM03 : OK +(PID.TID 0000.0001) INI_PARMS ; starts to read PARM04 +(PID.TID 0000.0001) INI_PARMS ; read PARM04 : OK +(PID.TID 0000.0001) INI_PARMS ; starts to read PARM05 +(PID.TID 0000.0001) INI_PARMS ; read PARM05 : OK +(PID.TID 0000.0001) INI_PARMS: finished reading file "data" +(PID.TID 0000.0001) PACKAGES_BOOT: opening data.pkg +(PID.TID 0000.0001) OPEN_COPY_DATA_FILE: opening file data.pkg +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Parameter file "data.pkg" +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) ># Packages +(PID.TID 0000.0001) > &PACKAGES +(PID.TID 0000.0001) > useOBCS=.TRUE., +(PID.TID 0000.0001) > / +(PID.TID 0000.0001) +(PID.TID 0000.0001) PACKAGES_BOOT: finished reading data.pkg +(PID.TID 0000.0001) PACKAGES_BOOT: On/Off package Summary + -------- pkgs with a standard "usePKG" On/Off switch in "data.pkg": -------- + pkg/obcs compiled and used ( useOBCS = T ) + -------- pkgs without standard "usePKG" On/Off switch in "data.pkg": -------- + pkg/generic_advdiff compiled and used ( useGAD = T ) + pkg/mom_common compiled and used ( momStepping = T ) + pkg/mom_vecinv compiled but not used ( +vectorInvariantMomentum = F ) + pkg/mom_fluxform compiled and used ( & not vectorInvariantMom = T ) + pkg/monitor compiled and used ( monitorFreq > 0. = T ) + pkg/debug compiled but not used ( debugMode = F ) + pkg/rw compiled and used + pkg/mdsio compiled and used +(PID.TID 0000.0001) PACKAGES_BOOT: End of package Summary +(PID.TID 0000.0001) +(PID.TID 0000.0001) OBCS_READPARMS: opening data.obcs +(PID.TID 0000.0001) OPEN_COPY_DATA_FILE: opening file data.obcs +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Parameter file "data.obcs" +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) ># Open-boundaries +(PID.TID 0000.0001) > &OBCS_PARM01 +(PID.TID 0000.0001) > OB_Ieast=1*-1, +(PID.TID 0000.0001) > useOrlanskiEast=.TRUE., +(PID.TID 0000.0001) > useOBCSbalance=.TRUE., +(PID.TID 0000.0001) > OBCS_monitorFreq=400., +(PID.TID 0000.0001) > / +(PID.TID 0000.0001) > +(PID.TID 0000.0001) ># Orlanski parameters +(PID.TID 0000.0001) > &OBCS_PARM02 +(PID.TID 0000.0001) > Cmax=0.45, +(PID.TID 0000.0001) > cVelTimeScale=1000., +(PID.TID 0000.0001) > / +(PID.TID 0000.0001) +(PID.TID 0000.0001) OBCS_READPARMS: finished reading data.obcs +(PID.TID 0000.0001) OB_indexUnset = /* unset OB index value (i.e. no OB) */ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) Northern OB global indices : OB_Jnorth = +(PID.TID 0000.0001) 320 @ 0 /* I = 1:320 */ +(PID.TID 0000.0001) Southern OB global indices : OB_Jsouth = +(PID.TID 0000.0001) 320 @ 0 /* I = 1:320 */ +(PID.TID 0000.0001) Eastern OB global indices : OB_Ieast = +(PID.TID 0000.0001) 320 /* J = 1 */ +(PID.TID 0000.0001) Western OB global indices : OB_Iwest = +(PID.TID 0000.0001) 0 /* J = 1 */ +(PID.TID 0000.0001) +(PID.TID 0000.0001) SET_PARMS: done +(PID.TID 0000.0001) MDS_READVEC_LOC: open file: dx.bin +(PID.TID 0000.0001) S/R LOAD_GRID_SPACING: delX loaded from file: dx.bin +(PID.TID 0000.0001) Enter INI_VERTICAL_GRID: setInterFDr= T ; setCenterDr= F +(PID.TID 0000.0001) %MON XC_max = 6.4030118978311E+03 +(PID.TID 0000.0001) %MON XC_min = 6.6667527892151E+00 +(PID.TID 0000.0001) %MON XC_mean = 2.4575819181463E+03 +(PID.TID 0000.0001) %MON XC_sd = 1.7058938715763E+03 +(PID.TID 0000.0001) %MON XG_max = 6.3832517139640E+03 +(PID.TID 0000.0001) %MON XG_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON XG_mean = 2.4475463367687E+03 +(PID.TID 0000.0001) %MON XG_sd = 1.7014602049606E+03 +(PID.TID 0000.0001) %MON DXC_max = 3.9508304374678E+01 +(PID.TID 0000.0001) %MON DXC_min = 1.3333509993998E+01 +(PID.TID 0000.0001) %MON DXC_mean = 2.0071162755307E+01 +(PID.TID 0000.0001) %MON DXC_sd = 9.4906528979627E+00 +(PID.TID 0000.0001) %MON DXF_max = 3.9520367734344E+01 +(PID.TID 0000.0001) %MON DXF_min = 1.3333505578430E+01 +(PID.TID 0000.0001) %MON DXF_mean = 2.0071162755307E+01 +(PID.TID 0000.0001) %MON DXF_sd = 9.5190787885357E+00 +(PID.TID 0000.0001) %MON DXG_max = 3.9520367734344E+01 +(PID.TID 0000.0001) %MON DXG_min = 1.3333505578430E+01 +(PID.TID 0000.0001) %MON DXG_mean = 2.0071162755307E+01 +(PID.TID 0000.0001) %MON DXG_sd = 9.5190787885357E+00 +(PID.TID 0000.0001) %MON DXV_max = 3.9508304374678E+01 +(PID.TID 0000.0001) %MON DXV_min = 1.3333509993998E+01 +(PID.TID 0000.0001) %MON DXV_mean = 2.0071162755307E+01 +(PID.TID 0000.0001) %MON DXV_sd = 9.4906528979627E+00 +(PID.TID 0000.0001) %MON YC_max = 1.0000000000000E+02 +(PID.TID 0000.0001) %MON YC_min = 1.0000000000000E+02 +(PID.TID 0000.0001) %MON YC_mean = 1.0000000000000E+02 +(PID.TID 0000.0001) %MON YC_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON YG_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON YG_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON YG_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON YG_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON DYC_max = 2.0000000000000E+02 +(PID.TID 0000.0001) %MON DYC_min = 2.0000000000000E+02 +(PID.TID 0000.0001) %MON DYC_mean = 2.0000000000000E+02 +(PID.TID 0000.0001) %MON DYC_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON DYF_max = 2.0000000000000E+02 +(PID.TID 0000.0001) %MON DYF_min = 2.0000000000000E+02 +(PID.TID 0000.0001) %MON DYF_mean = 2.0000000000000E+02 +(PID.TID 0000.0001) %MON DYF_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON DYG_max = 2.0000000000000E+02 +(PID.TID 0000.0001) %MON DYG_min = 2.0000000000000E+02 +(PID.TID 0000.0001) %MON DYG_mean = 2.0000000000000E+02 +(PID.TID 0000.0001) %MON DYG_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON DYU_max = 2.0000000000000E+02 +(PID.TID 0000.0001) %MON DYU_min = 2.0000000000000E+02 +(PID.TID 0000.0001) %MON DYU_mean = 2.0000000000000E+02 +(PID.TID 0000.0001) %MON DYU_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON RA_max = 7.9040735468688E+03 +(PID.TID 0000.0001) %MON RA_min = 2.6667011156861E+03 +(PID.TID 0000.0001) %MON RA_mean = 4.0142325510614E+03 +(PID.TID 0000.0001) %MON RA_sd = 1.9038157577071E+03 +(PID.TID 0000.0001) %MON RAW_max = 7.9016608749357E+03 +(PID.TID 0000.0001) %MON RAW_min = 2.6667019987996E+03 +(PID.TID 0000.0001) %MON RAW_mean = 4.0142325510614E+03 +(PID.TID 0000.0001) %MON RAW_sd = 1.8981305795925E+03 +(PID.TID 0000.0001) %MON RAS_max = 7.9040735468688E+03 +(PID.TID 0000.0001) %MON RAS_min = 2.6667011156861E+03 +(PID.TID 0000.0001) %MON RAS_mean = 4.0142325510614E+03 +(PID.TID 0000.0001) %MON RAS_sd = 1.9038157577071E+03 +(PID.TID 0000.0001) %MON RAZ_max = 7.9016608749357E+03 +(PID.TID 0000.0001) %MON RAZ_min = 2.6667019987996E+03 +(PID.TID 0000.0001) %MON RAZ_mean = 4.0142325510614E+03 +(PID.TID 0000.0001) %MON RAZ_sd = 1.8981305795925E+03 +(PID.TID 0000.0001) %MON AngleCS_max = 1.0000000000000E+00 +(PID.TID 0000.0001) %MON AngleCS_min = 1.0000000000000E+00 +(PID.TID 0000.0001) %MON AngleCS_mean = 1.0000000000000E+00 +(PID.TID 0000.0001) %MON AngleCS_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON AngleSN_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON AngleSN_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON AngleSN_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON AngleSN_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) MDS_READ_FIELD: opening global file: topog.slope +(PID.TID 0000.0001) GAD_INIT_FIXED: GAD_OlMinSize= 2 0 1 +(PID.TID 0000.0001) +(PID.TID 0000.0001) // =================================== +(PID.TID 0000.0001) // GAD parameters : +(PID.TID 0000.0001) // =================================== +(PID.TID 0000.0001) tempAdvScheme = /* Temp. Horiz.Advection scheme selector */ +(PID.TID 0000.0001) 33 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) tempVertAdvScheme = /* Temp. Vert. Advection scheme selector */ +(PID.TID 0000.0001) 33 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) tempMultiDimAdvec = /* use Muti-Dim Advec method for Temp */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) tempSOM_Advection = /* use 2nd Order Moment Advection for Temp */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) AdamsBashforthGt = /* apply Adams-Bashforth extrapolation on Gt */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) AdamsBashforth_T = /* apply Adams-Bashforth extrapolation on Temp */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) saltAdvScheme = /* Salt. Horiz.advection scheme selector */ +(PID.TID 0000.0001) 2 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) saltVertAdvScheme = /* Salt. Vert. Advection scheme selector */ +(PID.TID 0000.0001) 2 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) saltMultiDimAdvec = /* use Muti-Dim Advec method for Salt */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) saltSOM_Advection = /* use 2nd Order Moment Advection for Salt */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) AdamsBashforthGs = /* apply Adams-Bashforth extrapolation on Gs */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) AdamsBashforth_S = /* apply Adams-Bashforth extrapolation on Salt */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) // =================================== +(PID.TID 0000.0001) %MON fCori_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON fCori_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON fCori_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON fCori_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON fCoriG_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON fCoriG_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON fCoriG_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON fCoriG_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON fCoriCos_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON fCoriCos_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON fCoriCos_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON fCoriCos_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) INI_CG2D: CG2D normalisation factor = 3.8311188275726068E-04 +(PID.TID 0000.0001) +(PID.TID 0000.0001) INI_CG3D: CG3D normalisation factor = 4.2198108575273687E-04 +(PID.TID 0000.0001) +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Model configuration +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // +(PID.TID 0000.0001) // "Physical" paramters ( PARM01 in namelist ) +(PID.TID 0000.0001) // +(PID.TID 0000.0001) buoyancyRelation = /* Type of relation to get Buoyancy */ +(PID.TID 0000.0001) 'OCEANIC' +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) fluidIsAir = /* fluid major constituent is Air */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) fluidIsWater = /* fluid major constituent is Water */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) usingPCoords = /* use p (or p*) vertical coordinate */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) usingZCoords = /* use z (or z*) vertical coordinate */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) tRef = /* Reference temperature profile ( oC or K ) */ +(PID.TID 0000.0001) 60 @ 1.000000000000000E+00 /* K = 1: 60 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) sRef = /* Reference salinity profile ( g/kg ) */ +(PID.TID 0000.0001) 60 @ 3.500000000000000E+01 /* K = 1: 60 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rhoRef = /* Density vertical profile from (Ref,sRef)( kg/m^3 ) */ +(PID.TID 0000.0001) 60 @ 9.998000000000000E+02 /* K = 1: 60 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dBdrRef = /* Vertical grad. of reference buoyancy [(m/s/r)^2] */ +(PID.TID 0000.0001) 60 @ 0.000000000000000E+00 /* K = 1: 60 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useStrainTensionVisc= /* Use StrainTension Form of Viscous Operator */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useVariableVisc = /* Use variable horizontal viscosity */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useHarmonicVisc = /* Use harmonic horizontal viscosity */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useBiharmonicVisc= /* Use biharmonic horiz. viscosity */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useSmag3D = /* Use isotropic 3-D Smagorinsky viscosity */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) viscAh = /* Lateral harmonic viscosity ( m^2/s ) */ +(PID.TID 0000.0001) 1.000000000000000E-02 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) viscAhW = /* Lateral harmonic viscosity in W eq. ( m^2/s ) */ +(PID.TID 0000.0001) 1.000000000000000E-02 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) viscA4 = /* Lateral biharmonic viscosity ( m^4/s ) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) viscA4W = /* Lateral biharmonic viscosity in W eq. ( m^2/s ) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) no_slip_sides = /* Viscous BCs: No-slip sides */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) sideDragFactor = /* side-drag scaling factor (non-dim) */ +(PID.TID 0000.0001) 2.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) viscArNr = /* vertical profile of vertical viscosity ( m^2/s )*/ +(PID.TID 0000.0001) 60 @ 1.000000000000000E-03 /* K = 1: 60 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) no_slip_bottom = /* Viscous BCs: No-slip bottom */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) bottomVisc_pCell = /* Partial-cell in bottom Visc. BC */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) bottomDragLinear = /* linear bottom-drag coefficient ( m/s ) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) bottomDragQuadratic = /* quadratic bottom-drag coefficient (-) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) zRoughBot = /* roughness length for bottom friction (m) */ +(PID.TID 0000.0001) 1.000000000000000E-02 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) selectBotDragQuadr = /* select quadratic bottom drag options */ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) diffKhT = /* Laplacian diffusion of heat laterally ( m^2/s ) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) diffK4T = /* Biharmonic diffusion of heat laterally ( m^4/s ) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) diffKhS = /* Laplacian diffusion of salt laterally ( m^2/s ) */ +(PID.TID 0000.0001) 1.000000000000000E-02 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) diffK4S = /* Biharmonic diffusion of salt laterally ( m^4/s ) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) diffKrNrT = /* vertical profile of vertical diffusion of Temp ( m^2/s )*/ +(PID.TID 0000.0001) 60 @ 0.000000000000000E+00 /* K = 1: 60 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) diffKrNrS = /* vertical profile of vertical diffusion of Salt ( m^2/s )*/ +(PID.TID 0000.0001) 60 @ 1.000000000000000E-05 /* K = 1: 60 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) diffKrBL79surf = /* Surface diffusion for Bryan and Lewis 79 ( m^2/s ) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) diffKrBL79deep = /* Deep diffusion for Bryan and Lewis 1979 ( m^2/s ) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) diffKrBL79scl = /* Depth scale for Bryan and Lewis 1979 ( m ) */ +(PID.TID 0000.0001) 2.000000000000000E+02 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) diffKrBL79Ho = /* Turning depth for Bryan and Lewis 1979 ( m ) */ +(PID.TID 0000.0001) -2.000000000000000E+03 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) ivdc_kappa = /* Implicit Vertical Diffusivity for Convection ( m^2/s) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) hMixCriteria= /* Criteria for mixed-layer diagnostic */ +(PID.TID 0000.0001) -8.000000000000000E-01 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dRhoSmall = /* Parameter for mixed-layer diagnostic */ +(PID.TID 0000.0001) 1.000000000000000E-06 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) hMixSmooth= /* Smoothing parameter for mixed-layer diagnostic */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) eosType = /* Type of Equation of State */ +(PID.TID 0000.0001) 'LINEAR' +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) tAlpha = /* Linear EOS thermal expansion coefficient ( 1/oC ) */ +(PID.TID 0000.0001) 2.000000000000000E-04 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) sBeta = /* Linear EOS haline contraction coefficient ( 1/(g/kg) ) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rhoNil = /* Reference density for Linear EOS ( kg/m^3 ) */ +(PID.TID 0000.0001) 9.998000000000000E+02 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) selectP_inEOS_Zc = /* select pressure to use in EOS (0,1,2,3) */ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) 0= -g*rhoConst*z ; 1= pRef (from tRef,sRef); 2= Hyd P ; 3= Hyd+NH P +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) surf_pRef = /* Surface reference pressure ( Pa ) */ +(PID.TID 0000.0001) 1.013250000000000E+05 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) HeatCapacity_Cp = /* Specific heat capacity ( J/kg/K ) */ +(PID.TID 0000.0001) 3.994000000000000E+03 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) celsius2K = /* 0 degree Celsius converted to Kelvin ( K ) */ +(PID.TID 0000.0001) 2.731500000000000E+02 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rhoConst = /* Reference density (Boussinesq) ( kg/m^3 ) */ +(PID.TID 0000.0001) 9.998000000000000E+02 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rhoFacC = /* normalized Reference density @ cell-Center (-) */ +(PID.TID 0000.0001) 60 @ 1.000000000000000E+00 /* K = 1: 60 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rhoFacF = /* normalized Reference density @ W-Interface (-) */ +(PID.TID 0000.0001) 61 @ 1.000000000000000E+00 /* K = 1: 61 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rhoConstFresh = /* Fresh-water reference density ( kg/m^3 ) */ +(PID.TID 0000.0001) 9.998000000000000E+02 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) gravity = /* Gravitational acceleration ( m/s^2 ) */ +(PID.TID 0000.0001) 9.810000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) gBaro = /* Barotropic gravity ( m/s^2 ) */ +(PID.TID 0000.0001) 9.810000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) gravFacC = /* gravity factor (vs surf.) @ cell-Center (-) */ +(PID.TID 0000.0001) 60 @ 1.000000000000000E+00 /* K = 1: 60 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) gravFacF = /* gravity factor (vs surf.) @ W-Interface (-) */ +(PID.TID 0000.0001) 61 @ 1.000000000000000E+00 /* K = 1: 61 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rotationPeriod = /* Rotation Period ( s ) */ +(PID.TID 0000.0001) 8.616400000000000E+04 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) omega = /* Angular velocity ( rad/s ) */ +(PID.TID 0000.0001) 7.292123516990375E-05 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) f0 = /* Reference coriolis parameter ( 1/s ) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) beta = /* Beta ( 1/(m.s) ) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) fPrime = /* Second coriolis parameter ( 1/s ) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rigidLid = /* Rigid lid on/off flag */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) implicitFreeSurface = /* Implicit free surface on/off flag */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) freeSurfFac = /* Implicit free surface factor */ +(PID.TID 0000.0001) 1.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) implicSurfPress = /* Surface Pressure implicit factor (0-1) */ +(PID.TID 0000.0001) 1.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) implicDiv2DFlow = /* Barot. Flow Div. implicit factor (0-1) */ +(PID.TID 0000.0001) 1.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) uniformLin_PhiSurf = /* use uniform Bo_surf on/off flag */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) uniformFreeSurfLev = /* free-surface level-index is uniform */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) sIceLoadFac = /* scale factor for sIceLoad (0-1) */ +(PID.TID 0000.0001) 1.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) hFacMin = /* minimum partial cell factor (hFac) */ +(PID.TID 0000.0001) 5.000000000000000E-02 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) hFacMinDr = /* minimum partial cell thickness ( m) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) exactConserv = /* Exact Volume Conservation on/off flag */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) linFSConserveTr = /* Tracer correction for Lin Free Surface on/off flag */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) nonlinFreeSurf = /* Non-linear Free Surf. options (-1,0,1,2,3)*/ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) -1,0= Off ; 1,2,3= On, 2=+rescale gU,gV, 3=+update cg2d solv. +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) hFacInf = /* lower threshold for hFac (nonlinFreeSurf only)*/ +(PID.TID 0000.0001) 2.000000000000000E-01 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) hFacSup = /* upper threshold for hFac (nonlinFreeSurf only)*/ +(PID.TID 0000.0001) 2.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) select_rStar = /* r* Vertical coord. options (=0 r coord.; >0 uses r*)*/ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useRealFreshWaterFlux = /* Real Fresh Water Flux on/off flag*/ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) temp_EvPrRn = /* Temp. of Evap/Prec/R (UNSET=use local T)(oC)*/ +(PID.TID 0000.0001) 1.234567000000000E+05 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) salt_EvPrRn = /* Salin. of Evap/Prec/R (UNSET=use local S)(g/kg)*/ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) selectAddFluid = /* option for mass source/sink of fluid (=0: off) */ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) temp_addMass = /* Temp. of addMass array (UNSET=use local T)(oC)*/ +(PID.TID 0000.0001) 1.234567000000000E+05 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) salt_addMass = /* Salin. of addMass array (UNSET=use local S)(g/kg)*/ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) convertFW2Salt = /* convert F.W. Flux to Salt Flux (-1=use local S)(g/kg)*/ +(PID.TID 0000.0001) 3.500000000000000E+01 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) use3Dsolver = /* use 3-D pressure solver on/off flag */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) nonHydrostatic = /* Non-Hydrostatic on/off flag */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) nh_Am2 = /* Non-Hydrostatic terms scaling factor */ +(PID.TID 0000.0001) 1.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) implicitNHPress = /* Non-Hyd Pressure implicit factor (0-1)*/ +(PID.TID 0000.0001) 1.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) selectNHfreeSurf = /* Non-Hyd (free-)Surface option */ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) quasiHydrostatic = /* Quasi-Hydrostatic on/off flag */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) calc_wVelocity = /* vertical velocity calculation on/off flag */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) momStepping = /* Momentum equation on/off flag */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) vectorInvariantMomentum= /* Vector-Invariant Momentum on/off */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) momAdvection = /* Momentum advection on/off flag */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) momViscosity = /* Momentum viscosity on/off flag */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) momImplVertAdv= /* Momentum implicit vert. advection on/off*/ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) implicitViscosity = /* Implicit viscosity on/off flag */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) selectImplicitDrag= /* Implicit bot Drag options (0,1,2)*/ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) 0= Expl. ; 1= Impl. on provis. Vel ; 2= Fully Impl (with surf.P) +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) metricTerms = /* metric-Terms on/off flag */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useNHMTerms = /* Non-Hydrostatic Metric-Terms on/off */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) selectCoriMap = /* Coriolis Map options (0,1,2,3)*/ +(PID.TID 0000.0001) 1 +(PID.TID 0000.0001) 0= f-Plane ; 1= Beta-Plane ; 2= Spherical ; 3= read from file +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) use3dCoriolis = /* 3-D Coriolis on/off flag */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useCoriolis = /* Coriolis on/off flag */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useCDscheme = /* CD scheme on/off flag */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) selectCoriScheme= /* Scheme selector for Coriolis-Term */ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) = 0 : original discretization (simple averaging, no hFac) +(PID.TID 0000.0001) = 1 : Wet-point averaging (Jamar & Ozer 1986) +(PID.TID 0000.0001) = 2 : energy conserving scheme (no hFac weight) +(PID.TID 0000.0001) = 3 : energy conserving scheme using Wet-point averaging +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) momForcing = /* Momentum forcing on/off flag */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) momTidalForcing = /* Momentum Tidal forcing on/off flag */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) momPressureForcing = /* Momentum pressure term on/off flag */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) implicitIntGravWave= /* Implicit Internal Gravity Wave flag */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) staggerTimeStep = /* Stagger time stepping on/off flag */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) doResetHFactors = /* reset thickness factors @ each time-step */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) multiDimAdvection = /* enable/disable Multi-Dim Advection */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useMultiDimAdvec = /* Multi-Dim Advection is/is-not used */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) implicitDiffusion = /* Implicit Diffusion on/off flag */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) tempStepping = /* Temperature equation on/off flag */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) tempAdvection = /* Temperature advection on/off flag */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) tempImplVertAdv = /* Temp. implicit vert. advection on/off */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) tempForcing = /* Temperature forcing on/off flag */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) doThetaClimRelax = /* apply SST relaxation on/off flag */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) tempIsActiveTr = /* Temp. is a dynamically Active Tracer */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) saltStepping = /* Salinity equation on/off flag */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) saltAdvection = /* Salinity advection on/off flag */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) saltImplVertAdv = /* Sali. implicit vert. advection on/off */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) saltForcing = /* Salinity forcing on/off flag */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) doSaltClimRelax = /* apply SSS relaxation on/off flag */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) saltIsActiveTr = /* Salt is a dynamically Active Tracer */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) readBinaryPrec = /* Precision used for reading binary files */ +(PID.TID 0000.0001) 64 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) writeBinaryPrec = /* Precision used for writing binary files */ +(PID.TID 0000.0001) 32 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rwSuffixType = /* select format of mds file suffix */ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) = 0 : myIter (I10.10) ; = 1 : 100*myTime (100th sec) ; +(PID.TID 0000.0001) = 2 : myTime (seconds); = 3 : myTime/360 (10th of hr); +(PID.TID 0000.0001) = 4 : myTime/3600 (hours) +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) globalFiles = /* write "global" (=not per tile) files */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useSingleCpuIO = /* only master MPI process does I/O */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useSingleCpuInput = /* only master process reads input */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) /* debLev[*] : level of debug & auxiliary message printing */ +(PID.TID 0000.0001) debLevZero = 0 ; /* level of disabled aux. msg printing */ +(PID.TID 0000.0001) debLevA = 1 ; /* level of minimum aux. msg printing */ +(PID.TID 0000.0001) debLevB = 2 ; /* level of low aux. print (report read-file opening)*/ +(PID.TID 0000.0001) debLevC = 3 ; /* level of moderate debug prt (most pkgs debug msg) */ +(PID.TID 0000.0001) debLevD = 4 ; /* level of enhanced debug prt (add DEBUG_STATS prt) */ +(PID.TID 0000.0001) debLevE = 5 ; /* level of extensive debug printing */ +(PID.TID 0000.0001) debugLevel = /* select debug printing level */ +(PID.TID 0000.0001) 2 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) plotLevel = /* select PLOT_FIELD printing level */ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) // +(PID.TID 0000.0001) // Elliptic solver(s) paramters ( PARM02 in namelist ) +(PID.TID 0000.0001) // +(PID.TID 0000.0001) cg2dMaxIters = /* Upper limit on 2d con. grad iterations */ +(PID.TID 0000.0001) 300 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) cg2dMinItersNSA = /* Minimum number of iterations of 2d con. grad solver */ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) cg2dUseMinResSol= /* use cg2d last-iter(=0) / min-resid.(=1) solution */ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) cg2dTargetResidual = /* 2d con. grad target residual */ +(PID.TID 0000.0001) 1.000000000000000E-13 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) cg2dTargetResWunit = /* CG2d target residual [W units] */ +(PID.TID 0000.0001) -1.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) cg2dPreCondFreq = /* Freq. for updating cg2d preconditioner */ +(PID.TID 0000.0001) 1 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useSRCGSolver = /* use single reduction CG solver(s) */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useNSACGSolver = /* use not-self-adjoint CG solver */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) printResidualFreq = /* Freq. for printing CG residual */ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) // +(PID.TID 0000.0001) // Time stepping paramters ( PARM03 in namelist ) +(PID.TID 0000.0001) // +(PID.TID 0000.0001) deltaTMom = /* Momentum equation timestep ( s ) */ +(PID.TID 0000.0001) 2.000000000000000E+01 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) deltaTFreeSurf = /* FreeSurface equation timestep ( s ) */ +(PID.TID 0000.0001) 2.000000000000000E+01 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dTtracerLev = /* Tracer equation timestep ( s ) */ +(PID.TID 0000.0001) 60 @ 2.000000000000000E+01 /* K = 1: 60 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) deltaTClock = /* Model clock timestep ( s ) */ +(PID.TID 0000.0001) 2.000000000000000E+01 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) cAdjFreq = /* Convective adjustment interval ( s ) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) momForcingOutAB = /* =1: take Momentum Forcing out of Adams-Bash. stepping */ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) tracForcingOutAB = /* =1: take T,S,pTr Forcing out of Adams-Bash. stepping */ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) momDissip_In_AB = /* put Dissipation Tendency in Adams-Bash. stepping */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) doAB_onGtGs = /* apply AB on Tendencies (rather than on T,S)*/ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) abEps = /* Adams-Bashforth-2 stabilizing weight */ +(PID.TID 0000.0001) 1.000000000000000E-02 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) applyExchUV_early = /* Apply EXCH to U,V earlier in time-step */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) pickupStrictlyMatch= /* stop if pickup do not strictly match */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) nIter0 = /* Run starting timestep number */ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) nTimeSteps = /* Number of timesteps */ +(PID.TID 0000.0001) 20 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) nEndIter = /* Run ending timestep number */ +(PID.TID 0000.0001) 20 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) baseTime = /* Model base time ( s ) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) startTime = /* Run start time ( s ) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) endTime = /* Integration ending time ( s ) */ +(PID.TID 0000.0001) 4.000000000000000E+02 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) pChkPtFreq = /* Permanent restart/pickup file interval ( s ) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) chkPtFreq = /* Rolling restart/pickup file interval ( s ) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) pickup_write_mdsio = /* Model IO flag. */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) pickup_read_mdsio = /* Model IO flag. */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) writePickupAtEnd = /* Model IO flag. */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dumpFreq = /* Model state write out interval ( s ). */ +(PID.TID 0000.0001) 6.000000000000000E+03 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dumpInitAndLast= /* write out Initial & Last iter. model state */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) snapshot_mdsio = /* Model IO flag. */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) monitorFreq = /* Monitor output interval ( s ). */ +(PID.TID 0000.0001) 1.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) monitorSelect = /* select group of variables to monitor */ +(PID.TID 0000.0001) 2 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) monitor_stdio = /* Model IO flag. */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) externForcingPeriod = /* forcing period (s) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) externForcingCycle = /* period of the cyle (s). */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) tauThetaClimRelax = /* relaxation time scale (s) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) tauSaltClimRelax = /* relaxation time scale (s) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) latBandClimRelax = /* max. Lat. where relaxation */ +(PID.TID 0000.0001) 6.000000000000000E+02 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) // +(PID.TID 0000.0001) // Gridding paramters ( PARM04 in namelist ) +(PID.TID 0000.0001) // +(PID.TID 0000.0001) usingCartesianGrid = /* Cartesian coordinates flag ( True/False ) */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) usingCylindricalGrid = /* Cylindrical coordinates flag ( True/False ) */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) usingSphericalPolarGrid = /* Spherical coordinates flag ( True/False ) */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) usingCurvilinearGrid = /* Curvilinear coordinates flag ( True/False ) */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useMin4hFacEdges = /* set hFacW,S as minimum of adjacent hFacC factor */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) interViscAr_pCell = /* account for partial-cell in interior vert. viscosity */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) interDiffKr_pCell = /* account for partial-cell in interior vert. diffusion */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) pCellMix_select = /* option to enhance mixing near surface & bottom */ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) selectSigmaCoord = /* Hybrid-Sigma Vert. Coordinate option */ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rSigmaBnd = /* r/sigma transition ( units of r == m ) */ +(PID.TID 0000.0001) 1.234567000000000E+05 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rkSign = /* index orientation relative to vertical coordinate */ +(PID.TID 0000.0001) -1.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) gravitySign = /* gravity orientation relative to vertical coordinate */ +(PID.TID 0000.0001) -1.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) seaLev_Z = /* reference height of sea-level [m] */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) top_Pres = /* reference pressure at the top [Pa] */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) mass2rUnit = /* convert mass per unit area [kg/m2] to r-units [m] */ +(PID.TID 0000.0001) 1.000200040008002E-03 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rUnit2mass = /* convert r-units [m] to mass per unit area [kg/m2] */ +(PID.TID 0000.0001) 9.998000000000000E+02 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) drC = /* C spacing ( units of r ) */ +(PID.TID 0000.0001) 1.666666666666667E+00, /* K = 1 */ +(PID.TID 0000.0001) 59 @ 3.333333333333333E+00, /* K = 2: 60 */ +(PID.TID 0000.0001) 1.666666666666667E+00 /* K = 61 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) drF = /* W spacing ( units of r ) */ +(PID.TID 0000.0001) 60 @ 3.333333333333333E+00 /* K = 1: 60 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) delX = /* U spacing ( m - cartesian, degrees - spherical ) */ +(PID.TID 0000.0001) 1.333350557843028E+01, /* I = 1 */ +(PID.TID 0000.0001) 1.333351440956528E+01, /* I = 2 */ +(PID.TID 0000.0001) 1.333352369347595E+01, /* I = 3 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 1.334142525413410E+01, /* I = 78 */ +(PID.TID 0000.0001) 1.334184000343805E+01, /* I = 79 */ +(PID.TID 0000.0001) 1.334227600347911E+01, /* I = 80 */ +(PID.TID 0000.0001) 1.334273434234323E+01, /* I = 81 */ +(PID.TID 0000.0001) 1.334321616375004E+01, /* I = 82 */ +(PID.TID 0000.0001) 1.334372266988904E+01, /* I = 83 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 1.376806664990509E+01, /* I =158 */ +(PID.TID 0000.0001) 1.378997422175274E+01, /* I =159 */ +(PID.TID 0000.0001) 1.381296559898911E+01, /* I =160 */ +(PID.TID 0000.0001) 1.383709231832104E+01, /* I =161 */ +(PID.TID 0000.0001) 1.386240815290873E+01, /* I =162 */ +(PID.TID 0000.0001) 1.388896918716481E+01, /* I =163 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 2.600055500056160E+01, /* I =238 */ +(PID.TID 0000.0001) 2.633340276042106E+01, /* I =239 */ +(PID.TID 0000.0001) 2.666666666666666E+01, /* I =240 */ +(PID.TID 0000.0001) 2.699993057291228E+01, /* I =241 */ +(PID.TID 0000.0001) 2.733277833277173E+01, /* I =242 */ +(PID.TID 0000.0001) 2.766479587583332E+01, /* I =243 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 3.947092518042460E+01, /* I =318 */ +(PID.TID 0000.0001) 3.949624101501229E+01, /* I =319 */ +(PID.TID 0000.0001) 3.952036773434423E+01 /* I =320 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) delY = /* V spacing ( m - cartesian, degrees - spherical ) */ +(PID.TID 0000.0001) 2.000000000000000E+02 /* J = 1 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) xgOrigin = /* X-axis origin of West edge (cartesian: m, lat-lon: deg) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) ygOrigin = /* Y-axis origin of South edge (cartesian: m, lat-lon: deg) */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rSphere = /* Radius ( ignored - cartesian, m - spherical ) */ +(PID.TID 0000.0001) 6.370000000000000E+06 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) deepAtmosphere = /* Deep/Shallow Atmosphere flag (True/False) */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) xC = /* xC(:,1,:,1) : P-point X coord ( deg. or m if cartesian) */ +(PID.TID 0000.0001) 6.666752789215142E+00, /* I = 1 */ +(PID.TID 0000.0001) 2.000026278321292E+01, /* I = 2 */ +(PID.TID 0000.0001) 3.333378183473354E+01, /* I = 3 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 1.033491870505545E+03, /* I = 78 */ +(PID.TID 0000.0001) 1.046833503134331E+03, /* I = 79 */ +(PID.TID 0000.0001) 1.060175561137789E+03, /* I = 80 */ +(PID.TID 0000.0001) 1.073518066310700E+03, /* I = 81 */ +(PID.TID 0000.0001) 1.086861041563747E+03, /* I = 82 */ +(PID.TID 0000.0001) 1.100204510980566E+03, /* I = 83 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 2.108764740818271E+03, /* I =158 */ +(PID.TID 0000.0001) 2.122543761254100E+03, /* I =159 */ +(PID.TID 0000.0001) 2.136345231164471E+03, /* I =160 */ +(PID.TID 0000.0001) 2.150170260123126E+03, /* I =161 */ +(PID.TID 0000.0001) 2.164020010358741E+03, /* I =162 */ +(PID.TID 0000.0001) 2.177895699028778E+03, /* I =163 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 3.510369234886317E+03, /* I =238 */ +(PID.TID 0000.0001) 3.536536213766808E+03, /* I =239 */ +(PID.TID 0000.0001) 3.563036248480352E+03, /* I =240 */ +(PID.TID 0000.0001) 3.589869547100142E+03, /* I =241 */ +(PID.TID 0000.0001) 3.617035901552984E+03, /* I =242 */ +(PID.TID 0000.0001) 3.644534688657286E+03, /* I =243 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 6.324020010358740E+03, /* I =318 */ +(PID.TID 0000.0001) 6.363503593456458E+03, /* I =319 */ +(PID.TID 0000.0001) 6.403011897831137E+03 /* I =320 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) yC = /* yC(1,:,1,:) : P-point Y coord ( deg. or m if cartesian) */ +(PID.TID 0000.0001) 1.000000000000000E+02 /* J = 1 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rcoord = /* P-point R coordinate ( units of r ) */ +(PID.TID 0000.0001) -1.666666666666667E+00, /* K = 1 */ +(PID.TID 0000.0001) -5.000000000000000E+00, /* K = 2 */ +(PID.TID 0000.0001) -8.333333333333334E+00, /* K = 3 */ +(PID.TID 0000.0001) -1.166666666666667E+01, /* K = 4 */ +(PID.TID 0000.0001) -1.500000000000000E+01, /* K = 5 */ +(PID.TID 0000.0001) -1.833333333333334E+01, /* K = 6 */ +(PID.TID 0000.0001) -2.166666666666667E+01, /* K = 7 */ +(PID.TID 0000.0001) -2.500000000000000E+01, /* K = 8 */ +(PID.TID 0000.0001) -2.833333333333333E+01, /* K = 9 */ +(PID.TID 0000.0001) -3.166666666666666E+01, /* K = 10 */ +(PID.TID 0000.0001) -3.500000000000000E+01, /* K = 11 */ +(PID.TID 0000.0001) -3.833333333333334E+01, /* K = 12 */ +(PID.TID 0000.0001) -4.166666666666667E+01, /* K = 13 */ +(PID.TID 0000.0001) -4.500000000000001E+01, /* K = 14 */ +(PID.TID 0000.0001) -4.833333333333334E+01, /* K = 15 */ +(PID.TID 0000.0001) -5.166666666666668E+01, /* K = 16 */ +(PID.TID 0000.0001) -5.500000000000001E+01, /* K = 17 */ +(PID.TID 0000.0001) -5.833333333333335E+01, /* K = 18 */ +(PID.TID 0000.0001) -6.166666666666669E+01, /* K = 19 */ +(PID.TID 0000.0001) -6.500000000000001E+01, /* K = 20 */ +(PID.TID 0000.0001) -6.833333333333334E+01, /* K = 21 */ +(PID.TID 0000.0001) -7.166666666666667E+01, /* K = 22 */ +(PID.TID 0000.0001) -7.500000000000000E+01, /* K = 23 */ +(PID.TID 0000.0001) -7.833333333333333E+01, /* K = 24 */ +(PID.TID 0000.0001) -8.166666666666666E+01, /* K = 25 */ +(PID.TID 0000.0001) -8.499999999999999E+01, /* K = 26 */ +(PID.TID 0000.0001) -8.833333333333331E+01, /* K = 27 */ +(PID.TID 0000.0001) -9.166666666666664E+01, /* K = 28 */ +(PID.TID 0000.0001) -9.499999999999997E+01, /* K = 29 */ +(PID.TID 0000.0001) -9.833333333333330E+01, /* K = 30 */ +(PID.TID 0000.0001) -1.016666666666666E+02, /* K = 31 */ +(PID.TID 0000.0001) -1.050000000000000E+02, /* K = 32 */ +(PID.TID 0000.0001) -1.083333333333333E+02, /* K = 33 */ +(PID.TID 0000.0001) -1.116666666666666E+02, /* K = 34 */ +(PID.TID 0000.0001) -1.149999999999999E+02, /* K = 35 */ +(PID.TID 0000.0001) -1.183333333333333E+02, /* K = 36 */ +(PID.TID 0000.0001) -1.216666666666666E+02, /* K = 37 */ +(PID.TID 0000.0001) -1.249999999999999E+02, /* K = 38 */ +(PID.TID 0000.0001) -1.283333333333333E+02, /* K = 39 */ +(PID.TID 0000.0001) -1.316666666666666E+02, /* K = 40 */ +(PID.TID 0000.0001) -1.349999999999999E+02, /* K = 41 */ +(PID.TID 0000.0001) -1.383333333333333E+02, /* K = 42 */ +(PID.TID 0000.0001) -1.416666666666666E+02, /* K = 43 */ +(PID.TID 0000.0001) -1.450000000000000E+02, /* K = 44 */ +(PID.TID 0000.0001) -1.483333333333333E+02, /* K = 45 */ +(PID.TID 0000.0001) -1.516666666666667E+02, /* K = 46 */ +(PID.TID 0000.0001) -1.550000000000000E+02, /* K = 47 */ +(PID.TID 0000.0001) -1.583333333333333E+02, /* K = 48 */ +(PID.TID 0000.0001) -1.616666666666667E+02, /* K = 49 */ +(PID.TID 0000.0001) -1.650000000000000E+02, /* K = 50 */ +(PID.TID 0000.0001) -1.683333333333334E+02, /* K = 51 */ +(PID.TID 0000.0001) -1.716666666666667E+02, /* K = 52 */ +(PID.TID 0000.0001) -1.750000000000001E+02, /* K = 53 */ +(PID.TID 0000.0001) -1.783333333333334E+02, /* K = 54 */ +(PID.TID 0000.0001) -1.816666666666667E+02, /* K = 55 */ +(PID.TID 0000.0001) -1.850000000000001E+02, /* K = 56 */ +(PID.TID 0000.0001) -1.883333333333334E+02, /* K = 57 */ +(PID.TID 0000.0001) -1.916666666666668E+02, /* K = 58 */ +(PID.TID 0000.0001) -1.950000000000001E+02, /* K = 59 */ +(PID.TID 0000.0001) -1.983333333333335E+02 /* K = 60 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rF = /* W-Interf. R coordinate ( units of r ) */ +(PID.TID 0000.0001) 0.000000000000000E+00, /* K = 1 */ +(PID.TID 0000.0001) -3.333333333333333E+00, /* K = 2 */ +(PID.TID 0000.0001) -6.666666666666667E+00, /* K = 3 */ +(PID.TID 0000.0001) -1.000000000000000E+01, /* K = 4 */ +(PID.TID 0000.0001) -1.333333333333333E+01, /* K = 5 */ +(PID.TID 0000.0001) -1.666666666666667E+01, /* K = 6 */ +(PID.TID 0000.0001) -2.000000000000000E+01, /* K = 7 */ +(PID.TID 0000.0001) -2.333333333333333E+01, /* K = 8 */ +(PID.TID 0000.0001) -2.666666666666666E+01, /* K = 9 */ +(PID.TID 0000.0001) -3.000000000000000E+01, /* K = 10 */ +(PID.TID 0000.0001) -3.333333333333333E+01, /* K = 11 */ +(PID.TID 0000.0001) -3.666666666666666E+01, /* K = 12 */ +(PID.TID 0000.0001) -4.000000000000000E+01, /* K = 13 */ +(PID.TID 0000.0001) -4.333333333333334E+01, /* K = 14 */ +(PID.TID 0000.0001) -4.666666666666667E+01, /* K = 15 */ +(PID.TID 0000.0001) -5.000000000000001E+01, /* K = 16 */ +(PID.TID 0000.0001) -5.333333333333334E+01, /* K = 17 */ +(PID.TID 0000.0001) -5.666666666666668E+01, /* K = 18 */ +(PID.TID 0000.0001) -6.000000000000001E+01, /* K = 19 */ +(PID.TID 0000.0001) -6.333333333333335E+01, /* K = 20 */ +(PID.TID 0000.0001) -6.666666666666669E+01, /* K = 21 */ +(PID.TID 0000.0001) -7.000000000000001E+01, /* K = 22 */ +(PID.TID 0000.0001) -7.333333333333334E+01, /* K = 23 */ +(PID.TID 0000.0001) -7.666666666666667E+01, /* K = 24 */ +(PID.TID 0000.0001) -8.000000000000000E+01, /* K = 25 */ +(PID.TID 0000.0001) -8.333333333333333E+01, /* K = 26 */ +(PID.TID 0000.0001) -8.666666666666666E+01, /* K = 27 */ +(PID.TID 0000.0001) -8.999999999999999E+01, /* K = 28 */ +(PID.TID 0000.0001) -9.333333333333331E+01, /* K = 29 */ +(PID.TID 0000.0001) -9.666666666666664E+01, /* K = 30 */ +(PID.TID 0000.0001) -9.999999999999997E+01, /* K = 31 */ +(PID.TID 0000.0001) -1.033333333333333E+02, /* K = 32 */ +(PID.TID 0000.0001) -1.066666666666666E+02, /* K = 33 */ +(PID.TID 0000.0001) -1.100000000000000E+02, /* K = 34 */ +(PID.TID 0000.0001) -1.133333333333333E+02, /* K = 35 */ +(PID.TID 0000.0001) -1.166666666666666E+02, /* K = 36 */ +(PID.TID 0000.0001) -1.199999999999999E+02, /* K = 37 */ +(PID.TID 0000.0001) -1.233333333333333E+02, /* K = 38 */ +(PID.TID 0000.0001) -1.266666666666666E+02, /* K = 39 */ +(PID.TID 0000.0001) -1.299999999999999E+02, /* K = 40 */ +(PID.TID 0000.0001) -1.333333333333333E+02, /* K = 41 */ +(PID.TID 0000.0001) -1.366666666666666E+02, /* K = 42 */ +(PID.TID 0000.0001) -1.400000000000000E+02, /* K = 43 */ +(PID.TID 0000.0001) -1.433333333333333E+02, /* K = 44 */ +(PID.TID 0000.0001) -1.466666666666667E+02, /* K = 45 */ +(PID.TID 0000.0001) -1.500000000000000E+02, /* K = 46 */ +(PID.TID 0000.0001) -1.533333333333333E+02, /* K = 47 */ +(PID.TID 0000.0001) -1.566666666666667E+02, /* K = 48 */ +(PID.TID 0000.0001) -1.600000000000000E+02, /* K = 49 */ +(PID.TID 0000.0001) -1.633333333333334E+02, /* K = 50 */ +(PID.TID 0000.0001) -1.666666666666667E+02, /* K = 51 */ +(PID.TID 0000.0001) -1.700000000000001E+02, /* K = 52 */ +(PID.TID 0000.0001) -1.733333333333334E+02, /* K = 53 */ +(PID.TID 0000.0001) -1.766666666666667E+02, /* K = 54 */ +(PID.TID 0000.0001) -1.800000000000001E+02, /* K = 55 */ +(PID.TID 0000.0001) -1.833333333333334E+02, /* K = 56 */ +(PID.TID 0000.0001) -1.866666666666668E+02, /* K = 57 */ +(PID.TID 0000.0001) -1.900000000000001E+02, /* K = 58 */ +(PID.TID 0000.0001) -1.933333333333335E+02, /* K = 59 */ +(PID.TID 0000.0001) -1.966666666666668E+02, /* K = 60 */ +(PID.TID 0000.0001) -2.000000000000001E+02 /* K = 61 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) deepFacC = /* deep-model grid factor @ cell-Center (-) */ +(PID.TID 0000.0001) 60 @ 1.000000000000000E+00 /* K = 1: 60 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) deepFacF = /* deep-model grid factor @ W-Interface (-) */ +(PID.TID 0000.0001) 61 @ 1.000000000000000E+00 /* K = 1: 61 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rotateGrid = /* use rotated grid ( True/False ) */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) phiEuler = /* Euler angle, rotation about original z-coordinate [rad] */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) thetaEuler = /* Euler angle, rotation about new x-coordinate [rad] */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) psiEuler = /* Euler angle, rotation about new z-coordinate [rad] */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dxF = /* dxF(:,1,:,1) ( units: m ) */ +(PID.TID 0000.0001) 1.333350557843028E+01, /* I = 1 */ +(PID.TID 0000.0001) 1.333351440956528E+01, /* I = 2 */ +(PID.TID 0000.0001) 1.333352369347595E+01, /* I = 3 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 1.334142525413410E+01, /* I = 78 */ +(PID.TID 0000.0001) 1.334184000343805E+01, /* I = 79 */ +(PID.TID 0000.0001) 1.334227600347911E+01, /* I = 80 */ +(PID.TID 0000.0001) 1.334273434234323E+01, /* I = 81 */ +(PID.TID 0000.0001) 1.334321616375004E+01, /* I = 82 */ +(PID.TID 0000.0001) 1.334372266988904E+01, /* I = 83 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 1.376806664990509E+01, /* I =158 */ +(PID.TID 0000.0001) 1.378997422175274E+01, /* I =159 */ +(PID.TID 0000.0001) 1.381296559898911E+01, /* I =160 */ +(PID.TID 0000.0001) 1.383709231832104E+01, /* I =161 */ +(PID.TID 0000.0001) 1.386240815290873E+01, /* I =162 */ +(PID.TID 0000.0001) 1.388896918716481E+01, /* I =163 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 2.600055500056160E+01, /* I =238 */ +(PID.TID 0000.0001) 2.633340276042106E+01, /* I =239 */ +(PID.TID 0000.0001) 2.666666666666666E+01, /* I =240 */ +(PID.TID 0000.0001) 2.699993057291228E+01, /* I =241 */ +(PID.TID 0000.0001) 2.733277833277173E+01, /* I =242 */ +(PID.TID 0000.0001) 2.766479587583332E+01, /* I =243 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 3.947092518042460E+01, /* I =318 */ +(PID.TID 0000.0001) 3.949624101501229E+01, /* I =319 */ +(PID.TID 0000.0001) 3.952036773434423E+01 /* I =320 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dxF = /* dxF(1,:,1,:) ( units: m ) */ +(PID.TID 0000.0001) 1.333350557843028E+01 /* J = 1 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dyF = /* dyF(:,1,:,1) ( units: m ) */ +(PID.TID 0000.0001) 320 @ 2.000000000000000E+02 /* I = 1:320 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dyF = /* dyF(1,:,1,:) ( units: m ) */ +(PID.TID 0000.0001) 2.000000000000000E+02 /* J = 1 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dxG = /* dxG(:,1,:,1) ( units: m ) */ +(PID.TID 0000.0001) 1.333350557843028E+01, /* I = 1 */ +(PID.TID 0000.0001) 1.333351440956528E+01, /* I = 2 */ +(PID.TID 0000.0001) 1.333352369347595E+01, /* I = 3 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 1.334142525413410E+01, /* I = 78 */ +(PID.TID 0000.0001) 1.334184000343805E+01, /* I = 79 */ +(PID.TID 0000.0001) 1.334227600347911E+01, /* I = 80 */ +(PID.TID 0000.0001) 1.334273434234323E+01, /* I = 81 */ +(PID.TID 0000.0001) 1.334321616375004E+01, /* I = 82 */ +(PID.TID 0000.0001) 1.334372266988904E+01, /* I = 83 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 1.376806664990509E+01, /* I =158 */ +(PID.TID 0000.0001) 1.378997422175274E+01, /* I =159 */ +(PID.TID 0000.0001) 1.381296559898911E+01, /* I =160 */ +(PID.TID 0000.0001) 1.383709231832104E+01, /* I =161 */ +(PID.TID 0000.0001) 1.386240815290873E+01, /* I =162 */ +(PID.TID 0000.0001) 1.388896918716481E+01, /* I =163 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 2.600055500056160E+01, /* I =238 */ +(PID.TID 0000.0001) 2.633340276042106E+01, /* I =239 */ +(PID.TID 0000.0001) 2.666666666666666E+01, /* I =240 */ +(PID.TID 0000.0001) 2.699993057291228E+01, /* I =241 */ +(PID.TID 0000.0001) 2.733277833277173E+01, /* I =242 */ +(PID.TID 0000.0001) 2.766479587583332E+01, /* I =243 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 3.947092518042460E+01, /* I =318 */ +(PID.TID 0000.0001) 3.949624101501229E+01, /* I =319 */ +(PID.TID 0000.0001) 3.952036773434423E+01 /* I =320 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dxG = /* dxG(1,:,1,:) ( units: m ) */ +(PID.TID 0000.0001) 1.333350557843028E+01 /* J = 1 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dyG = /* dyG(:,1,:,1) ( units: m ) */ +(PID.TID 0000.0001) 320 @ 2.000000000000000E+02 /* I = 1:320 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dyG = /* dyG(1,:,1,:) ( units: m ) */ +(PID.TID 0000.0001) 2.000000000000000E+02 /* J = 1 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dxC = /* dxC(:,1,:,1) ( units: m ) */ +(PID.TID 0000.0001) 2.642693665638726E+01, /* I = 1 */ +(PID.TID 0000.0001) 1.333350999399778E+01, /* I = 2 */ +(PID.TID 0000.0001) 1.333351905152062E+01, /* I = 3 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 1.334122798727485E+01, /* I = 78 */ +(PID.TID 0000.0001) 1.334163262878608E+01, /* I = 79 */ +(PID.TID 0000.0001) 1.334205800345858E+01, /* I = 80 */ +(PID.TID 0000.0001) 1.334250517291117E+01, /* I = 81 */ +(PID.TID 0000.0001) 1.334297525304664E+01, /* I = 82 */ +(PID.TID 0000.0001) 1.334346941681954E+01, /* I = 83 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 1.375763007933133E+01, /* I =158 */ +(PID.TID 0000.0001) 1.377902043582892E+01, /* I =159 */ +(PID.TID 0000.0001) 1.380146991037093E+01, /* I =160 */ +(PID.TID 0000.0001) 1.382502895865507E+01, /* I =161 */ +(PID.TID 0000.0001) 1.384975023561489E+01, /* I =162 */ +(PID.TID 0000.0001) 1.387568867003677E+01, /* I =163 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 2.583454622903081E+01, /* I =238 */ +(PID.TID 0000.0001) 2.616697888049133E+01, /* I =239 */ +(PID.TID 0000.0001) 2.650003471354386E+01, /* I =240 */ +(PID.TID 0000.0001) 2.683329861978947E+01, /* I =241 */ +(PID.TID 0000.0001) 2.716635445284200E+01, /* I =242 */ +(PID.TID 0000.0001) 2.749878710430253E+01, /* I =243 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 3.945764466329656E+01, /* I =318 */ +(PID.TID 0000.0001) 3.948358309771845E+01, /* I =319 */ +(PID.TID 0000.0001) 3.950830437467826E+01 /* I =320 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dxC = /* dxC(1,:,1,:) ( units: m ) */ +(PID.TID 0000.0001) 2.642693665638726E+01 /* J = 1 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dyC = /* dyC(:,1,:,1) ( units: m ) */ +(PID.TID 0000.0001) 320 @ 2.000000000000000E+02 /* I = 1:320 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dyC = /* dyC(1,:,1,:) ( units: m ) */ +(PID.TID 0000.0001) 2.000000000000000E+02 /* J = 1 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dxV = /* dxV(:,1,:,1) ( units: m ) */ +(PID.TID 0000.0001) 2.642693665638726E+01, /* I = 1 */ +(PID.TID 0000.0001) 1.333350999399778E+01, /* I = 2 */ +(PID.TID 0000.0001) 1.333351905152062E+01, /* I = 3 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 1.334122798727485E+01, /* I = 78 */ +(PID.TID 0000.0001) 1.334163262878608E+01, /* I = 79 */ +(PID.TID 0000.0001) 1.334205800345858E+01, /* I = 80 */ +(PID.TID 0000.0001) 1.334250517291117E+01, /* I = 81 */ +(PID.TID 0000.0001) 1.334297525304664E+01, /* I = 82 */ +(PID.TID 0000.0001) 1.334346941681954E+01, /* I = 83 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 1.375763007933133E+01, /* I =158 */ +(PID.TID 0000.0001) 1.377902043582892E+01, /* I =159 */ +(PID.TID 0000.0001) 1.380146991037093E+01, /* I =160 */ +(PID.TID 0000.0001) 1.382502895865507E+01, /* I =161 */ +(PID.TID 0000.0001) 1.384975023561489E+01, /* I =162 */ +(PID.TID 0000.0001) 1.387568867003677E+01, /* I =163 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 2.583454622903081E+01, /* I =238 */ +(PID.TID 0000.0001) 2.616697888049133E+01, /* I =239 */ +(PID.TID 0000.0001) 2.650003471354386E+01, /* I =240 */ +(PID.TID 0000.0001) 2.683329861978947E+01, /* I =241 */ +(PID.TID 0000.0001) 2.716635445284200E+01, /* I =242 */ +(PID.TID 0000.0001) 2.749878710430253E+01, /* I =243 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 3.945764466329656E+01, /* I =318 */ +(PID.TID 0000.0001) 3.948358309771845E+01, /* I =319 */ +(PID.TID 0000.0001) 3.950830437467826E+01 /* I =320 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dxV = /* dxV(1,:,1,:) ( units: m ) */ +(PID.TID 0000.0001) 2.642693665638726E+01 /* J = 1 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dyU = /* dyU(:,1,:,1) ( units: m ) */ +(PID.TID 0000.0001) 320 @ 2.000000000000000E+02 /* I = 1:320 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) dyU = /* dyU(1,:,1,:) ( units: m ) */ +(PID.TID 0000.0001) 2.000000000000000E+02 /* J = 1 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rA = /* rA (:,1,:,1) ( units: m^2 ) */ +(PID.TID 0000.0001) 2.666701115686057E+03, /* I = 1 */ +(PID.TID 0000.0001) 2.666702881913057E+03, /* I = 2 */ +(PID.TID 0000.0001) 2.666704738695189E+03, /* I = 3 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 2.668285050826821E+03, /* I = 78 */ +(PID.TID 0000.0001) 2.668368000687609E+03, /* I = 79 */ +(PID.TID 0000.0001) 2.668455200695822E+03, /* I = 80 */ +(PID.TID 0000.0001) 2.668546868468647E+03, /* I = 81 */ +(PID.TID 0000.0001) 2.668643232750007E+03, /* I = 82 */ +(PID.TID 0000.0001) 2.668744533977807E+03, /* I = 83 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 2.753613329981019E+03, /* I =158 */ +(PID.TID 0000.0001) 2.757994844350548E+03, /* I =159 */ +(PID.TID 0000.0001) 2.762593119797822E+03, /* I =160 */ +(PID.TID 0000.0001) 2.767418463664208E+03, /* I =161 */ +(PID.TID 0000.0001) 2.772481630581747E+03, /* I =162 */ +(PID.TID 0000.0001) 2.777793837432962E+03, /* I =163 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 5.200111000112320E+03, /* I =238 */ +(PID.TID 0000.0001) 5.266680552084212E+03, /* I =239 */ +(PID.TID 0000.0001) 5.333333333333333E+03, /* I =240 */ +(PID.TID 0000.0001) 5.399986114582455E+03, /* I =241 */ +(PID.TID 0000.0001) 5.466555666554346E+03, /* I =242 */ +(PID.TID 0000.0001) 5.532959175166664E+03, /* I =243 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 7.894185036084920E+03, /* I =318 */ +(PID.TID 0000.0001) 7.899248203002459E+03, /* I =319 */ +(PID.TID 0000.0001) 7.904073546868845E+03 /* I =320 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rA = /* rA (1,:,1,:) ( units: m^2 ) */ +(PID.TID 0000.0001) 2.666701115686057E+03 /* J = 1 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rAw = /* rAw(:,1,:,1) ( units: m^2 ) */ +(PID.TID 0000.0001) 5.285387331277451E+03, /* I = 1 */ +(PID.TID 0000.0001) 2.666701998799557E+03, /* I = 2 */ +(PID.TID 0000.0001) 2.666703810304123E+03, /* I = 3 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 2.668245597454970E+03, /* I = 78 */ +(PID.TID 0000.0001) 2.668326525757215E+03, /* I = 79 */ +(PID.TID 0000.0001) 2.668411600691716E+03, /* I = 80 */ +(PID.TID 0000.0001) 2.668501034582234E+03, /* I = 81 */ +(PID.TID 0000.0001) 2.668595050609327E+03, /* I = 82 */ +(PID.TID 0000.0001) 2.668693883363907E+03, /* I = 83 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 2.751526015866266E+03, /* I =158 */ +(PID.TID 0000.0001) 2.755804087165784E+03, /* I =159 */ +(PID.TID 0000.0001) 2.760293982074185E+03, /* I =160 */ +(PID.TID 0000.0001) 2.765005791731015E+03, /* I =161 */ +(PID.TID 0000.0001) 2.769950047122978E+03, /* I =162 */ +(PID.TID 0000.0001) 2.775137734007355E+03, /* I =163 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 5.166909245806161E+03, /* I =238 */ +(PID.TID 0000.0001) 5.233395776098266E+03, /* I =239 */ +(PID.TID 0000.0001) 5.300006942708772E+03, /* I =240 */ +(PID.TID 0000.0001) 5.366659723957894E+03, /* I =241 */ +(PID.TID 0000.0001) 5.433270890568401E+03, /* I =242 */ +(PID.TID 0000.0001) 5.499757420860506E+03, /* I =243 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 7.891528932659313E+03, /* I =318 */ +(PID.TID 0000.0001) 7.896716619543690E+03, /* I =319 */ +(PID.TID 0000.0001) 7.901660874935652E+03 /* I =320 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rAw = /* rAw(1,:,1,:) ( units: m^2 ) */ +(PID.TID 0000.0001) 5.285387331277451E+03 /* J = 1 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rAs = /* rAs(:,1,:,1) ( units: m^2 ) */ +(PID.TID 0000.0001) 2.666701115686057E+03, /* I = 1 */ +(PID.TID 0000.0001) 2.666702881913057E+03, /* I = 2 */ +(PID.TID 0000.0001) 2.666704738695189E+03, /* I = 3 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 2.668285050826821E+03, /* I = 78 */ +(PID.TID 0000.0001) 2.668368000687609E+03, /* I = 79 */ +(PID.TID 0000.0001) 2.668455200695822E+03, /* I = 80 */ +(PID.TID 0000.0001) 2.668546868468647E+03, /* I = 81 */ +(PID.TID 0000.0001) 2.668643232750007E+03, /* I = 82 */ +(PID.TID 0000.0001) 2.668744533977807E+03, /* I = 83 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 2.753613329981019E+03, /* I =158 */ +(PID.TID 0000.0001) 2.757994844350548E+03, /* I =159 */ +(PID.TID 0000.0001) 2.762593119797822E+03, /* I =160 */ +(PID.TID 0000.0001) 2.767418463664208E+03, /* I =161 */ +(PID.TID 0000.0001) 2.772481630581747E+03, /* I =162 */ +(PID.TID 0000.0001) 2.777793837432962E+03, /* I =163 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 5.200111000112320E+03, /* I =238 */ +(PID.TID 0000.0001) 5.266680552084212E+03, /* I =239 */ +(PID.TID 0000.0001) 5.333333333333333E+03, /* I =240 */ +(PID.TID 0000.0001) 5.399986114582455E+03, /* I =241 */ +(PID.TID 0000.0001) 5.466555666554346E+03, /* I =242 */ +(PID.TID 0000.0001) 5.532959175166664E+03, /* I =243 */ +(PID.TID 0000.0001) . . . +(PID.TID 0000.0001) 7.894185036084920E+03, /* I =318 */ +(PID.TID 0000.0001) 7.899248203002459E+03, /* I =319 */ +(PID.TID 0000.0001) 7.904073546868845E+03 /* I =320 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) rAs = /* rAs(1,:,1,:) ( units: m^2 ) */ +(PID.TID 0000.0001) 2.666701115686057E+03 /* J = 1 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) globalArea = /* Integrated horizontal Area (m^2) */ +(PID.TID 0000.0001) 1.273983641677108E+06 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End of Model config. summary +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) +(PID.TID 0000.0001) == Packages configuration : Check & print summary == +(PID.TID 0000.0001) +(PID.TID 0000.0001) OBCS_CHECK: #define ALLOW_OBCS +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // OBCS_CHECK: OBCS configuration summary +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) +(PID.TID 0000.0001) useOBCSprescribe = /* prescribe OB values */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useOBCSbalance = /* balance the flow through OB */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) OBCSbalanceSurf = /* include surf. flux in balance */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) OBCS_balanceFacN = /* Northern OB Factor for balancing OB flow [-] */ +(PID.TID 0000.0001) 1.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) OBCS_balanceFacS = /* Southern OB Factor for balancing OB flow [-] */ +(PID.TID 0000.0001) 1.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) OBCS_balanceFacE = /* Eastern OB Factor for balancing OB flow [-] */ +(PID.TID 0000.0001) 1.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) OBCS_balanceFacW = /* Western OB Factor for balancing OB flow [-] */ +(PID.TID 0000.0001) 1.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) OBCSfixTopo = /* mod. topo to have zero gradient across boundaries. */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) OBCS_uvApplyFac = /* Factor to apply to U,V 2nd column/row */ +(PID.TID 0000.0001) 1.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) OBCS_u1_adv_T = /* Temp uses upwind adv-scheme @ OB */ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) OBCS_u1_adv_S = /* Salt uses upwind adv-scheme @ OB */ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) OBCS_monitorFreq = /* monitor output frequency [s] */ +(PID.TID 0000.0001) 4.000000000000000E+02 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) OBCS_monSelect = /* select group of variables to monitor */ +(PID.TID 0000.0001) 0 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) OBCSprintDiags = /* print some OBCS diagnostics. */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useOBCStides = /* apply tidal forcing through OB */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) tidalPeriod = /* (s) */ +(PID.TID 0000.0001) 10 @ 0.000000000000000E+00 /* I = 1: 10 */ +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useOrlanskiNorth = /* use Orlanski for northern bound. */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useOrlanskiSouth = /* use Orlanski for southern bound. */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useOrlanskiEast = /* use Orlanski for eastern bound. */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useOrlanskiWest = /* use Orlanski for western bound. */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useStevensNorth = /* use Stevens for northern bound. */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useStevensSouth = /* use Stevens for southern bound. */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useStevensEast = /* use Stevens for eastern bound. */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useStevensWest = /* use Stevens for western bound. */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useStevensPhaseVel = /* include phase vel. term. */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useStevensAdvection = /* include advection term. */ +(PID.TID 0000.0001) T +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) TrelaxStevens = /* relaxation time scale for theta ( s ). */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) SrelaxStevens = /* relaxation time scale for salinity ( s ). */ +(PID.TID 0000.0001) 0.000000000000000E+00 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) useOBCSSponge = /* use sponge along boundaries */ +(PID.TID 0000.0001) F +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) OB_indexNone = /* null value for OB index (i.e. no OB) */ +(PID.TID 0000.0001) -99 +(PID.TID 0000.0001) ; +(PID.TID 0000.0001) ======== Tile bi= 1 , bj= 1 ======== +(PID.TID 0000.0001) OB_Jn = /* Northern OB local indices */ +(PID.TID 0000.0001) 86 @ -99 /* I = -2: 83 */ +(PID.TID 0000.0001) OB_Js = /* Southern OB local indices */ +(PID.TID 0000.0001) 86 @ -99 /* I = -2: 83 */ +(PID.TID 0000.0001) OB_Ie = /* Eastern OB local indices */ +(PID.TID 0000.0001) 7 @ -99 /* J = -2: 4 */ +(PID.TID 0000.0001) OB_Iw = /* Western OB local indices */ +(PID.TID 0000.0001) 7 @ -99 /* J = -2: 4 */ +(PID.TID 0000.0001) ======== Tile bi= 2 , bj= 1 ======== +(PID.TID 0000.0001) OB_Jn = /* Northern OB local indices */ +(PID.TID 0000.0001) 86 @ -99 /* I = -2: 83 */ +(PID.TID 0000.0001) OB_Js = /* Southern OB local indices */ +(PID.TID 0000.0001) 86 @ -99 /* I = -2: 83 */ +(PID.TID 0000.0001) OB_Ie = /* Eastern OB local indices */ +(PID.TID 0000.0001) 7 @ -99 /* J = -2: 4 */ +(PID.TID 0000.0001) OB_Iw = /* Western OB local indices */ +(PID.TID 0000.0001) 7 @ -99 /* J = -2: 4 */ +(PID.TID 0000.0001) ======== Tile bi= 3 , bj= 1 ======== +(PID.TID 0000.0001) OB_Jn = /* Northern OB local indices */ +(PID.TID 0000.0001) 86 @ -99 /* I = -2: 83 */ +(PID.TID 0000.0001) OB_Js = /* Southern OB local indices */ +(PID.TID 0000.0001) 86 @ -99 /* I = -2: 83 */ +(PID.TID 0000.0001) OB_Ie = /* Eastern OB local indices */ +(PID.TID 0000.0001) 7 @ -99 /* J = -2: 4 */ +(PID.TID 0000.0001) OB_Iw = /* Western OB local indices */ +(PID.TID 0000.0001) 7 @ -99 /* J = -2: 4 */ +(PID.TID 0000.0001) ======== Tile bi= 4 , bj= 1 ======== +(PID.TID 0000.0001) OB_Jn = /* Northern OB local indices */ +(PID.TID 0000.0001) 86 @ -99 /* I = -2: 83 */ +(PID.TID 0000.0001) OB_Js = /* Southern OB local indices */ +(PID.TID 0000.0001) 86 @ -99 /* I = -2: 83 */ +(PID.TID 0000.0001) OB_Ie = /* Eastern OB local indices */ +(PID.TID 0000.0001) 7 @ 80 /* J = -2: 4 */ +(PID.TID 0000.0001) OB_Iw = /* Western OB local indices */ +(PID.TID 0000.0001) 7 @ -99 /* J = -2: 4 */ +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End of OBCS config. summary +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) +(PID.TID 0000.0001) OBCS_CHECK: #define ALLOW_ORLANSKI +(PID.TID 0000.0001) OBCS_CHECK: set-up OK +(PID.TID 0000.0001) OBCS_CHECK: check Inside Mask and OB locations: OK +(PID.TID 0000.0001) GAD_CHECK: #define ALLOW_GENERIC_ADVDIFF +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Check Model config. (CONFIG_CHECK): +(PID.TID 0000.0001) // CONFIG_CHECK : Normal End +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) +(PID.TID 0000.0001) MDS_READ_FIELD: opening global file: T.init +(PID.TID 0000.0001) Start initial hydrostatic pressure computation +(PID.TID 0000.0001) Pressure is predetermined for buoyancyRelation OCEANIC +(PID.TID 0000.0001) +(PID.TID 0000.0001) MDS_READ_FIELD: opening global file: Qnet.forcing +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Model current state +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 0 +(PID.TID 0000.0001) %MON time_secondsf = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_eta_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_eta_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_eta_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_uvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = -0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9980345224379E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = 3.9889598923900E-07 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0640617176934E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8825342517700E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.1216372586452E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON pe_b_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON ke_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON ke_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin OBCS MONITOR field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON obc_time_tsnumber = 0 +(PID.TID 0000.0001) %MON obc_time_secondsf = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON obc_E_uVel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON obc_E_uVel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON obc_E_uVel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON obc_E_uVel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON obc_E_uVel_Int = 0.0000000000000E+00 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End OBCS MONITOR field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) SOLVE_FOR_PRESSURE: putPmEinXvector = F +(PID.TID 0000.0001) SOLVE_FOR_PRESSURE: zeroPsNH= F , zeroMeanPnh= F +(PID.TID 0000.0001) SOLVE_FOR_PRESSURE: oldFreeSurfTerm = T + cg2d: Sum(rhs),rhsMax = 6.66133814775094E-16 4.34534814524274E-04 +(PID.TID 0000.0001) cg2d_init_res = 4.31213602031276E+00 +(PID.TID 0000.0001) cg2d_iters(min,last) = -1 199 +(PID.TID 0000.0001) cg2d_last_res = 8.69882100770269E-14 + cg3d: Sum(rhs),rhsMax = -2.73210273848967E-14 9.42857689229853E-06 +(PID.TID 0000.0001) cg3d_init_res = 2.10684632797408E+01 +(PID.TID 0000.0001) cg3d_iters (last) = 20 +(PID.TID 0000.0001) cg3d_last_res = 3.04049897397057E-03 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 1 +(PID.TID 0000.0001) %MON time_secondsf = 2.0000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_eta_max = 2.3725500233583E-05 +(PID.TID 0000.0001) %MON dynstat_eta_min = -2.0699974017747E-05 +(PID.TID 0000.0001) %MON dynstat_eta_mean = -2.1801260627244E-19 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 7.5296024184042E-06 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 9.0533798245052E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 1.0004216839354E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_min = -1.0905120582135E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = 1.0756742432170E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 2.1316815734603E-05 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 5.6951890137339E-07 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = 8.9133299602885E-05 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -9.5323128568249E-05 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = -5.7732074913562E-23 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 2.0618351917428E-05 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 5.8122434880565E-07 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9980210743326E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = -1.6971463843299E-06 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0633840131541E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8823288461251E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.1209819701864E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 2.2946484398834E-04 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 5.7193877140949E-04 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 1.6354763613003E-04 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 5.7193877140949E-04 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 5.7193877140949E-04 +(PID.TID 0000.0001) %MON pe_b_mean = 1.7623453526678E-12 +(PID.TID 0000.0001) %MON ke_max = 4.7002899891188E-09 +(PID.TID 0000.0001) %MON ke_mean = 4.3923124901351E-10 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = 2.3960859949972E-10 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = -5.7843013716005E-21 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= + cg2d: Sum(rhs),rhsMax = 2.23815813142625E-06 4.34550800999035E-04 +(PID.TID 0000.0001) cg2d_init_res = 1.57377283861334E-03 +(PID.TID 0000.0001) cg2d_iters(min,last) = -1 187 +(PID.TID 0000.0001) cg2d_last_res = 7.42767194477353E-14 + cg3d: Sum(rhs),rhsMax = 7.11930514540882E-15 9.42787453239293E-06 +(PID.TID 0000.0001) cg3d_init_res = 7.82205886086472E-02 +(PID.TID 0000.0001) cg3d_iters (last) = 20 +(PID.TID 0000.0001) cg3d_last_res = 3.60371778783145E-04 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 2 +(PID.TID 0000.0001) %MON time_secondsf = 4.0000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_eta_max = 2.4209078977724E-05 +(PID.TID 0000.0001) %MON dynstat_eta_min = -2.0550421704206E-05 +(PID.TID 0000.0001) %MON dynstat_eta_mean = -7.9707986619789E-10 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 7.6288707639973E-06 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 9.0551011746044E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 1.9909757529946E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_min = -2.1605805942540E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = 1.4918590059606E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 4.2577106075981E-05 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 1.1360462000507E-06 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = 1.7788404001256E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -1.9027029154783E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = -6.3949375288869E-22 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 4.1157398571935E-05 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 1.1596812176664E-06 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9979934955426E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = -2.8990100788158E-04 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0627063390148E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8819511341779E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.1196750979156E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 4.5575658301707E-04 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 1.1416217492870E-03 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 3.2402929082467E-04 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 1.1416217492870E-03 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 1.1416217492870E-03 +(PID.TID 0000.0001) %MON pe_b_mean = 1.8091203051251E-12 +(PID.TID 0000.0001) %MON ke_max = 1.8726890597219E-08 +(PID.TID 0000.0001) %MON ke_mean = 1.7512500623063E-09 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = -4.9915406082761E-14 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = -5.8148023957822E-20 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= + cg2d: Sum(rhs),rhsMax = 2.41481457020909E-06 4.34511207280642E-04 +(PID.TID 0000.0001) cg2d_init_res = 9.24082669891254E-04 +(PID.TID 0000.0001) cg2d_iters(min,last) = -1 187 +(PID.TID 0000.0001) cg2d_last_res = 6.09123787664842E-14 + cg3d: Sum(rhs),rhsMax = 6.64572563646715E-14 9.42551251836822E-06 +(PID.TID 0000.0001) cg3d_init_res = 3.64962857081734E-02 +(PID.TID 0000.0001) cg3d_iters (last) = 20 +(PID.TID 0000.0001) cg3d_last_res = 1.98276558094457E-04 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 3 +(PID.TID 0000.0001) %MON time_secondsf = 6.0000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_eta_max = 2.4086829539332E-05 +(PID.TID 0000.0001) %MON dynstat_eta_min = -2.0349422672653E-05 +(PID.TID 0000.0001) %MON dynstat_eta_mean = -8.5991453021286E-10 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 7.6273125820413E-06 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 9.0535967865542E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 2.9793294453878E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_min = -3.2185343110942E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = 1.6845706618984E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 6.3779925093980E-05 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 1.7003809576567E-06 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = 2.6644438863733E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -2.8498330553196E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = 8.0106055145253E-11 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 6.1666245963179E-05 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 1.7365170464312E-06 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9979520457098E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = -5.7713868592836E-04 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0620286653525E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8814018443826E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.1177191871126E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 6.7992969487489E-04 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 1.7098998331917E-03 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 4.8269404672626E-04 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 1.7098998331917E-03 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 1.7098998331917E-03 +(PID.TID 0000.0001) %MON pe_b_mean = 1.8083813652621E-12 +(PID.TID 0000.0001) %MON ke_max = 4.2003030071767E-08 +(PID.TID 0000.0001) %MON ke_mean = 3.9305298551232E-09 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = -3.0170376091621E-12 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = -7.4073915869837E-20 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= + cg2d: Sum(rhs),rhsMax = 1.91505486450694E-06 4.34475043664295E-04 +(PID.TID 0000.0001) cg2d_init_res = 7.34277256895778E-04 +(PID.TID 0000.0001) cg2d_iters(min,last) = -1 186 +(PID.TID 0000.0001) cg2d_last_res = 5.31479418783895E-14 + cg3d: Sum(rhs),rhsMax = 5.54849135386837E-14 9.42215859953424E-06 +(PID.TID 0000.0001) cg3d_init_res = 9.36355444481918E-03 +(PID.TID 0000.0001) cg3d_iters (last) = 20 +(PID.TID 0000.0001) cg3d_last_res = 1.52314019033639E-04 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 4 +(PID.TID 0000.0001) %MON time_secondsf = 8.0000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_eta_max = 2.3971539549744E-05 +(PID.TID 0000.0001) %MON dynstat_eta_min = -2.0026517887242E-05 +(PID.TID 0000.0001) %MON dynstat_eta_mean = -6.8189353586751E-10 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 7.6439490258528E-06 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 9.0527882453940E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 3.9647194365496E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_min = -4.2646295904740E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = 1.7033546557638E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 8.4932770713200E-05 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 2.2625876500548E-06 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = 3.5477973859371E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -3.7946070255206E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = 2.8249858402952E-10 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 8.2135516593114E-05 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 2.3116289487073E-06 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9978965472701E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = -8.6341586034006E-04 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0613509913889E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8806820548813E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.1151179791597E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 9.0196348737697E-04 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 2.2767642153124E-03 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 6.3958035423728E-04 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 2.2767642153124E-03 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 2.2767642153124E-03 +(PID.TID 0000.0001) %MON pe_b_mean = 1.8162787241218E-12 +(PID.TID 0000.0001) %MON ke_max = 7.4459603369167E-08 +(PID.TID 0000.0001) %MON ke_mean = 6.9714298109590E-09 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = 9.5945277135006E-13 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = 3.8344144685563E-20 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= + cg2d: Sum(rhs),rhsMax = 9.01814270315437E-07 4.34427624253047E-04 +(PID.TID 0000.0001) cg2d_init_res = 9.62035102142264E-04 +(PID.TID 0000.0001) cg2d_iters(min,last) = -1 186 +(PID.TID 0000.0001) cg2d_last_res = 6.71578403657019E-14 + cg3d: Sum(rhs),rhsMax = 1.15608260811695E-13 9.41774267343692E-06 +(PID.TID 0000.0001) cg3d_init_res = 1.01206780877783E-02 +(PID.TID 0000.0001) cg3d_iters (last) = 20 +(PID.TID 0000.0001) cg3d_last_res = 8.08558325574904E-05 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 5 +(PID.TID 0000.0001) %MON time_secondsf = 1.0000000000000E+02 +(PID.TID 0000.0001) %MON dynstat_eta_max = 2.3969093570893E-05 +(PID.TID 0000.0001) %MON dynstat_eta_min = -1.9736497683203E-05 +(PID.TID 0000.0001) %MON dynstat_eta_mean = -3.2107393691919E-10 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 7.6757739975331E-06 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 9.0517522186353E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 4.9468481717482E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_min = -5.2997187012014E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = 1.5467275076887E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 1.0603565620668E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 2.8226516393856E-06 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = 4.4287497244108E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -4.7369687602573E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = 6.4724026741285E-10 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 1.0256445225923E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 2.8850039748568E-06 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9978268770505E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = -1.1487378012617E-03 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0606733173968E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8797932203190E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.1118758547085E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 1.1218351521695E-03 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 2.8421812561544E-03 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 7.9481603087963E-04 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 2.8421812561544E-03 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 2.8421812561544E-03 +(PID.TID 0000.0001) %MON pe_b_mean = 1.8314340592595E-12 +(PID.TID 0000.0001) %MON ke_max = 1.1602371463667E-07 +(PID.TID 0000.0001) %MON ke_mean = 1.0868277215584E-08 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = 3.4570532846265E-12 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = 1.6557698841493E-21 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= + cg2d: Sum(rhs),rhsMax = -8.41672780166336E-07 4.34368533505472E-04 +(PID.TID 0000.0001) cg2d_init_res = 1.19787220858063E-03 +(PID.TID 0000.0001) cg2d_iters(min,last) = -1 186 +(PID.TID 0000.0001) cg2d_last_res = 8.05187838747966E-14 + cg3d: Sum(rhs),rhsMax = -3.37453589377423E-14 9.41224895769901E-06 +(PID.TID 0000.0001) cg3d_init_res = 1.22574671931000E-02 +(PID.TID 0000.0001) cg3d_iters (last) = 20 +(PID.TID 0000.0001) cg3d_last_res = 6.60687314723290E-05 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 6 +(PID.TID 0000.0001) %MON time_secondsf = 1.2000000000000E+02 +(PID.TID 0000.0001) %MON dynstat_eta_max = 2.4060487736102E-05 +(PID.TID 0000.0001) %MON dynstat_eta_min = -1.9552908999972E-05 +(PID.TID 0000.0001) %MON dynstat_eta_mean = 2.9962093617288E-10 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 7.7108679367531E-06 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 9.0504603555070E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 5.9255710742447E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_min = -6.3241280795302E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = 1.2521765138075E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 1.2708813070884E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 3.3805567999052E-06 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = 5.3072326144000E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -5.6769312925158E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = 1.2040022559682E-09 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 1.2295273126791E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 3.4566279179964E-06 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9977430255630E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = -1.4331098800952E-03 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0599956435612E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8787368724876E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.1079975946143E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 1.3395417682619E-03 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 3.4061587755095E-03 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 9.4845003335878E-04 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 3.4061587755095E-03 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 3.4061587755095E-03 +(PID.TID 0000.0001) %MON pe_b_mean = 1.8482191187126E-12 +(PID.TID 0000.0001) %MON ke_max = 1.6662286665589E-07 +(PID.TID 0000.0001) %MON ke_mean = 1.5615346345890E-08 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = 5.0276565879222E-12 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = 7.2570651106596E-20 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= + cg2d: Sum(rhs),rhsMax = -3.29314474097064E-06 4.34297937972757E-04 +(PID.TID 0000.0001) cg2d_init_res = 1.43333613168551E-03 +(PID.TID 0000.0001) cg2d_iters(min,last) = -1 186 +(PID.TID 0000.0001) cg2d_last_res = 9.21284065438754E-14 + cg3d: Sum(rhs),rhsMax = -1.31886472229392E-13 9.40568226993945E-06 +(PID.TID 0000.0001) cg3d_init_res = 1.44792581269258E-02 +(PID.TID 0000.0001) cg3d_iters (last) = 20 +(PID.TID 0000.0001) cg3d_last_res = 2.57775096432215E-05 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 7 +(PID.TID 0000.0001) %MON time_secondsf = 1.4000000000000E+02 +(PID.TID 0000.0001) %MON dynstat_eta_max = 2.4188352421996E-05 +(PID.TID 0000.0001) %MON dynstat_eta_min = -1.9452439157131E-05 +(PID.TID 0000.0001) %MON dynstat_eta_mean = 1.1721119778817E-09 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 7.7412005444025E-06 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 9.0489191485580E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 6.9008619292788E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_min = -7.3377642207053E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = 8.8190514768972E-08 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 1.4808979744663E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 3.9362876856978E-06 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = 6.1831676717826E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -6.6144889596640E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = 1.9772049991961E-09 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 1.4330004129112E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 4.0264880992500E-06 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9976450514864E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = -1.7165377965886E-03 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0593179700635E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8775150002203E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.1034878739659E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 1.5550996253045E-03 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 3.9686933757984E-03 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 1.1004683384628E-03 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 3.9686933757984E-03 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 3.9686933757984E-03 +(PID.TID 0000.0001) %MON pe_b_mean = 1.8627886133932E-12 +(PID.TID 0000.0001) %MON ke_max = 2.2618454375546E-07 +(PID.TID 0000.0001) %MON ke_mean = 2.1206869025752E-08 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = 5.6189939905406E-12 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = -1.2832216602157E-19 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= + cg2d: Sum(rhs),rhsMax = -6.84265687590779E-06 4.34215565627678E-04 +(PID.TID 0000.0001) cg2d_init_res = 1.66819596592030E-03 +(PID.TID 0000.0001) cg2d_iters(min,last) = -1 187 +(PID.TID 0000.0001) cg2d_last_res = 6.19560853956792E-14 + cg3d: Sum(rhs),rhsMax = -1.21674588807186E-14 9.39805172352553E-06 +(PID.TID 0000.0001) cg3d_init_res = 1.66959566269706E-02 +(PID.TID 0000.0001) cg3d_iters (last) = 20 +(PID.TID 0000.0001) cg3d_last_res = 2.48790013322244E-05 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 8 +(PID.TID 0000.0001) %MON time_secondsf = 1.6000000000000E+02 +(PID.TID 0000.0001) %MON dynstat_eta_max = 2.4301976990332E-05 +(PID.TID 0000.0001) %MON dynstat_eta_min = -1.9405208294514E-05 +(PID.TID 0000.0001) %MON dynstat_eta_mean = 2.4350095457721E-09 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 7.7613816158795E-06 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 9.0471320510136E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 7.8727802267991E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_min = -8.3404138727579E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = 4.9557412633551E-08 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 1.6904027760717E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 4.4898290701175E-06 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = 7.0564929463346E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -7.5496167235315E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = 2.9860842731086E-09 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 1.6360601513836E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 4.5945698181696E-06 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9975330432097E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = -1.9990276301273E-03 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0586402971099E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8761297860995E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.0983539735391E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 1.7685305124108E-03 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 4.5297700341189E-03 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 1.2508389641012E-03 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 4.5297700341189E-03 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 4.5297700341189E-03 +(PID.TID 0000.0001) %MON pe_b_mean = 1.8725138799473E-12 +(PID.TID 0000.0001) %MON ke_max = 2.9463544744461E-07 +(PID.TID 0000.0001) %MON ke_mean = 2.7637023824166E-08 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = 4.9872683515014E-12 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = -9.6726372936208E-20 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= + cg2d: Sum(rhs),rhsMax = -1.16119664666375E-05 4.34121251514198E-04 +(PID.TID 0000.0001) cg2d_init_res = 1.90207723876975E-03 +(PID.TID 0000.0001) cg2d_iters(min,last) = -1 187 +(PID.TID 0000.0001) cg2d_last_res = 6.83977303402417E-14 + cg3d: Sum(rhs),rhsMax = 2.39563143628052E-14 9.38936763133497E-06 +(PID.TID 0000.0001) cg3d_init_res = 1.88908382204913E-02 +(PID.TID 0000.0001) cg3d_iters (last) = 20 +(PID.TID 0000.0001) cg3d_last_res = 3.26447421947210E-05 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 9 +(PID.TID 0000.0001) %MON time_secondsf = 1.8000000000000E+02 +(PID.TID 0000.0001) %MON dynstat_eta_max = 2.4373506071527E-05 +(PID.TID 0000.0001) %MON dynstat_eta_min = -1.9399498379530E-05 +(PID.TID 0000.0001) %MON dynstat_eta_mean = 4.1313057426435E-09 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 7.7685366879808E-06 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 9.0451024979267E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 8.8414375627665E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_min = -9.3475912318418E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = 1.3833462895570E-08 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 1.8993920282110E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 5.0411661021285E-06 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = 7.9271514345235E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -8.4822851710013E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = 4.2447532932284E-09 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 1.8387030943821E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 5.1608593946757E-06 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9974071017821E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = -2.2805857907473E-03 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0579626248734E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8745833333878E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.0926005530160E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 1.9798569075973E-03 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 5.0893711026008E-03 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 1.4020466772432E-03 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 5.0893711026008E-03 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 5.0893711026008E-03 +(PID.TID 0000.0001) %MON pe_b_mean = 1.8759682880577E-12 +(PID.TID 0000.0001) %MON ke_max = 3.7190146327571E-07 +(PID.TID 0000.0001) %MON ke_mean = 3.4899945389018E-08 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = 3.3546392047247E-12 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = -1.9453006859874E-19 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= + cg2d: Sum(rhs),rhsMax = -1.76822457728931E-05 4.34014888254532E-04 +(PID.TID 0000.0001) cg2d_init_res = 2.13674198462221E-03 +(PID.TID 0000.0001) cg2d_iters(min,last) = -1 187 +(PID.TID 0000.0001) cg2d_last_res = 7.64135922439909E-14 + cg3d: Sum(rhs),rhsMax = 1.13739272449183E-13 9.37963879959696E-06 +(PID.TID 0000.0001) cg3d_init_res = 2.10747145110800E-02 +(PID.TID 0000.0001) cg3d_iters (last) = 20 +(PID.TID 0000.0001) cg3d_last_res = 4.98027022628392E-05 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 10 +(PID.TID 0000.0001) %MON time_secondsf = 2.0000000000000E+02 +(PID.TID 0000.0001) %MON dynstat_eta_max = 2.4397399691114E-05 +(PID.TID 0000.0001) %MON dynstat_eta_min = -1.9430882797286E-05 +(PID.TID 0000.0001) %MON dynstat_eta_mean = 6.2894485337040E-09 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 7.7630040904293E-06 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 9.0428315561705E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 9.8069467630973E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_min = -1.0360747497258E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = -1.5955752793344E-08 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 2.1078620468187E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 5.5902840543539E-06 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = 8.7950873785488E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -9.4124646915388E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = 5.7623062585644E-09 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 2.0409258173998E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 5.7253430625176E-06 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9972673377655E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = -2.5612189535135E-03 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0572849534644E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8728769211634E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.0862357990256E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 2.1891003253569E-03 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 5.6474788149233E-03 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 1.5540101446460E-03 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 5.6474788149233E-03 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 5.6474788149233E-03 +(PID.TID 0000.0001) %MON pe_b_mean = 1.8732978846656E-12 +(PID.TID 0000.0001) %MON ke_max = 4.5790764227774E-07 +(PID.TID 0000.0001) %MON ke_mean = 4.2989721711394E-08 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = 1.1885986883044E-12 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = 2.9444381558260E-20 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= + cg2d: Sum(rhs),rhsMax = -2.50106049382304E-05 4.33896974102028E-04 +(PID.TID 0000.0001) cg2d_init_res = 2.36947374523446E-03 +(PID.TID 0000.0001) cg2d_iters(min,last) = -1 187 +(PID.TID 0000.0001) cg2d_last_res = 8.41372526672456E-14 + cg3d: Sum(rhs),rhsMax = -1.38853772230219E-15 9.36887579226894E-06 +(PID.TID 0000.0001) cg3d_init_res = 2.32442972140039E-02 +(PID.TID 0000.0001) cg3d_iters (last) = 20 +(PID.TID 0000.0001) cg3d_last_res = 6.54321074700078E-05 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 11 +(PID.TID 0000.0001) %MON time_secondsf = 2.2000000000000E+02 +(PID.TID 0000.0001) %MON dynstat_eta_max = 2.4383213150648E-05 +(PID.TID 0000.0001) %MON dynstat_eta_min = -1.9492423462278E-05 +(PID.TID 0000.0001) %MON dynstat_eta_mean = 8.8936766377612E-09 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 7.7480175813482E-06 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 9.0403208560506E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 1.0769393336881E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_min = -1.1368397421017E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = -3.7859359299295E-08 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 2.3158091859243E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 6.1371685071417E-06 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = 9.6602442698580E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -1.0340127605043E-03 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = 7.5422905426285E-09 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 2.2427250213791E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 6.2880075375111E-06 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9971138732412E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = -2.8409339885489E-03 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0566072829135E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8710129632642E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.0792678285614E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 2.3962800715417E-03 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 6.2040765630257E-03 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 1.7051477149988E-03 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 6.2040765630257E-03 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 6.2040765630257E-03 +(PID.TID 0000.0001) %MON pe_b_mean = 1.8660732825401E-12 +(PID.TID 0000.0001) %MON ke_max = 5.5257826445055E-07 +(PID.TID 0000.0001) %MON ke_mean = 5.1900398491617E-08 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = -8.9913370868522E-13 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = 1.7778829131053E-19 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= + cg2d: Sum(rhs),rhsMax = -3.35859961355378E-05 4.33767074237177E-04 +(PID.TID 0000.0001) cg2d_init_res = 2.61097984151390E-03 +(PID.TID 0000.0001) cg2d_iters(min,last) = -1 187 +(PID.TID 0000.0001) cg2d_last_res = 9.24412043059259E-14 + cg3d: Sum(rhs),rhsMax = -1.09480566973241E-14 9.35708958784259E-06 +(PID.TID 0000.0001) cg3d_init_res = 2.54219654129363E-02 +(PID.TID 0000.0001) cg3d_iters (last) = 20 +(PID.TID 0000.0001) cg3d_last_res = 7.19914558136640E-05 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 12 +(PID.TID 0000.0001) %MON time_secondsf = 2.4000000000000E+02 +(PID.TID 0000.0001) %MON dynstat_eta_max = 2.4348101500112E-05 +(PID.TID 0000.0001) %MON dynstat_eta_min = -1.9572972538303E-05 +(PID.TID 0000.0001) %MON dynstat_eta_mean = 1.1939477848786E-08 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 7.7282821363923E-06 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 9.0375666976703E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 1.1728824898310E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_min = -1.2370451764644E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = -5.0715257666241E-08 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 2.5232296912971E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 6.6818051697253E-06 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = 1.0522562785154E-03 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -1.1265221557003E-03 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = 9.5581920054411E-09 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 2.4440973049755E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 6.8488392641643E-06 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9969468442896E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = -3.1197378848451E-03 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0559296131836E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8689963255060E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.0717056601742E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 2.6014117868606E-03 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 6.7591329342019E-03 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 1.8554460034085E-03 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 6.7591329342019E-03 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 6.7591329342019E-03 +(PID.TID 0000.0001) %MON pe_b_mean = 1.8565809980131E-12 +(PID.TID 0000.0001) %MON ke_max = 6.5583302808057E-07 +(PID.TID 0000.0001) %MON ke_mean = 6.1625972533330E-08 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = -2.3678887514685E-12 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = -2.7085998795640E-19 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= + cg2d: Sum(rhs),rhsMax = -4.35723076804839E-05 4.33625200651200E-04 +(PID.TID 0000.0001) cg2d_init_res = 2.83998656487476E-03 +(PID.TID 0000.0001) cg2d_iters(min,last) = -1 187 +(PID.TID 0000.0001) cg2d_last_res = 9.96870166490927E-14 + cg3d: Sum(rhs),rhsMax = 2.71961272946264E-15 9.34429140450606E-06 +(PID.TID 0000.0001) cg3d_init_res = 2.75578361448932E-02 +(PID.TID 0000.0001) cg3d_iters (last) = 20 +(PID.TID 0000.0001) cg3d_last_res = 8.39233592389554E-05 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 13 +(PID.TID 0000.0001) %MON time_secondsf = 2.6000000000000E+02 +(PID.TID 0000.0001) %MON dynstat_eta_max = 2.4310081837736E-05 +(PID.TID 0000.0001) %MON dynstat_eta_min = -1.9659207681121E-05 +(PID.TID 0000.0001) %MON dynstat_eta_mean = 1.5484443182092E-08 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 7.7083656843904E-06 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 9.0345828405258E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 1.2685252711320E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_min = -1.3366879997969E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = -5.4118196642472E-08 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 2.7301199493765E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 7.2241802414404E-06 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = 1.1381980161757E-03 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -1.2187721215277E-03 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = 1.1785313569758E-08 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 2.6450393662391E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 7.4078249636009E-06 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9967664023632E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = -3.3976376655138E-03 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0552519441985E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8668295115209E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.0635543483892E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 2.8045069741812E-03 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 7.3126327291664E-03 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 2.0049004306502E-03 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 7.3126327291664E-03 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 7.3126327291664E-03 +(PID.TID 0000.0001) %MON pe_b_mean = 1.8470272331681E-12 +(PID.TID 0000.0001) %MON ke_max = 7.6759321834162E-07 +(PID.TID 0000.0001) %MON ke_mean = 7.2160402364936E-08 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = -2.9074231384937E-12 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = -1.3976005008971E-19 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= + cg2d: Sum(rhs),rhsMax = -5.50262311207056E-05 4.33471337007030E-04 +(PID.TID 0000.0001) cg2d_init_res = 3.06973883043074E-03 +(PID.TID 0000.0001) cg2d_iters(min,last) = -1 188 +(PID.TID 0000.0001) cg2d_last_res = 5.23874834379332E-14 + cg3d: Sum(rhs),rhsMax = 1.05804471087212E-13 9.33049312257702E-06 +(PID.TID 0000.0001) cg3d_init_res = 2.96876825406703E-02 +(PID.TID 0000.0001) cg3d_iters (last) = 20 +(PID.TID 0000.0001) cg3d_last_res = 9.82334818777206E-05 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 14 +(PID.TID 0000.0001) %MON time_secondsf = 2.8000000000000E+02 +(PID.TID 0000.0001) %MON dynstat_eta_max = 2.4282967441321E-05 +(PID.TID 0000.0001) %MON dynstat_eta_min = -1.9737813019069E-05 +(PID.TID 0000.0001) %MON dynstat_eta_mean = 1.9547925293216E-08 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 7.6917073759346E-06 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 9.0313735380933E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 1.3638658469086E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_min = -1.4357709410304E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = -4.8512536215971E-08 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 2.9364763120496E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 7.7642797101351E-06 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = 1.2238431896685E-03 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -1.3107601261736E-03 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = 1.4200859525660E-08 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 2.8455479351262E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 7.9649514244715E-06 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9965727139583E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = -3.6746403029739E-03 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0545742758716E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8645150799234E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.0548239413129E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 3.0055736780834E-03 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 7.8645607570418E-03 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 2.1535150898522E-03 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 7.8645607570418E-03 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 7.8645607570418E-03 +(PID.TID 0000.0001) %MON pe_b_mean = 1.8390572105890E-12 +(PID.TID 0000.0001) %MON ke_max = 8.8777877376807E-07 +(PID.TID 0000.0001) %MON ke_mean = 8.3497604269430E-08 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = -2.4334653412958E-12 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = 3.1810389576926E-19 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= + cg2d: Sum(rhs),rhsMax = -6.79700504498254E-05 4.33305441553495E-04 +(PID.TID 0000.0001) cg2d_init_res = 3.31254893549103E-03 +(PID.TID 0000.0001) cg2d_iters(min,last) = -1 188 +(PID.TID 0000.0001) cg2d_last_res = 5.45186547882271E-14 + cg3d: Sum(rhs),rhsMax = 8.60964945170739E-15 9.31570618074364E-06 +(PID.TID 0000.0001) cg3d_init_res = 3.18416004223657E-02 +(PID.TID 0000.0001) cg3d_iters (last) = 20 +(PID.TID 0000.0001) cg3d_last_res = 1.23514757506529E-04 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 15 +(PID.TID 0000.0001) %MON time_secondsf = 3.0000000000000E+02 +(PID.TID 0000.0001) %MON dynstat_eta_max = 2.4274175780557E-05 +(PID.TID 0000.0001) %MON dynstat_eta_min = -1.9797148099380E-05 +(PID.TID 0000.0001) %MON dynstat_eta_mean = 2.4136942321122E-08 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 7.6804202448075E-06 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 9.0279283303530E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 1.4589001795918E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_min = -1.5343006465262E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = -3.5264805384515E-08 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 3.1422951876137E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 8.3020902339505E-06 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = 1.3091852895002E-03 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -1.4024795767034E-03 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = 1.6784590977023E-08 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 3.0456195905503E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 8.5202050663003E-06 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9963659585653E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = -3.9507526659494E-03 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0538966081345E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8620564859475E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.0455160123593E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 3.2046177449773E-03 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 8.4148774602201E-03 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 2.3012999499020E-03 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 8.4148774602201E-03 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 8.4148774602201E-03 +(PID.TID 0000.0001) %MON pe_b_mean = 1.8336700192032E-12 +(PID.TID 0000.0001) %MON ke_max = 1.0163035909640E-06 +(PID.TID 0000.0001) %MON ke_mean = 9.5631450076221E-08 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = -1.0937143582888E-12 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = -2.9091441135586E-19 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= + cg2d: Sum(rhs),rhsMax = -8.20225334580982E-05 4.33127444262009E-04 +(PID.TID 0000.0001) cg2d_init_res = 3.51160997655364E-03 +(PID.TID 0000.0001) cg2d_iters(min,last) = -1 188 +(PID.TID 0000.0001) cg2d_last_res = 6.18371269790304E-14 + cg3d: Sum(rhs),rhsMax = -6.68152599220262E-14 9.30034729454208E-06 +(PID.TID 0000.0001) cg3d_init_res = 3.39574009770563E-02 +(PID.TID 0000.0001) cg3d_iters (last) = 20 +(PID.TID 0000.0001) cg3d_last_res = 1.46147715813973E-04 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 16 +(PID.TID 0000.0001) %MON time_secondsf = 3.2000000000000E+02 +(PID.TID 0000.0001) %MON dynstat_eta_max = 2.4284797480129E-05 +(PID.TID 0000.0001) %MON dynstat_eta_min = -1.9828594172629E-05 +(PID.TID 0000.0001) %MON dynstat_eta_mean = 2.9115174641915E-08 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 7.6755969710176E-06 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 9.0242688260958E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 1.5536112409333E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_min = -1.6322853821986E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = -1.6590175769883E-08 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 3.3475729480071E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 8.8375979736387E-06 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = 1.3942178682133E-03 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -1.4939274467073E-03 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = 1.9519063475068E-08 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 3.2452511097905E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 9.0735732589130E-06 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9961463252896E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = -4.2349663491501E-03 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0532189409537E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8594537114070E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.0356254075147E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 3.4016445392921E-03 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 8.9635646802437E-03 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 2.4482674088578E-03 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 8.9635646802437E-03 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 8.9635646802437E-03 +(PID.TID 0000.0001) %MON pe_b_mean = 1.8313759305451E-12 +(PID.TID 0000.0001) %MON ke_max = 1.1530832008089E-06 +(PID.TID 0000.0001) %MON ke_mean = 1.0855577477320E-07 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = 8.3875992775328E-13 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = 2.6405717024158E-19 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= + cg2d: Sum(rhs),rhsMax = -9.62732432124858E-05 4.32937261594372E-04 +(PID.TID 0000.0001) cg2d_init_res = 3.73708338124221E-03 +(PID.TID 0000.0001) cg2d_iters(min,last) = -1 188 +(PID.TID 0000.0001) cg2d_last_res = 6.50621921492476E-14 + cg3d: Sum(rhs),rhsMax = 1.89095700903197E-13 9.28408424117483E-06 +(PID.TID 0000.0001) cg3d_init_res = 3.60768381191930E-02 +(PID.TID 0000.0001) cg3d_iters (last) = 20 +(PID.TID 0000.0001) cg3d_last_res = 9.07675852831321E-05 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 17 +(PID.TID 0000.0001) %MON time_secondsf = 3.4000000000000E+02 +(PID.TID 0000.0001) %MON dynstat_eta_max = 2.4311612116779E-05 +(PID.TID 0000.0001) %MON dynstat_eta_min = -1.9827512903133E-05 +(PID.TID 0000.0001) %MON dynstat_eta_mean = 3.4158680448958E-08 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 7.6776830819618E-06 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 9.0203956258926E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 1.6479936515189E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_min = -1.7297327794364E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = 4.8032332322633E-09 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 3.5523060738880E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 9.3707891214204E-06 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = 1.4789358948244E-03 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -1.5851013740696E-03 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = 2.2389606024414E-08 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 3.4444397984115E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 9.6250449136889E-06 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9959140100574E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = -4.5307066260177E-03 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0525412743224E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8567151398086E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.0251885428126E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 3.5966603633097E-03 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 9.5106082444173E-03 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 2.5944289130513E-03 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 9.5106082444173E-03 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 9.5106082444173E-03 +(PID.TID 0000.0001) %MON pe_b_mean = 1.8323814517693E-12 +(PID.TID 0000.0001) %MON ke_max = 1.2980326109741E-06 +(PID.TID 0000.0001) %MON ke_mean = 1.2226439484213E-07 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = 3.1602372188618E-12 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = -3.3273349415355E-20 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= + cg2d: Sum(rhs),rhsMax = -1.12125006636113E-04 4.32734842849651E-04 +(PID.TID 0000.0001) cg2d_init_res = 3.96674649499224E-03 +(PID.TID 0000.0001) cg2d_iters(min,last) = -1 188 +(PID.TID 0000.0001) cg2d_last_res = 7.02579652887483E-14 + cg3d: Sum(rhs),rhsMax = -6.20671049278432E-14 9.26690705745331E-06 +(PID.TID 0000.0001) cg3d_init_res = 3.81815483880965E-02 +(PID.TID 0000.0001) cg3d_iters (last) = 20 +(PID.TID 0000.0001) cg3d_last_res = 8.01022539759607E-05 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 18 +(PID.TID 0000.0001) %MON time_secondsf = 3.6000000000000E+02 +(PID.TID 0000.0001) %MON dynstat_eta_max = 2.4349712371207E-05 +(PID.TID 0000.0001) %MON dynstat_eta_min = -1.9793504307058E-05 +(PID.TID 0000.0001) %MON dynstat_eta_mean = 3.9764439397070E-08 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 7.6865732827081E-06 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 9.0163019619508E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 1.7420423123864E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_min = -1.8266483922347E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = 2.5990003488334E-08 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 3.7564910065663E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 9.9016508468295E-06 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = 1.5633328465323E-03 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -1.6759981047064E-03 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = 2.5384114884757E-08 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 3.6431820693477E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 1.0174605795465E-05 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9956692126641E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = -4.8261755097227E-03 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0518636083021E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8538463722200E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.0142191088938E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 3.7896729821107E-03 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 1.0055988628239E-02 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 2.7397927929287E-03 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 1.0055988628239E-02 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 1.0055988628239E-02 +(PID.TID 0000.0001) %MON pe_b_mean = 1.8366402358553E-12 +(PID.TID 0000.0001) %MON ke_max = 1.4510644196108E-06 +(PID.TID 0000.0001) %MON ke_mean = 1.3675105779867E-07 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = 5.3472906423410E-12 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = 1.1370618416593E-19 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= + cg2d: Sum(rhs),rhsMax = -1.31041483659930E-04 4.32520083779436E-04 +(PID.TID 0000.0001) cg2d_init_res = 4.19412511236208E-03 +(PID.TID 0000.0001) cg2d_iters(min,last) = -1 188 +(PID.TID 0000.0001) cg2d_last_res = 7.36015194304613E-14 + cg3d: Sum(rhs),rhsMax = -2.35666304179705E-13 9.24882088719347E-06 +(PID.TID 0000.0001) cg3d_init_res = 4.02775347147711E-02 +(PID.TID 0000.0001) cg3d_iters (last) = 20 +(PID.TID 0000.0001) cg3d_last_res = 1.43112317949705E-04 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 19 +(PID.TID 0000.0001) %MON time_secondsf = 3.8000000000000E+02 +(PID.TID 0000.0001) %MON dynstat_eta_max = 2.4394347516538E-05 +(PID.TID 0000.0001) %MON dynstat_eta_min = -1.9730026649868E-05 +(PID.TID 0000.0001) %MON dynstat_eta_mean = 4.6449987055877E-08 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 7.7018077418784E-06 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 9.0119926456933E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 1.8357529368376E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_min = -1.9230349529505E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = 4.4290713721078E-08 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 3.9601243418455E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 1.0430170739027E-05 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = 1.6474018618695E-03 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -1.7666145948246E-03 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = 2.8492745854664E-08 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 3.8414742758027E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 1.0722241266764E-05 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9954121364381E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = -5.1213730446968E-03 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0511859429905E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8508511438673E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.0027265581817E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 3.9806917973590E-03 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 1.0599687568947E-02 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 2.8843631467565E-03 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 1.0599687568947E-02 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 1.0599687568947E-02 +(PID.TID 0000.0001) %MON pe_b_mean = 1.8439454570122E-12 +(PID.TID 0000.0001) %MON ke_max = 1.6120902681770E-06 +(PID.TID 0000.0001) %MON ke_mean = 1.5200947281995E-07 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = 7.1324986705199E-12 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = 2.1156817559176E-19 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= + cg2d: Sum(rhs),rhsMax = -1.51810032991029E-04 4.32292866764538E-04 +(PID.TID 0000.0001) cg2d_init_res = 4.42095340355848E-03 +(PID.TID 0000.0001) cg2d_iters(min,last) = -1 188 +(PID.TID 0000.0001) cg2d_last_res = 7.92048104566951E-14 + cg3d: Sum(rhs),rhsMax = 3.35718865901447E-14 9.22985303565084E-06 +(PID.TID 0000.0001) cg3d_init_res = 4.23732173667623E-02 +(PID.TID 0000.0001) cg3d_iters (last) = 20 +(PID.TID 0000.0001) cg3d_last_res = 1.69097249408978E-04 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON time_tsnumber = 20 +(PID.TID 0000.0001) %MON time_secondsf = 4.0000000000000E+02 +(PID.TID 0000.0001) %MON dynstat_eta_max = 2.4440865210919E-05 +(PID.TID 0000.0001) %MON dynstat_eta_min = -1.9644457067076E-05 +(PID.TID 0000.0001) %MON dynstat_eta_mean = 5.3783500056488E-08 +(PID.TID 0000.0001) %MON dynstat_eta_sd = 7.7224721146196E-06 +(PID.TID 0000.0001) %MON dynstat_eta_del2 = 9.0074573018496E-07 +(PID.TID 0000.0001) %MON dynstat_uvel_max = 1.9291226236776E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_min = -2.0188934447318E-03 +(PID.TID 0000.0001) %MON dynstat_uvel_mean = 5.7628137793130E-08 +(PID.TID 0000.0001) %MON dynstat_uvel_sd = 4.1632026882358E-04 +(PID.TID 0000.0001) %MON dynstat_uvel_del2 = 1.0956336065764E-05 +(PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON dynstat_wvel_max = 1.7311376189522E-03 +(PID.TID 0000.0001) %MON dynstat_wvel_min = -1.8569472005993E-03 +(PID.TID 0000.0001) %MON dynstat_wvel_mean = 3.1707548964059E-08 +(PID.TID 0000.0001) %MON dynstat_wvel_sd = 4.0393134052784E-04 +(PID.TID 0000.0001) %MON dynstat_wvel_del2 = 1.1267939243442E-05 +(PID.TID 0000.0001) %MON dynstat_theta_max = 9.9951429885124E-03 +(PID.TID 0000.0001) %MON dynstat_theta_min = -5.4162990677269E-03 +(PID.TID 0000.0001) %MON dynstat_theta_mean = 5.0505082784894E-03 +(PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8477351936331E-03 +(PID.TID 0000.0001) %MON dynstat_theta_del2 = 5.9907234615148E-05 +(PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01 +(PID.TID 0000.0001) %MON dynstat_salt_sd = 1.2789769243682E-13 +(PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_u_max = 4.1697285669639E-03 +(PID.TID 0000.0001) %MON trAdv_CFL_v_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON trAdv_CFL_w_max = 1.1141683203596E-02 +(PID.TID 0000.0001) %MON advcfl_uvel_max = 3.0281414491599E-03 +(PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON advcfl_wvel_max = 1.1141683203596E-02 +(PID.TID 0000.0001) %MON advcfl_W_hf_max = 1.1141683203596E-02 +(PID.TID 0000.0001) %MON pe_b_mean = 1.8538760337040E-12 +(PID.TID 0000.0001) %MON ke_max = 1.7810198391574E-06 +(PID.TID 0000.0001) %MON ke_mean = 1.6803333413965E-07 +(PID.TID 0000.0001) %MON ke_vol = 2.0102771472217E+08 +(PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00 +(PID.TID 0000.0001) %MON surfExpan_theta_mean = 8.5113064831699E-12 +(PID.TID 0000.0001) %MON surfExpan_salt_mean = 9.4182805383913E-20 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End MONITOR dynamic field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // Begin OBCS MONITOR field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %MON obc_time_tsnumber = 20 +(PID.TID 0000.0001) %MON obc_time_secondsf = 4.0000000000000E+02 +(PID.TID 0000.0001) %MON obc_E_uVel_max = 1.4652876235966E-04 +(PID.TID 0000.0001) %MON obc_E_uVel_min = -1.6537729042711E-04 +(PID.TID 0000.0001) %MON obc_E_uVel_mean = 3.1875544472779E-21 +(PID.TID 0000.0001) %MON obc_E_uVel_sd = 3.2036234981783E-05 +(PID.TID 0000.0001) %MON obc_E_uVel_Int = 1.2750217548430E-16 +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) // End OBCS MONITOR field statistics +(PID.TID 0000.0001) // ======================================================= +(PID.TID 0000.0001) %CHECKPOINT 20 ckptA +(PID.TID 0000.0001) Seconds in section "ALL [THE_MODEL_MAIN]": +(PID.TID 0000.0001) User time: 16.548230764456093 +(PID.TID 0000.0001) System time: 0.10797499865293503 +(PID.TID 0000.0001) Wall clock time: 16.666604042053223 +(PID.TID 0000.0001) No. starts: 1 +(PID.TID 0000.0001) No. stops: 1 +(PID.TID 0000.0001) Seconds in section "INITIALISE_FIXED [THE_MODEL_MAIN]": +(PID.TID 0000.0001) User time: 0.13560799742117524 +(PID.TID 0000.0001) System time: 3.2685998827219009E-002 +(PID.TID 0000.0001) Wall clock time: 0.16843795776367188 +(PID.TID 0000.0001) No. starts: 1 +(PID.TID 0000.0001) No. stops: 1 +(PID.TID 0000.0001) Seconds in section "THE_MAIN_LOOP [THE_MODEL_MAIN]": +(PID.TID 0000.0001) User time: 16.412575140595436 +(PID.TID 0000.0001) System time: 7.5285997241735458E-002 +(PID.TID 0000.0001) Wall clock time: 16.498129129409790 +(PID.TID 0000.0001) No. starts: 1 +(PID.TID 0000.0001) No. stops: 1 +(PID.TID 0000.0001) Seconds in section "INITIALISE_VARIA [THE_MAIN_LOOP]": +(PID.TID 0000.0001) User time: 0.10900400578975677 +(PID.TID 0000.0001) System time: 3.9290998131036758E-002 +(PID.TID 0000.0001) Wall clock time: 0.14829897880554199 +(PID.TID 0000.0001) No. starts: 1 +(PID.TID 0000.0001) No. stops: 1 +(PID.TID 0000.0001) Seconds in section "MAIN LOOP [THE_MAIN_LOOP]": +(PID.TID 0000.0001) User time: 16.303545504808426 +(PID.TID 0000.0001) System time: 3.5989999771118164E-002 +(PID.TID 0000.0001) Wall clock time: 16.349802970886230 +(PID.TID 0000.0001) No. starts: 1 +(PID.TID 0000.0001) No. stops: 1 +(PID.TID 0000.0001) Seconds in section "MAIN_DO_LOOP [THE_MAIN_LOOP]": +(PID.TID 0000.0001) User time: 16.303387463092804 +(PID.TID 0000.0001) System time: 3.5987995564937592E-002 +(PID.TID 0000.0001) Wall clock time: 16.349636316299438 +(PID.TID 0000.0001) No. starts: 20 +(PID.TID 0000.0001) No. stops: 20 +(PID.TID 0000.0001) Seconds in section "FORWARD_STEP [MAIN_DO_LOOP]": +(PID.TID 0000.0001) User time: 16.303076371550560 +(PID.TID 0000.0001) System time: 3.5966999828815460E-002 +(PID.TID 0000.0001) Wall clock time: 16.349308013916016 +(PID.TID 0000.0001) No. starts: 20 +(PID.TID 0000.0001) No. stops: 20 +(PID.TID 0000.0001) Seconds in section "LOAD_FIELDS_DRIVER [FORWARD_STEP]": +(PID.TID 0000.0001) User time: 4.4952332973480225E-004 +(PID.TID 0000.0001) System time: 3.2998621463775635E-005 +(PID.TID 0000.0001) Wall clock time: 4.8160552978515625E-004 +(PID.TID 0000.0001) No. starts: 20 +(PID.TID 0000.0001) No. stops: 20 +(PID.TID 0000.0001) Seconds in section "EXTERNAL_FLDS_LOAD [LOAD_FLDS_DRIVER]": +(PID.TID 0000.0001) User time: 1.6018748283386230E-004 +(PID.TID 0000.0001) System time: 1.1004507541656494E-005 +(PID.TID 0000.0001) Wall clock time: 1.7166137695312500E-004 +(PID.TID 0000.0001) No. starts: 20 +(PID.TID 0000.0001) No. stops: 20 +(PID.TID 0000.0001) Seconds in section "DO_ATMOSPHERIC_PHYS [FORWARD_STEP]": +(PID.TID 0000.0001) User time: 1.5148520469665527E-004 +(PID.TID 0000.0001) System time: 1.2010335922241211E-005 +(PID.TID 0000.0001) Wall clock time: 1.5997886657714844E-004 +(PID.TID 0000.0001) No. starts: 20 +(PID.TID 0000.0001) No. stops: 20 +(PID.TID 0000.0001) Seconds in section "DO_OCEANIC_PHYS [FORWARD_STEP]": +(PID.TID 0000.0001) User time: 9.1441005468368530E-002 +(PID.TID 0000.0001) System time: 4.5710131525993347E-003 +(PID.TID 0000.0001) Wall clock time: 9.6049785614013672E-002 +(PID.TID 0000.0001) No. starts: 20 +(PID.TID 0000.0001) No. stops: 20 +(PID.TID 0000.0001) Seconds in section "DYNAMICS [FORWARD_STEP]": +(PID.TID 0000.0001) User time: 5.5037717223167419 +(PID.TID 0000.0001) System time: 7.9669952392578125E-003 +(PID.TID 0000.0001) Wall clock time: 5.5176239013671875 +(PID.TID 0000.0001) No. starts: 20 +(PID.TID 0000.0001) No. stops: 20 +(PID.TID 0000.0001) Seconds in section "CALC_GW [DYNAMICS]": +(PID.TID 0000.0001) User time: 1.3306243717670441 +(PID.TID 0000.0001) System time: 4.0150061249732971E-003 +(PID.TID 0000.0001) Wall clock time: 1.3349213600158691 +(PID.TID 0000.0001) No. starts: 80 +(PID.TID 0000.0001) No. stops: 80 +(PID.TID 0000.0001) Seconds in section "SOLVE_FOR_PRESSURE [FORWARD_STEP]": +(PID.TID 0000.0001) User time: 5.4056172370910645 +(PID.TID 0000.0001) System time: 0.0000000000000000 +(PID.TID 0000.0001) Wall clock time: 5.4084708690643311 +(PID.TID 0000.0001) No. starts: 20 +(PID.TID 0000.0001) No. stops: 20 +(PID.TID 0000.0001) Seconds in section "CG3D [SOLVE_FOR_PRESSURE]": +(PID.TID 0000.0001) User time: 4.7270575761795044 +(PID.TID 0000.0001) System time: 0.0000000000000000 +(PID.TID 0000.0001) Wall clock time: 4.7297437191009521 +(PID.TID 0000.0001) No. starts: 20 +(PID.TID 0000.0001) No. stops: 20 +(PID.TID 0000.0001) Seconds in section "MOM_CORRECTION_STEP [FORWARD_STEP]": +(PID.TID 0000.0001) User time: 0.28727620840072632 +(PID.TID 0000.0001) System time: 0.0000000000000000 +(PID.TID 0000.0001) Wall clock time: 0.28747248649597168 +(PID.TID 0000.0001) No. starts: 20 +(PID.TID 0000.0001) No. stops: 20 +(PID.TID 0000.0001) Seconds in section "INTEGR_CONTINUITY [FORWARD_STEP]": +(PID.TID 0000.0001) User time: 8.9313507080078125E-002 +(PID.TID 0000.0001) System time: 0.0000000000000000 +(PID.TID 0000.0001) Wall clock time: 8.9341878890991211E-002 +(PID.TID 0000.0001) No. starts: 20 +(PID.TID 0000.0001) No. stops: 20 +(PID.TID 0000.0001) Seconds in section "BLOCKING_EXCHANGES [FORWARD_STEP]": +(PID.TID 0000.0001) User time: 0.47567224502563477 +(PID.TID 0000.0001) System time: 9.0003013610839844E-006 +(PID.TID 0000.0001) Wall clock time: 0.47587513923645020 +(PID.TID 0000.0001) No. starts: 40 +(PID.TID 0000.0001) No. stops: 40 +(PID.TID 0000.0001) Seconds in section "THERMODYNAMICS [FORWARD_STEP]": +(PID.TID 0000.0001) User time: 3.9324904680252075 +(PID.TID 0000.0001) System time: 7.5449943542480469E-003 +(PID.TID 0000.0001) Wall clock time: 3.9412870407104492 +(PID.TID 0000.0001) No. starts: 20 +(PID.TID 0000.0001) No. stops: 20 +(PID.TID 0000.0001) Seconds in section "TRC_CORRECTION_STEP [FORWARD_STEP]": +(PID.TID 0000.0001) User time: 1.6653537750244141E-004 +(PID.TID 0000.0001) System time: 9.9837779998779297E-007 +(PID.TID 0000.0001) Wall clock time: 1.6927719116210938E-004 +(PID.TID 0000.0001) No. starts: 20 +(PID.TID 0000.0001) No. stops: 20 +(PID.TID 0000.0001) Seconds in section "MONITOR [FORWARD_STEP]": +(PID.TID 0000.0001) User time: 0.50089299678802490 +(PID.TID 0000.0001) System time: 3.8069933652877808E-003 +(PID.TID 0000.0001) Wall clock time: 0.50480413436889648 +(PID.TID 0000.0001) No. starts: 20 +(PID.TID 0000.0001) No. stops: 20 +(PID.TID 0000.0001) Seconds in section "DO_THE_MODEL_IO [FORWARD_STEP]": +(PID.TID 0000.0001) User time: 5.6327581405639648E-003 +(PID.TID 0000.0001) System time: 3.9890110492706299E-003 +(PID.TID 0000.0001) Wall clock time: 9.6290111541748047E-003 +(PID.TID 0000.0001) No. starts: 20 +(PID.TID 0000.0001) No. stops: 20 +(PID.TID 0000.0001) Seconds in section "DO_WRITE_PICKUP [FORWARD_STEP]": +(PID.TID 0000.0001) User time: 7.4489116668701172E-003 +(PID.TID 0000.0001) System time: 7.9939961433410645E-003 +(PID.TID 0000.0001) Wall clock time: 1.5447139739990234E-002 +(PID.TID 0000.0001) No. starts: 20 +(PID.TID 0000.0001) No. stops: 20 +(PID.TID 0000.0001) // ====================================================== +(PID.TID 0000.0001) // Tile <-> Tile communication statistics +(PID.TID 0000.0001) // ====================================================== +(PID.TID 0000.0001) // o Tile number: 000001 +(PID.TID 0000.0001) // No. X exchanges = 0 +(PID.TID 0000.0001) // Max. X spins = 0 +(PID.TID 0000.0001) // Min. X spins = 1000000000 +(PID.TID 0000.0001) // Total. X spins = 0 +(PID.TID 0000.0001) // Avg. X spins = 0.00E+00 +(PID.TID 0000.0001) // No. Y exchanges = 0 +(PID.TID 0000.0001) // Max. Y spins = 0 +(PID.TID 0000.0001) // Min. Y spins = 1000000000 +(PID.TID 0000.0001) // Total. Y spins = 0 +(PID.TID 0000.0001) // Avg. Y spins = 0.00E+00 +(PID.TID 0000.0001) // o Tile number: 000002 +(PID.TID 0000.0001) // No. X exchanges = 0 +(PID.TID 0000.0001) // Max. X spins = 0 +(PID.TID 0000.0001) // Min. X spins = 1000000000 +(PID.TID 0000.0001) // Total. X spins = 0 +(PID.TID 0000.0001) // Avg. X spins = 0.00E+00 +(PID.TID 0000.0001) // No. Y exchanges = 0 +(PID.TID 0000.0001) // Max. Y spins = 0 +(PID.TID 0000.0001) // Min. Y spins = 1000000000 +(PID.TID 0000.0001) // Total. Y spins = 0 +(PID.TID 0000.0001) // Avg. Y spins = 0.00E+00 +(PID.TID 0000.0001) // o Tile number: 000003 +(PID.TID 0000.0001) // No. X exchanges = 0 +(PID.TID 0000.0001) // Max. X spins = 0 +(PID.TID 0000.0001) // Min. X spins = 1000000000 +(PID.TID 0000.0001) // Total. X spins = 0 +(PID.TID 0000.0001) // Avg. X spins = 0.00E+00 +(PID.TID 0000.0001) // No. Y exchanges = 0 +(PID.TID 0000.0001) // Max. Y spins = 0 +(PID.TID 0000.0001) // Min. Y spins = 1000000000 +(PID.TID 0000.0001) // Total. Y spins = 0 +(PID.TID 0000.0001) // Avg. Y spins = 0.00E+00 +(PID.TID 0000.0001) // o Tile number: 000004 +(PID.TID 0000.0001) // No. X exchanges = 0 +(PID.TID 0000.0001) // Max. X spins = 0 +(PID.TID 0000.0001) // Min. X spins = 1000000000 +(PID.TID 0000.0001) // Total. X spins = 0 +(PID.TID 0000.0001) // Avg. X spins = 0.00E+00 +(PID.TID 0000.0001) // No. Y exchanges = 0 +(PID.TID 0000.0001) // Max. Y spins = 0 +(PID.TID 0000.0001) // Min. Y spins = 1000000000 +(PID.TID 0000.0001) // Total. Y spins = 0 +(PID.TID 0000.0001) // Avg. Y spins = 0.00E+00 +(PID.TID 0000.0001) // o Thread number: 000001 +(PID.TID 0000.0001) // No. barriers = 32076 +(PID.TID 0000.0001) // Max. barrier spins = 1 +(PID.TID 0000.0001) // Min. barrier spins = 1 +(PID.TID 0000.0001) // Total barrier spins = 32076 +(PID.TID 0000.0001) // Avg. barrier spins = 1.00E+00 +PROGRAM MAIN: Execution ended Normally