FOAM Version History

From Foam
Jump to: navigation, search

History of FOAM 1.5 development

Notable events in FOAM 1.5

FOAM 1.5 was finalized on February 11, 2002.

Internally, the first version of FOAM1.5 was FOAM 1.5.8.

All version of FOAM 1.5 after version 1.5.8 produce bit-for-bit identical answers for a standard case

The simulations produced for a standard case, defined as:

  • fully coupled
  • restart run
  • default (modern) values of orbital forcing and gas constants.

are identical (bit-for-bit) for all FOAM versions after 1.5.8.

Beginning with 1.5.8, FOAM was developed and distributed with a multi-directory source code structure. The last single-directory version of FOAM is equivalent to 1.5.8.

Other events:

  • 1.5.20 - Data atmosphere capability added
  • 1.5.32 - NetCDF output from coupler and ocean.
  • 1.5.40 - NetCDF input by atmosphere.
  • 1.5.41 - NetCDF output from atmosphere.
  • 1.5.43 - Switch between initial/restart runs without recompiling.
  • 1.5.44 - Ability to do an initial run without a coupler restart file.

Answer changes for non-standard cases

  • 1.5.12 - Sea ice bug fixed for slab ocean experiments with fixed SST
  • 1.5.50 - Sea ice initial temperature bug (in initial run) fixed.

Changes to history output

  • 1.5.16 - Atmosphere history changed to add Z, VT, VZ, VQ, VVPUU, ALB, ALBCR, and PSL to default output. Remove CMFLQ, CMFSL, DQP, EFFCLD and TA01 from default output (still available as optional output).
  • 1.5.18 - Ocean history output changed so avheat and avsalt includes sea-ice formation. Also change coupler history output so only positive meltp is recorded.
  • 1.5.27 - Atmosphere output changed to add FSNTOA, FSNTOAC, LWCF, SWCF, FLUT, FLUTC, FSDS and FSDSC to default output. Also output RELHUM, PRECSL, and PRECSC by default. Change definition of FLNTC and FSNTC.
  • 1.5.30 - optionally output atmosphere heat/momentum budget variables UQ, UT, UU, UV, UW, VW, VV, WQ, WT, and WW

Guide to Table

This table describes in brief what is different between versions of FOAM 1.5.

The strings under "Version" are CVS tags. They correspond simply to version numbers: F1_5_6 = FOAM 1.5.6.

You can find your version by looking for the CVS tag on the bottom of the README.FOAM file.

Beginning with FOAM 1.5.15, the main components of FOAM which are available as separate modules were tagged separately.
The equivalent tags are indicated in the Description.

Beginning with FOAM 1.5.46, a branch was created for FOAM1.5 and the tags are slightly different: bpF15_F1_5_49 = FOAM 1.5.49

FOAM 1.5 version table

Version Date Modifications
F1_5_8 2/11/02 Final version of FOAM 1.5 physics/dynamics.
Build works on SGI, IBM, and SUN as well as linux.
Gives same answers as 1.5.8 in one-directory source.
F1_5_9 5/7/02 Fix slab model to not call restart_clean. Clean up Makefile.
F1_5_10 5/28/02 Add gas and solar constant namelist options to atmosphere.
F1_5_11 5/31/02 Changes to support standalone atmosphere.
Change communicator names in PCCM3
F1_5_12 7/8/02 compile simsice always.
Keep ice temps below freezing of SST_FROM_FILE is defined. Changes answers only when using the slab ocean and fixed SST options.
F1_5_13 7/16/02 Some more changes for standalone atmosphere. don't calculate pcoszrs pre-swapped. swap it in radxfr.

Don't swap boundary condition albedoes since albedo calculation is now outside radcsw (in standalone model.)
Remove some of the foam.c system calls: links for coupler, ocean restart and data dir. Instead, form path names using arguments from run_params.

F1_5_14 9/22/02 Add in hooks for lpj option. Protex header in top-level Makefile.
F1_5_15 12/30/02 (= PCCM3UW_1_0_1 and OM3ALONE_1_0_1)

add changes for IBM SP4 compile
add changes for Linux Intel Compiler compile
add T31 options to params.h p_spetab.com
sstan.F --force mask in to SST for T31 and T63
rfinti.F -- T31 uses rayfric too
binsum.F quad.F -- rearrange for power-of-two truncations
spetru.F -- isolate a section for power-of-two truncations.

F1_5_16 1/2/03 (= PCCM3UW_1_0_2 and OM3ALONE_1_0_1)

