Skip to content

Commit

Permalink
update to latest nuopc changes
Browse files Browse the repository at this point in the history
  • Loading branch information
Mariana Vertenstein committed Jul 4, 2020
2 parents 178693a + 41855fd commit aea1aa8
Show file tree
Hide file tree
Showing 11 changed files with 379 additions and 629 deletions.
2 changes: 0 additions & 2 deletions cicecore/cicedynB/analysis/ice_history_shared.F90
Original file line number Diff line number Diff line change
Expand Up @@ -672,9 +672,7 @@ subroutine construct_filename(ncfile,suffix,ns)
iday = mday
isec = sec - dt

#ifdef CESMCOUPLED
if (write_ic) isec = sec
#endif
! construct filename
if (write_ic) then
write(ncfile,'(a,a,i4.4,a,i2.2,a,i2.2,a,i5.5,a,a)') &
Expand Down
30 changes: 19 additions & 11 deletions cicecore/cicedynB/infrastructure/ice_read_write.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1106,14 +1106,15 @@ subroutine ice_read_nc_xy(fid, nrec, varname, work, diag, &
integer (kind=int_kind) :: &
varid , & ! variable id
status ! status output from netcdf routines
! status , & ! status output from netcdf routines
! ndim, nvar, & ! sizes of netcdf file
! id, & ! dimension index
! dimlen ! dimension size

real (kind=dbl_kind) :: &
amin, amax, asum ! min, max values and sum of input array

! character (char_len) :: &
! character (char_len) :: &
! dimname ! dimension name

real (kind=dbl_kind), dimension(:,:), allocatable :: &
Expand Down Expand Up @@ -1279,14 +1280,15 @@ subroutine ice_read_nc_xyz(fid, nrec, varname, work, diag, &
n, & ! ncat index
varid , & ! variable id
status ! status output from netcdf routines
! status , & ! status output from netcdf routines
! ndim, nvar, & ! sizes of netcdf file
! id, & ! dimension index
! dimlen ! size of dimension

real (kind=dbl_kind) :: &
amin, amax, asum ! min, max values and sum of input array

! character (char_len) :: &
! character (char_len) :: &
! dimname ! dimension name

real (kind=dbl_kind), dimension(:,:,:), allocatable :: &
Expand Down Expand Up @@ -1364,7 +1366,7 @@ subroutine ice_read_nc_xyz(fid, nrec, varname, work, diag, &

if (my_task==master_task .and. diag) then
! write(nu_diag,*) &
! 'ice_read_nc_xyz, fid= ',fid, ', nrec = ',nrec, &
! 'ice_read_nc_xyz, fid= ',fid, ', nrec = ',nrec, &
! ', varname = ',trim(varname)
! status = nf90_inquire(fid, nDimensions=ndim, nVariables=nvar)
! write(nu_diag,*) 'ndim= ',ndim,', nvar= ',nvar
Expand Down Expand Up @@ -1835,6 +1837,7 @@ subroutine ice_write_nc_xy(fid, nrec, varid, work, diag, &
! netCDF file diagnostics:
integer (kind=int_kind) :: &
status ! status output from netcdf routines
! status, & ! status output from netcdf routines
! ndim, nvar, & ! sizes of netcdf file
! id, & ! dimension index
! dimlen ! size of dimension
Expand All @@ -1844,7 +1847,8 @@ subroutine ice_write_nc_xy(fid, nrec, varid, work, diag, &

character (char_len) :: &
lvarname ! variable name
! dimname ! dimension name
! lvarname, & ! variable name
! dimname ! dimension name

real (kind=dbl_kind), dimension(:,:), allocatable :: &
work_g1
Expand Down Expand Up @@ -1955,16 +1959,18 @@ subroutine ice_write_nc_xyz(fid, nrec, varid, work, diag, &
integer (kind=int_kind) :: &
n, & ! ncat index
status ! status output from netcdf routines
! ndim, nvar, & ! sizes of netcdf file
! id, & ! dimension index
! dimlen ! size of dimension
! status, & ! status output from netcdf routines
! ndim, nvar, & ! sizes of netcdf file
! id, & ! dimension index
! dimlen ! size of dimension

real (kind=dbl_kind) :: &
amin, amax, asum ! min, max values and sum of input array

character (char_len) :: &
lvarname ! variable name
! dimname ! dimension name
! lvarname, & ! variable name
! dimname ! dimension name

real (kind=dbl_kind), dimension(:,:,:), allocatable :: &
work_g1
Expand Down Expand Up @@ -2081,16 +2087,17 @@ subroutine ice_read_global_nc (fid, nrec, varname, work_g, diag)
integer (kind=int_kind) :: &
varid, & ! netcdf id for field
status ! status output from netcdf routines
! status, & ! status output from netcdf routines
! ndim, nvar, & ! sizes of netcdf file
! id, & ! dimension index
! dimlen ! size of dimension

real (kind=dbl_kind) :: &
amin, amax, asum ! min, max values and sum of input array

! character (char_len) :: &
! character (char_len) :: &
! dimname ! dimension name
!

#ifdef ORCA_GRID
real (kind=dbl_kind), dimension(:,:), allocatable :: &
work_g3
Expand Down Expand Up @@ -2232,14 +2239,15 @@ subroutine ice_read_nc_uv(fid, nrec, nzlev, varname, work, diag, &
integer (kind=int_kind) :: &
varid , & ! variable id
status ! status output from netcdf routines
! status, & ! status output from netcdf routines
! ndim, nvar, & ! sizes of netcdf file
! id, & ! dimension index
! dimlen ! size of dimension

real (kind=dbl_kind) :: &
amin, amax, asum ! min, max values and sum of input array

! character (char_len) :: &
! character (char_len) :: &
! dimname ! dimension name

real (kind=dbl_kind), dimension(:,:), allocatable :: &
Expand Down
8 changes: 0 additions & 8 deletions cicecore/cicedynB/infrastructure/ice_restart_driver.F90
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,7 @@ subroutine dumpfile(filename_spec)
stressp_1, stressp_2, stressp_3, stressp_4, &
stressm_1, stressm_2, stressm_3, stressm_4, &
stress12_1, stress12_2, stress12_3, stress12_4
#ifdef CESMCOUPLED
use ice_flux, only: coszen
#endif
use ice_state, only: aicen, vicen, vsnon, trcrn, uvel, vvel

character(len=char_len_long), intent(in), optional :: filename_spec
Expand Down Expand Up @@ -132,9 +130,7 @@ subroutine dumpfile(filename_spec)
!-----------------------------------------------------------------
! radiation fields
!-----------------------------------------------------------------
#ifdef CESMCOUPLED
call write_restart_field(nu_dump,0,coszen,'ruf8','coszen',1,diag)
#endif
call write_restart_field(nu_dump,0,scale_factor,'ruf8','scale_factor',1,diag)

call write_restart_field(nu_dump,0,swvdr,'ruf8','swvdr',1,diag)
Expand Down Expand Up @@ -209,9 +205,7 @@ subroutine restartfile (ice_ic)
stressp_1, stressp_2, stressp_3, stressp_4, &
stressm_1, stressm_2, stressm_3, stressm_4, &
stress12_1, stress12_2, stress12_3, stress12_4
#ifdef CESMCOUPLED
use ice_flux, only: coszen
#endif
use ice_grid, only: tmask, grid_type
use ice_state, only: trcr_depend, aice, vice, vsno, trcr, &
aice0, aicen, vicen, vsnon, trcrn, aice_init, uvel, vvel, &
Expand Down Expand Up @@ -310,11 +304,9 @@ subroutine restartfile (ice_ic)
if (my_task == master_task) &
write(nu_diag,*) 'radiation fields'

#ifdef CESMCOUPLED
call read_restart_field(nu_restart,0,coszen,'ruf8', &
! 'coszen',1,diag, field_loc_center, field_type_scalar)
'coszen',1,diag)
#endif
call read_restart_field(nu_restart,0,scale_factor,'ruf8', &
'scale_factor',1,diag, field_loc_center, field_type_scalar)
call read_restart_field(nu_restart,0,swvdr,'ruf8', &
Expand Down
3 changes: 0 additions & 3 deletions cicecore/cicedynB/infrastructure/io/io_netcdf/ice_restart.F90
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@ subroutine init_restart_read(ice_ic)
endif
endif ! use namelist values if use_restart_time = F

write(nu_diag,*) 'Restart read at istep=',istep0,time,time_forc
endif

call broadcast_scalar(istep0,master_task)
Expand Down Expand Up @@ -228,9 +227,7 @@ subroutine init_restart_write(filename_spec)
call define_rest_field(ncid,'uvel',dims)
call define_rest_field(ncid,'vvel',dims)

#ifdef CESMCOUPLED
call define_rest_field(ncid,'coszen',dims)
#endif
call define_rest_field(ncid,'scale_factor',dims)
call define_rest_field(ncid,'swvdr',dims)
call define_rest_field(ncid,'swvdf',dims)
Expand Down
81 changes: 18 additions & 63 deletions cicecore/drivers/nuopc/cmeps/CICE_InitMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -25,40 +25,21 @@ module CICE_InitMod

implicit none
private
public :: CICE_Initialize, cice_init
public :: cice_init

!=======================================================================

contains

!=======================================================================

! Initialize the basic state, grid and all necessary parameters for
! running the CICE model. Return the initial state in routine
! export state.
! Note: This initialization driver is designed for standalone and
! CESM-coupled applications. For other
! applications (e.g., standalone CAM), this driver would be
! replaced by a different driver that calls subroutine cice_init,
! where most of the work is done.

subroutine CICE_Initialize

character(len=*), parameter :: subname='(CICE_Initialize)'
!--------------------------------------------------------------------
! model initialization
!--------------------------------------------------------------------

call cice_init

end subroutine CICE_Initialize

!=======================================================================
!
! Initialize CICE model.

subroutine cice_init

! Initialize the basic state, grid and all necessary parameters for
! running the CICE model.

use ice_arrays_column, only: hin_max, c_hi_range, alloc_arrays_column
use ice_arrays_column, only: floe_rad_l, floe_rad_c, &
floe_binwidth, c_fsd_range
Expand All @@ -74,8 +55,7 @@ subroutine cice_init
use ice_dyn_shared, only: kdyn, init_evp, alloc_dyn_shared
use ice_flux, only: init_coupler_flux, init_history_therm, &
init_history_dyn, init_flux_atm, init_flux_ocn, alloc_flux
use ice_forcing, only: init_forcing_ocn, init_forcing_atmo, &
get_forcing_atmo, get_forcing_ocn, get_wave_spec
use ice_forcing, only: init_forcing_ocn
use ice_forcing_bgc, only: get_forcing_bgc, get_atm_bgc, &
faero_default, faero_optics, alloc_forcing_bgc, fiso_default
use ice_grid, only: init_grid1, init_grid2, alloc_grid
Expand All @@ -87,9 +67,6 @@ subroutine cice_init
use ice_restoring, only: ice_HaloRestore_init
use ice_timers, only: timer_total, init_ice_timers, ice_timer_start
use ice_transport_driver, only: init_transport
#ifdef popcice
use drv_forcing, only: sst_sss
#endif

logical(kind=log_kind) :: tr_aero, tr_zaero, skl_bgc, z_tracers, &
tr_iso, tr_fsd, wave_spec
Expand Down Expand Up @@ -129,10 +106,6 @@ subroutine cice_init
endif

call init_coupler_flux ! initialize fluxes exchanged with coupler

#ifdef popcice
call sst_sss ! POP data for CICE initialization
#endif
call init_thermo_vertical ! initialize vertical thermodynamics

call icepack_init_itd(ncat=ncat, hin_max=hin_max) ! ice thickness distribution
Expand All @@ -158,7 +131,9 @@ subroutine cice_init

call calendar(time) ! determine the initial date

! TODO: - why is this being called when you are using CMEPS?
call init_forcing_ocn(dt) ! initialize sss and sst from data

call init_state ! initialize the ice state
call init_transport ! initialize horizontal transport
call ice_HaloRestore_init ! restored boundary conditions
Expand All @@ -182,51 +157,31 @@ subroutine cice_init
if (icepack_warnings_aborted()) call abort_ice(trim(subname), &
file=__FILE__,line= __LINE__)

if (tr_aero .or. tr_zaero) call faero_optics !initialize aerosol optical
!property tables
if (tr_aero .or. tr_zaero) then
call faero_optics !initialize aerosol optical property tables
end if

! Initialize shortwave components using swdn from previous timestep
! if restarting. These components will be scaled to current forcing
! in prep_radiation.
if (trim(runtype) == 'continue' .or. restart) &
call init_shortwave ! initialize radiative transfer

! istep = istep + 1 ! update time step counters
! istep1 = istep1 + 1
! time = time + dt ! determine the time and date
! call calendar(time) ! at the end of the first timestep

!--------------------------------------------------------------------
! coupler communication or forcing data initialization
!--------------------------------------------------------------------

#ifndef coupled
call init_forcing_atmo ! initialize atmospheric forcing (standalone)
if (trim(runtype) == 'continue' .or. restart) then
call init_shortwave ! initialize radiative transfer
end if

#ifndef CESMCOUPLED
if (tr_fsd .and. wave_spec) call get_wave_spec ! wave spectrum in ice
call get_forcing_atmo ! atmospheric forcing from data
call get_forcing_ocn(dt) ! ocean forcing from data
!--------------------------------------------------------------------
! coupler communication or forcing data initialization
!--------------------------------------------------------------------

! isotopes
if (tr_iso) call fiso_default ! default values
! aerosols
! if (tr_aero) call faero_data ! data file
! if (tr_zaero) call fzaero_data ! data file (gx1)
if (tr_aero .or. tr_zaero) call faero_default ! default values
if (skl_bgc .or. z_tracers) call get_forcing_bgc ! biogeochemistry
#endif
#endif
if (z_tracers) call get_atm_bgc ! biogeochemistry

if (runtype == 'initial' .and. .not. restart) &
if (runtype == 'initial' .and. .not. restart) then
call init_shortwave ! initialize radiative transfer using current swdn
end if

call init_flux_atm ! initialize atmosphere fluxes sent to coupler
call init_flux_ocn ! initialize ocean fluxes sent to coupler

! if (write_ic) call accum_hist(dt) ! write initial conditions

end subroutine cice_init

!=======================================================================
Expand Down
Loading

0 comments on commit aea1aa8

Please sign in to comment.