Skip to content

Commit

Permalink
Initialize revp stresses to previous time step (#331)
Browse files Browse the repository at this point in the history
* Initialize revp stresses to previous time step

* Add machine files for brooks

* Modify the documentation about stress initialization in revised evp
  • Loading branch information
abouchat authored and apcraig committed Aug 14, 2019
1 parent fd45f65 commit 9c5e907
Show file tree
Hide file tree
Showing 6 changed files with 127 additions and 17 deletions.
17 changes: 2 additions & 15 deletions cicecore/cicedynB/dynamics/ice_dyn_shared.F90
Original file line number Diff line number Diff line change
Expand Up @@ -503,7 +503,7 @@ subroutine dyn_prep2 (nx_block, ny_block, &
taubx (i,j) = c0
tauby (i,j) = c0

if (revp==1) then ! revised evp
if (icetmask(i,j)==0) then
stressp_1 (i,j) = c0
stressp_2 (i,j) = c0
stressp_3 (i,j) = c0
Expand All @@ -516,20 +516,7 @@ subroutine dyn_prep2 (nx_block, ny_block, &
stress12_2(i,j) = c0
stress12_3(i,j) = c0
stress12_4(i,j) = c0
else if (icetmask(i,j)==0) then ! classic evp
stressp_1 (i,j) = c0
stressp_2 (i,j) = c0
stressp_3 (i,j) = c0
stressp_4 (i,j) = c0
stressm_1 (i,j) = c0
stressm_2 (i,j) = c0
stressm_3 (i,j) = c0
stressm_4 (i,j) = c0
stress12_1(i,j) = c0
stress12_2(i,j) = c0
stress12_3(i,j) = c0
stress12_4(i,j) = c0
endif ! revp
endif
enddo ! i
enddo ! j

Expand Down
8 changes: 8 additions & 0 deletions configuration/scripts/cice.batch.csh
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,14 @@ cat >> ${jobfile} << EOFB
#SBATCH --qos=standby
EOFB

else if (${ICE_MACHINE} =~ brooks*) then
cat >> ${jobfile} << EOFB
#PBS -N ${ICE_CASENAME}
#PBS -j oe
#PBS -l select=${nnodes}:ncpus=${corespernode}:mpiprocs=${taskpernodelimit}:ompthreads=${nthrds}
#PBS -l walltime=${batchtime}
EOFB

else if (${ICE_MACHINE} =~ theia*) then
cat >> ${jobfile} << EOFB
#SBATCH -J ${ICE_CASENAME}
Expand Down
12 changes: 12 additions & 0 deletions configuration/scripts/cice.launch.csh
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,18 @@ mpirun -np ${ntasks} ./cice >&! \$ICE_RUNLOG_FILE
EOFR
endif

#=======
else if (${ICE_MACHINE} =~ brooks*) then
if (${ICE_COMMDIR} =~ serial*) then
cat >> ${jobfile} << EOFR
./cice >&! \$ICE_RUNLOG_FILE
EOFR
else
cat >> ${jobfile} << EOFR
aprun -n ${ntasks} -N ${taskpernodelimit} -d ${nthrds} ./cice >&! \$ICE_RUNLOG_FILE
EOFR
endif

#=======
else if (${ICE_MACHINE} =~ theia*) then
cat >> ${jobfile} << EOFR
Expand Down
78 changes: 78 additions & 0 deletions configuration/scripts/machines/Macros.brooks_intel
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
#==============================================================================
# Makefile macros for ECCC brooks
#==============================================================================
# For use with intel compiler
#==============================================================================

CPP := fpp
CPPDEFS := -DFORTRANUNDERSCORE ${ICE_CPPDEFS}
CFLAGS := -c -O2 -fp-model precise
#-xHost

FIXEDFLAGS := -132
FREEFLAGS := -FR
FFLAGS := -fp-model source -convert big_endian -assume byterecl -ftz -traceback -diag-disable 5140
#-xHost
FFLAGS_NOOPT:= -O0

ifeq ($(ICE_BLDDEBUG), true)
FFLAGS += -O0 -g -check -fpe0 -ftrapuv -fp-model except -check noarg_temp_created
# -heap-arrays 1024
else
FFLAGS += -O2
endif

SCC := cc
SFC := ftn
MPICC := cc
MPIFC := ftn

ifeq ($(ICE_COMMDIR), mpi)
FC := $(MPIFC)
CC := $(MPICC)
else
FC := $(SFC)
CC := $(SCC)
endif
LD:= $(FC)

#NETCDF_PATH := /fs/ssm/hpco/tmp/eccc/201402/04/intel-2016.1.150/ubuntu-14.04-amd64-64/

PIO_CONFIG_OPTS:= --enable-filesystem-hints=gpfs

#PNETCDF_PATH := $(PNETCDF)
#PNETCDF_PATH := /glade/u/apps/ch/opt/pio/2.2/mpt/2.15f/intel/17.0.1/lib

INCLDIR := $(INCLDIR)

LIB_NETCDF := $(NETCDF_PATH)/lib
LIB_PNETCDF := $(PNETCDF_PATH)/lib
LIB_MPI := $(IMPILIBDIR)

#SLIBS := -L$(LIB_NETCDF) -lnetcdff -lnetcdf -L$(LIB_PNETCDF) -lpnetcdf -lgptl
#SLIBS := -L$(LIB_NETCDF) -lnetcdff -lnetcdf

ifeq ($(ICE_IOTYPE), netcdf)
INCLDIR += $(shell nf-config --fflags)
SLIBS := $(shell nf-config --flibs)
endif


ifeq ($(ICE_THREADED), true)
LDFLAGS += -qopenmp
CFLAGS += -qopenmp
FFLAGS += -qopenmp
endif

### if using parallel I/O, load all 3 libraries. PIO must be first!
ifeq ($(IO_TYPE), pio)
PIO_PATH:=/glade/u/apps/ch/opt/pio/2.2/mpt/2.15f/intel/17.0.1/lib
INCLDIR += -I/glade/u/apps/ch/opt/pio/2.2/mpt/2.15f/intel/17.0.1/include
SLIBS := $(SLIBS) -L$(PIO_PATH) -lpiof

CPPDEFS := $(CPPDEFS) -Dncdf
endif

ifeq ($(IO_TYPE), netcdf)
CPPDEFS := $(CPPDEFS) -Dncdf
endif
25 changes: 25 additions & 0 deletions configuration/scripts/machines/env.brooks_intel
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/bin/csh -f

source /opt/modules/default/init/csh
module load PrgEnv-intel # Intel compiler
module load cray-mpich # MPI (Cray MPICH)
module load cray-netcdf # NetCDF
module load cray-hdf5 # HDF5

setenv ICE_MACHINE_ENVNAME brooks
setenv ICE_MACHINE_COMPILER intel
setenv ICE_MACHINE_MAKE make
setenv ICE_MACHINE_WKDIR ~/data/brooks/cice/runs
setenv ICE_MACHINE_INPUTDATA /home/ords/cmdd/cmde/phb001/
setenv ICE_MACHINE_BASELINE ~/data/brooks/cice/baselines
setenv ICE_MACHINE_SUBMIT "qsub"
setenv ICE_MACHINE_TPNODE 36
setenv ICE_MACHINE_ACCT P0000000
setenv ICE_MACHINE_QUEUE "development"
setenv ICE_MACHINE_BLDTHRDS 4
setenv ICE_MACHINE_QSTAT "qstat "

if (-e ~/.cice_proj) then
set account_name = `head -1 ~/.cice_proj`
setenv CICE_ACCT ${account_name}
endif
4 changes: 2 additions & 2 deletions doc/source/science_guide/sg_dynamics.rst
Original file line number Diff line number Diff line change
Expand Up @@ -557,7 +557,7 @@ Introducing another numerical parameter :math:`\alpha=2T \Delta t_e ^{-1}` :cite
where as opposed to the classic EVP, the second term in each equation is at iteration :math:`k` :cite:`Bouillon13`. Also, as opposed to the classic EVP,
:math:`\Delta t_e` times the number of subcycles (or iterations) does not need to be equal to the advective time step :math:`\Delta t`.
A last difference between the classic EVP and the revised approach is that the latter one initializes the stresses to 0 at the beginning of each time step,
while the classic EVP approach uses the previous time level value. The revised EVP is activated by setting the namelist parameter `revised\_evp` = true.
Finally, as with the classic EVP approach, the stresses are initialized using the previous time level values.
The revised EVP is activated by setting the namelist parameter `revised\_evp` = true.
In the code :math:`\alpha = arlx` and :math:`\beta = brlx`. The values of :math:`arlx` and :math:`brlx` can be set in the namelist.
It is recommended to use large values of these parameters and to set :math:`arlx=brlx` :cite:`Kimmritz15`.

0 comments on commit 9c5e907

Please sign in to comment.