changes to change default history fields (physics.F and radctl.F and pagrid.com). Change default history fields (bldfld.F). Make PRIMARY and EXCLUDE namelist vars work (rdbcst.F).

F1_5_17 1/3/03 (= PCCM3UW_1_0_3 and OM3ALONE_1_0_1)

refactor rdbcst.F for readability.
Change pagrid.com to allow all possible fields to be output
Change bldfld.F to never check for ninavg.eq.Q. Fields can be output no matter what the history averaging period.
aphys.F, physics.F tphys.F vdiff.F, vdintr.F -- change to allow calculation and output of any field in bldfld.F

F1_5_18 1/9/03 (= PCCM3UW_1_0_3 and OM3ALONE_1_0_2)

add om3_exit and call it instead of exit. om3_exit calls MPI_Abort and exit.
Also change avheat and avsalt to include effects of sea ice formation.
Changes values in ocean history file but not the climate. Change meltp history in pcoupler to only count nonnegative meltp.

F1_5_19 2/14/03 (=PCCM3UW_1_0_4 and OM3ALONE_1_0_2)

Support for T31 in coup_restart. change nxpt in pmgrid,prgrid for T31.
Make abort.c call MPI_Abort
Add more info to bandij error message
Change Makefile to use FOAMDIRS in find command
slight edit of README

F1_5_20 2/21/03 (=PCCM3UW_1_0_5 and OM3ALONE_1_0_2)

Add data atmosphere to code and makefile add help target to makefile
Remove TSPDAY from params.h and move run_params handling from preset.F to data.F

F1_5_21 2/25/03 (=PCCM3UW_1_0_6 and OM3ALONE_1_0_2)

Use comorb in pcoszrs.F.
On Linux, use a barrier before call to restart_clean in wrapup.F
dataAtm: compile cvmgt for land model.
comment out TRANS call in mpi.F.

F1_5_22 2/28/03 (=PCCM3UW_1_0_7 and OM3ALONE_1_0_3) --RELEASE to UofC and UW

Add slab ocean code and target to Makefile. Reorganize Makefile and redo some comments
Make 32 colocated be the default.
Remove MODSOL from make options
Rename vars in comorb (pcoszrs.F and pccm3uw1.0.7 changes)
Add ability to set comorb in namelist.

F1_5_23 6/17/03 (=PCCM3UW_1_0_8 and OM3ALONE_1_0_3) first tag in new repo.

Changes to make T31 SLT scheme handle high cross-pole winds.
Make abort.c call MPI_Abort for cleaner aborts.
pcoupler.F now uses cstep to keep track of steps for history/restart.

F1_5_24 12/23/03 (=PCCM3UW_1_0_8 and OM3ALONE_1_0_3)

Tag change to makefile for Portland Group compiler. done on July 2

F1_5_25 2/13/04 (=PCCM3UW_1_0_9 and OM3ALONE_1_0_3)

Tag change to mpi datatypes in pstswm/mpi.F
bp_seaicedbg branch point off of F1_5_25.

F1_5_26 3/18/04 (=PCCM3UW_1_0_11 and OM3ALONE_1_0_3)

changes to read T42 input data.
also add more fixes for SLT scheme (T31 and T42)

F1_5_27 6/17/04 (=PCCM3UW_1_0_12 and OM3ALONE_1_0_3)

Add extra fields to atmosphere output suggested by CAM. Mostly radiation.
redefine FLNTC and FSNTC to match CAM definition,

F1_5_28 7/30/04 (=PCCM3UW_1_0_13 and OM3ALONE_1_0_3)

Turn on SLT fix for R15. Doesn't change answers
Can now do parameter experiments.

F1_5_29 4/5/05 (=PCCM3UW_1_0_14 and OM3ALONE_1_0_3)

Include fixes for Intel 8.x compiler.
Also include bug fix for atmosphere history output frequency from non-Jan1 restarts.

F1_5_30 8/4/05 (=PCCM3UW_1_0_15 and OM3ALONE_1_0_4)

Include code to output momentum/heat budget vars. Inactive by default.
Small change to Makefile for IBM. Remove an unused ifdef in om3coupalone.

F1_5_31 8/16/05 (=PCCM3UW_1_0_15 and OM3ALONE_1_1_0)

Modify Makefile so netcdf includes and libs can be added to build. Add ability to output ocean data in netcdf format.

F1_5_32 9/2/05 (=PCCM3UW_1_0_16 and OM3ALONE_1_1_1)

Add generic netcdf routines to foamshare and add a Makefile. Modify top level Makefile to build foamshare.
Add ability for coupler to output netcdf. Modify coupler Makefile for new pcoupncio.F code. Refactor inidat.F for later netcdf upgrade.

