Skip to content

Commit

Permalink
Merge pull request #140 from duvivier/gh-pages
Browse files Browse the repository at this point in the history
Updated HTML for PR #139
  • Loading branch information
duvivier authored Feb 8, 2018
2 parents 64391ab + f9efdb8 commit e29f6cf
Show file tree
Hide file tree
Showing 48 changed files with 2,131 additions and 2,450 deletions.
20 changes: 9 additions & 11 deletions _sources/developer_guide/dg_about.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,12 @@ are primarily from **icedrv\_step\_mod.F90** but there are others (search the dr
for ``intfc``).

Guiding principles for the creation of Icepack include the following:
CHECK THAT THESE ARE TRUE

- The column physics modules shall be independent of all sea ice model infrastructural
elements that may vary from model to model. Examples include input/output, timers,
references to CPUs or computational tasks, initialization other than that necessary for
strictly physical reasons, and anything related to a horizontal grid.
- The column physics modules shall not call or reference any routines or code that
reside outside of the **columnphysics/** directory.
- Any capabilities required by a host sea ice model (e.g. calendar variables, tracer
flags, diagnostics) shall be implemented in the driver and passed into or out of the
column physics modules via array arguments.
- The column physics modules shall be independent of all sea ice model infrastructural
elements that may vary from model to model. Examples include input/output, timers,
references to CPUs or computational tasks, initialization other than that necessary for
strictly physical reasons, and anything related to a horizontal grid.
- The column physics modules shall not call or reference any routines or code that
reside outside of the **columnphysics/** directory.
- Any capabilities required by a host sea ice model (e.g. calendar variables, tracer
flags, diagnostics) shall be implemented in the driver and passed into or out of the
column physics modules via array arguments.
40 changes: 13 additions & 27 deletions _sources/developer_guide/dg_col_phys.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ The column physics source code contains the following files
| **icepack_algae.F90** biogeochemistry
| **icepack_atmo.F90** stability-based parameterization for calculation of turbulent ice–atmosphere fluxes
| **icepack_brine.F90** evolves the brine height tracer
| **icepack_constants.F90** physical and numerical constants required for column package
| **icepack_firstyear.F90** handles most work associated with the first-year ice area tracer
| **icepack_flux.F90** fluxes needed/produced by the model
| **icepack_intfc.F90** interface routines for linking Icepack with a host sea ice model
Expand All @@ -29,7 +28,7 @@ The column physics source code contains the following files
| **icepack_mushy_physics.F90** physics routines for mushy thermodynamics
| **icepack_ocean.F90** mixed layer ocean model
| **icepack_orbital.F90** orbital parameters for Delta-Eddington shortwave parameterization
| **icepack_parameters.F90** basic model parameters
| **icepack_parameters.F90** basic model parameters including physical and numerical constants requried for column package
| **icepack_shortwave.F90** shortwave and albedo parameterizations
| **icepack_therm_0layer.F90** zero-layer thermodynamics of :cite:`Semtner76`
| **icepack_therm_bl99.F90** multilayer thermodynamics of :cite:`BL99`
Expand All @@ -56,7 +55,7 @@ that is running on multiple pes with a decomposed grid.

The column physics does not have a time manager. Calendaring is expected to be
dealt with by the host model. The column physics does not read any forcing data,
that is passed into the column physics thru interfaces. In fact,
that is passed into the column physics though interfaces. In fact,
there are no direct IO capabilities in the column physics. That is to say, the
column physics does not open files to read or write. The column physics is able to write
data via several different routines that specifically have a fortran unit number as an input
Expand All @@ -67,11 +66,11 @@ The warning package also provides access to an abort flag that the host model ca
query after each call to check for successful completion of the column physics package.

All column physics public interfaces and public data are defined in the **icepack_intfc.F90**
file. Internal column physics settings should all be accessible thru interfaces.
file. Internal column physics settings should all be accessible through interfaces.
The internal constants, parameters, and tracer settings have init (set), query (get), and
write interfaces that provides access to internal column physics settings. The host model
should not have to use "use" statements to access any of the column physics data outside
of what is provided thru the icepack_intfc module.
of what is provided through the icepack_intfc module.
The public column physics interfaces use optional arguments where it makes sense and
there is an ongoing effort to make more of the interfaces support keyword=value arguments
for clarity and backwards compatibility.
Expand All @@ -88,7 +87,7 @@ how to use them will be described.
Interfaces
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Column physics data and subroutines are made public thru the **icepack_intfc.F90**
Column physics data and subroutines are made public through the **icepack_intfc.F90**
file. That file contains the entire list of data and subroutines needed to
initialize, setup, and run the column physics package. That file points
to other modules within the column physics where the interfaces are located.
Expand All @@ -104,7 +103,7 @@ icepack_kinds module::
use icepack_kinds, only: icepack_dbl_kind => dbl_kind
use icepack_kinds, only: icepack_r16_kind => r16_kind

icepack_tracers defines a handful of parameters constants that provide information
icepack_tracers defines a handful of parameters that provide information
about maximum array sizes for static dimensioning::

use icepack_tracers, only: icepack_max_nbtrcr => max_nbtrcr
Expand All @@ -116,28 +115,16 @@ about maximum array sizes for static dimensioning::
use icepack_tracers, only: icepack_max_aero => max_aero
use icepack_tracers, only: icepack_nmodal1 => nmodal1
use icepack_tracers, only: icepack_nmodal2 => nmodal2
use icepack_constants, only: icepack_nspint => nspint
use icepack_parameters, only: icepack_nspint => nspint

icepack_constants provides a list of static parameter constants::

use icepack_constants, only: c0 => c0

icepack_constants provides init, query, write, and recompute methods to
define constant values. These constants have defaults that the caller
can query or reset::

use icepack_constants, only: icepack_init_constants
use icepack_constants, only: icepack_query_constants
use icepack_constants, only: icepack_write_constants
use icepack_constants, only: icepack_recompute_constants

icepack_parameters provides init, query, and write methods to
define model parameters. These parameters have defaults that the caller
can query or reset::
icepack_parameters provides init, query, write, and recompute methods to
define constant values and model parameters. These constants have defaults
that the caller can query or reset::

use icepack_parameters, only: icepack_init_parameters
use icepack_parameters, only: icepack_query_parameters
use icepack_parameters, only: icepack_write_parameters
use icepack_parameters, only: icepack_recompute_constants

icepack_tracers provides init, query, and write methods to
define various tracer sizes, flags, indices, and numbers. The
Expand Down Expand Up @@ -248,7 +235,6 @@ start driver

initialize driver and read in driver namelist

* call *icepack_init_constants*
* call *icepack_init_parameters*
* call *icepack_init_tracers_*
* call *icepack_init_trcr*
Expand Down Expand Up @@ -283,7 +269,7 @@ The Warning Package
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Icepack has no IO capabilities. It does not have direct knowledge of
any input or output files. However, it can write output thru specific
any input or output files. However, it can write output through specific
interfaces that pass in a fortran file unit number. There are several
methods in icepack that support writing data to a file this way including
the various *icepack_write_* interfaces.
Expand All @@ -306,4 +292,4 @@ Alternatively, *icepack_warnings_getall* provides the saved icepack messages to
the driver via an array of strings in the argument list. This allows the driver
to reformat that output as needed. *icepack_warnings_print*
writes out the messages but does not clear them, and *icepack_warnings_clear* zeros
out the icepack warning messages.
out the icepack warning messages.
4 changes: 2 additions & 2 deletions _sources/developer_guide/dg_driver.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ The icepack driver consists of the following files
| **icedrv_init.F90** general initialization routines
| **icedrv_init_column.F90** initialization routines specific to the column physics
| **icedrv_restart.F90** driver for reading/writing restart files
| **icedrv_restart_column.F90** (CHECK: RENAME bgc) restart routines specific to the column physics
| **icedrv_restart_column.F90** restart routines specific to the column physics
| **icedrv_restart_shared.F90** code shared by all restart options
| **icedrv_state.F90** essential arrays to describe the state of the ice
| **icedrv_step.F90** routines for time stepping the major code components
Expand All @@ -43,4 +43,4 @@ to run 4 different gridcells on one processor with the same forcing used for all
There is no MPI and no threading built into the icepack driver. There is limited IO capabilities,
no history files, and no netcdf restart files. The model generally runs very quickly.

There are a few different forcings available.
Forcing data and details on these data are available in :ref:`force`.
14 changes: 7 additions & 7 deletions _sources/developer_guide/dg_scripts.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ The directory structure under configure/scripts is as follows.
| **icepack_in** namelist input data
| **machines/** machine specific files to set env and Macros
| **makdep.c** determines module dependencies
| **options/** other namelist configurations available from the icepack.create.case command line
| **options/** other namelist configurations available from the icepack.setup command line
| **parse_namelist.sh** replaces namelist with command-line configuration
| **parse_namelist_from_settings.sh** replaces namelist with values from icepack.settings
| **parse_settings.sh** replaces settings with command-line configuration
Expand All @@ -38,11 +38,11 @@ Strategy
-----------

The icepack scripts are implemented such that everything is resolved after
**icepack.create.case** is called. This is done by both copying specific files
into the case directory and running scripts as part of the **icepack.create.case**
**icepack.setup** is called. This is done by both copying specific files
into the case directory and running scripts as part of the **icepack.setup**
command line to setup various files.

**icepack.create.case** drives the case setup. It is written in csh. All supporting
**icepack.setup** drives the case setup. It is written in csh. All supporting
scripts are relatively simple csh or sh scripts.

The file **icepack.settings** specifies a set of env defaults for the case. The file
Expand All @@ -54,16 +54,16 @@ Preset Case Options
---------------------


``icepack.create.case -s`` option allows the user to choose some predetermined icepack
``icepack.setup -s`` option allows the user to choose some predetermined icepack
settings and namelist. Those options are defined in **configurations/scripts/options/**
and the files are prefixed by either set_env, set_nml, or test_nml. When **icepack.create.case**
and the files are prefixed by either set_env, set_nml, or test_nml. When **icepack.setup**
is executed, the appropriate files are read from **configurations/scripts/options/**
and the **icepack.settings** and/or **icepack_in** files are updated in the case directory
based on the values in those files.

The filename suffix determines the name of the -s option. So, for instance,

``icepack.create.case -s diag1,debug,bgcISPOL``
``icepack.setup -s diag1,debug,bgcISPOL``

will search for option files with suffixes of diag1, debug, and bgcISPOL and then
apply those settings.
Expand Down
Loading

0 comments on commit e29f6cf

Please sign in to comment.