F1_5_40 10/7/05 (=PCCM3UW_1_1_0 and OM3ALONE_1_1_1)

Add some more generic netcdf routines to foamshare.
Add ability to read netcdf data in PCCM3.
See PCCM3UW_1_1_0 note below.

F1_5_41 1/27/06 (=PCCM3UW_1_1_1 and OM3ALONE_1_1_1)

Add ability to output atmosphere history in netcdf.
Use start,count in coupler netcdf write.

F1_5_42 2/2/06 (=PCCM3UW_1_1_2 and OM3ALONE_1_1_1)

remove system calls from foam.c and mpi_coupled.c links.
atmosphere restart concatenation are now done with C functions.
Open atmosphere history and pccm.out with correct names.
removes need for "mv" call.

F1_5_43 4/17/06 (=PCCM3UW_1_1_3 and OM3ALONE_1_1_2)

change foam.c to use inpakC to read run_params.
Use new initialflag and filterflag. (see changes below for atm and ocn)
Fix bug in compiling foamslab with NetCDF.

F1_5_44 5/17/06 (=PCCM3UW_1_1_4 and OM3ALONE_1_1_3)

Introduce new coup_init subroutine which will create an arbitrary initial condition for an initial run.
Break coup_restrt into 4 routines:
ccm2lnd_init, priver_init, grid_init and coup_restrt
coup_restrt now just reads restart
pccm3uw.F and dataAtm.F now call new routines.
Add new function fnc_read3DIVar to read integers.
Make fnc_read3DF and 4DF more generic by adding lat,lon as arugments.
Fix bug involving time variable in coupler history output.

F1_5_45 5/26/06 (=PCCM3UW_1_1_5 and OM3ALONE_1_1_3)

Ability to change dtime during a restart run.

bp_FOAM1_5 5/26/06 Branch formed at F1_5_45 for further FOAM1.5 development

branch tags called bF15_

bF15_F1_5_46 10/23/06 (=PCCM3UW_1_1_5 and OM3ALONE_1_1_3)

Fix a couple of build bugs for Intel and IBM xlf 10.0.
Intel one was for repeated definition of buff while xlf was from not including inpakC.h

bF15_F1_5_47 11/10/06 (=bPC11_1_6 and OM3ALONE_1_1_3)

Add lpj. Include makefile mods for LPJ.

bF15_F1_5_48 11/28/06 (=bPC11_1_6 and OM3ALONE_1_1_3)

Add extra lpj variables and fix a bug in legrd.

bF15_F1_5_49 12/21/06 (=bPC11_1_6 and OM3ALONE_1_1_3)

Fix a bug in dataatm regarding communicators.

bF15_F1_5_50 2/21/07 (=bPC11_1_7 and OM3ALONE_1_1_3)

Add g95 compile ability.
Reintroduce lpj option.
Fix bug in coup_init regarding sea ice initial temps.


om3coupalone module
Version Date Modifications
OM3ALONE_1 first working version of om3coupalone
OM3ALONE_2 released version
OM3ALONE_1_0_0 Includes removal of system calls. New COPYRIGHT.
OM3ALONE_1_0_1 add CVS keywords to readme.
OM3ALONE_1_0_2 add om3_exit and call it instead of exit. om3_exit calls MPI_Abort and exit. Also change avheat and avsalt to include effects of sea ice formation.
OM3ALONE_1_0_3 move om3cplslab function to separate file.
OM3ALONE_1_0_4 8/4/05 remove unused WIND_STRESS define
OM3ALONE_1_1_0 8/16/05 add NetCDF output as an option.
OM3ALONE_1_1_1 9/2/05 minor change to global attribute "platform".
OM3ALONE_1_1_2 4/17/06 Add inpakC to build. Use inpakC to processes run_params

Add new initialflag. Use it instead of CPP to switch between initial and restart run.

OM3ALONE_1_1_3 5/17/06 Fix bug involving time variable in netcdf output


pccm3uw alone
Version Date Modifications
PCCM3UW_1 first working version of standalone model
PCCM3UW_1_0_1 FOAM_LPJ changes, remove system link calls, Intel compiler change, remove albedo swapping.

T31, T63 changes

PCCM3UW_1_0_2 changes to change default history fields (physics.F and radctl.F and pagrid.com). Change default history fields (bldfld.F). Make PRIMARY and EXCLUDE namelist vars work (rdbcst.F).
PCCM3UW_1_0_3 refactor rdbcst.F for readability.

Change pagrid.com to allow all possible fields to be output Change bldfld.F to never check for ninavg.eq.Q. Fields can be output no matter what the history averaging period. aphys.F, physics.F tphys.F vdiff.F, vdintr.F -- change to allow calculation and output of any field in bldfld.F

PCCM3UW_1_0_4 support for T31: increase nxpt in pmgrid,prgrid for T31

Make abort.c call MPI_Abort Add more info to bandij error message Change README to reflect PCCM version.

PCCM3UW_1_0_5 remove TSPDAY from params.h

data.F now handles run_params stuff instead of preset.F Calculate ntspdy when needed in data.F, wrapup.F and pccm3uw.F

PCCM3UW_1_0_6 introduce comorb.com to define orbital params.

set them in preset.F, print out in data.F. Use in radinp.F. Also do safe restart writing when on LINUX, wrapup.F and wrtrs1.F

PCCM3UW_1_0_7 rename variables in comorb.com to match NCAR.

Add ability to set eccen, titld, anper, dayp via namelist. Change formatting on printout of orbital params from data.F (comorb.com, radinp.F, data.F preset.F data.F rdbcst.F)

PCCM3UW_1_0_8 6/17/2003 changes to make T31 more stable in SLT scheme.

changes to bandij.F, sltb1.F prgrid.com,pmgrid.com Let abort.c call MPI_Abort to really abort.

PCCM3UW_1_0_9 2/4/04 add ifc options to Linux Make.

Remove MPI_REAL4, MPI_REAL8 from pstswm.

PCCM3UW_1_0_10 3/18/04 fix a harmless bug, found by -g, in mfinti

involving an undefined variable.

PCCM3UW_1_0_11 additional fix for SLT scheme. Add more info to error message when it happens. Also turn on fix for all resolutions except R15.

changes to sphdep.F sltb1.F bandij.F prgrid.com pmgrid.com

PCCM3UW_1_0_12 add new diagnostic fields for radiation. Redefine FLNTC and FSNTC. Also add TMQ and turn on by default RELHUM and snow precip.
PCCM3UW_1_0_13 Turn on SLT fix for R15. Now done for all resolutions (except T170)
PCCM3UW_1_0_14 4/5/05 Add new hnstep variable to fix bug in history logic.

Some fixes for Intel 8.x compiler

PCCM3UW_1_0_15 add code to output momentum/heat budget variables WW, UU, UQ, etc.

change Makefile for IBM to use mpxlf/mpcc

PCCM3UW_1_0_16 reorganize inidat.F to locate reads in one block. Preliminary step for netcdf conversion. bfb. Also tag some new files in foamshare.
PCCM3UW_1_1_0 10/7/2005 add ability to read netcdf input files. Add netcdf option to build

Add pccm_comm to comparll.com. Add comments to new fnc functions.
Add new fnc_finddim, fnc_open and fnc_rdvar functions.
Add new variables to comozp and comsst for netcdf reading.
Add new oznintnc, oznininc, sstintnc, sstininc functions.
Add netcdf option to inidat.F inital.F intbnd.F tiread.F.
Add new pccmnc_ functions for reading and scattering netcdf data.
Edit parlyz.F to not conflict with new comparll.com.
Change sstan.F comparison between SST and ORO to check only if land has been masked out in SST.

PCCM3UW_1_1_1 1/27/06 add ability to output netcdf files.

Use new hbuf2 array to hold averages.
New functions pccmnc_inito, pccmnc_writeo
In foamshare, add fnc_4DFwrite, fnc_Def4DFVar

PCCM3UW_1_1_2 2/2/06 open history and pccmout files with the correct names.

avoid system calls.

PCCM3UW_1_1_3 4/17/06 Use inpack to set new flags for initial run and filtering phis.

Use new flags.
Modiy inpack to ipck_GToken returns a char pointer.
Bug fix for non-netcdf version.
Bug fix for correct history name for initial run.
pccmncio: get hyai, etc from common block.
bug fix: change counting of histories during initial run.

PCCM3UW_1_1_4 5/17/06 Call new more generic versions of fnc_readXDFVar
PCCM3UW_1_1_5 5/26/06 Add code to check if dtime has changed in a restart run and correctly change twodt and nstep
bp_PCCM3UW_1_1 Branch formed at PCCM3UW_1_1_5 for FOAM 1.5 development.

call branch tags bPC11_

bPC11_1_6 11/10/06 add bug fix for aux2-aux5 in netcdf output.
bPC11_1_7 2/18/07 add changes for g95 compile