Skip to content

Commit

Permalink
Merge pull request #5 from akturner/seaice/ridging_island_testcase
Browse files Browse the repository at this point in the history
Added ridging island test case
  • Loading branch information
akturner authored Jan 21, 2021
2 parents 6823610 + cc509ea commit b6e2fde
Show file tree
Hide file tree
Showing 20 changed files with 1,321 additions and 4 deletions.
5 changes: 5 additions & 0 deletions src/core_seaice/Registry.xml
Original file line number Diff line number Diff line change
Expand Up @@ -735,6 +735,10 @@
possible_values="true or false"
icepack_name="tr_rsnw"
/>
<nml_option name="config_use_special_boundaries_zero_tracers" type="logical" default_value="false" units="unitless"
description="Zero out tracers in given boundary cells."
possible_values="true or false"
/>
</nml_record>

<nml_record name="biogeochemistry" in_defaults="true">
Expand Down Expand Up @@ -4197,6 +4201,7 @@
<var name="vertexBoundarySourceLocal" type="integer" dimensions="nVertices"/>
<var name="solveVelocitySpecialBoundaries" type="integer" dimensions="nVertices"/>
<var name="solveStressSpecialBoundaries" type="integer" dimensions="nCells"/>
<var name="tracerBoundaryType" type="integer" dimensions="nCells"/>
</var_struct>

#include "analysis_members/Registry_seaice_analysis_members.xml"
Expand Down
2 changes: 1 addition & 1 deletion src/core_seaice/shared/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ mpas_seaice_unit_test.o: mpas_seaice_constants.o mpas_seaice_velocity_solver_uni

mpas_seaice_prescribed.o: mpas_seaice_constants.o mpas_seaice_column.o

mpas_seaice_time_integration.o: mpas_seaice_constants.o mpas_seaice_velocity_solver.o mpas_seaice_forcing.o mpas_seaice_unit_test.o mpas_seaice_advection.o mpas_seaice_diagnostics.o mpas_seaice_column.o mpas_seaice_prescribed.o
mpas_seaice_time_integration.o: mpas_seaice_constants.o mpas_seaice_velocity_solver.o mpas_seaice_forcing.o mpas_seaice_unit_test.o mpas_seaice_advection.o mpas_seaice_diagnostics.o mpas_seaice_column.o mpas_seaice_prescribed.o mpas_seaice_special_boundaries.o

mpas_seaice_initialize.o: mpas_seaice_constants.o mpas_seaice_mesh.o mpas_seaice_velocity_solver.o mpas_seaice_testing.o mpas_seaice_forcing.o mpas_seaice_advection.o mpas_seaice_column.o mpas_seaice_forcing.o mpas_seaice_mesh_pool.o mpas_seaice_special_boundaries.o

Expand Down
6 changes: 5 additions & 1 deletion src/core_seaice/shared/mpas_seaice_initialize.F
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,8 @@ subroutine seaice_init(&
use seaice_prescribed, only: &
seaice_init_prescribed_ice
use seaice_special_boundaries, only: &
seaice_init_special_boundaries
seaice_init_special_boundaries, &
seaice_set_special_boundaries_zero_tracers

type(domain_type), intent(inout) :: &
domain !< Input/Output:
Expand Down Expand Up @@ -144,6 +145,9 @@ subroutine seaice_init(&
call mpas_log_write(" Initialize coupler fluxes...")
call seaice_reset_coupler_fluxes(domain)

! special boundaries tracers
call seaice_set_special_boundaries_zero_tracers(domain)

end subroutine seaice_init!}}}

!|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Expand Down
106 changes: 104 additions & 2 deletions src/core_seaice/shared/mpas_seaice_special_boundaries.F
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,26 @@ module seaice_special_boundaries
public :: &
seaice_init_special_boundaries, &
seaice_set_special_boundaries_velocity, &
seaice_set_special_boundaries_velocity_masks
seaice_set_special_boundaries_velocity_masks, &
seaice_set_special_boundaries_zero_tracers

logical, pointer :: &
useSpecialBoundariesVelocity, &
useSpecialBoundariesVelocityMasks
useSpecialBoundariesVelocityMasks, &
useSpecialBoundariesZeroTracers

! vertex flags
integer, parameter :: &
VELOCITY_BOUNDARY_NONE = 0, &
VELOCITY_BOUNDARY_PERIODIC = 1, &
VELOCITY_BOUNDARY_REVERSE = 2, &
VELOCITY_BOUNDARY_ZERO = 3

! cell flags
integer, parameter :: &
TRACER_BOUNDARY_NONE = 0, &
TRACER_BOUNDARY_ZERO = 1

contains

!|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Expand All @@ -56,6 +64,8 @@ subroutine seaice_init_special_boundaries(domain)

call init_special_boundaries_velocity(domain)

call init_special_boundaries_tracers(domain)

end subroutine seaice_init_special_boundaries

!|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Expand Down Expand Up @@ -145,6 +155,27 @@ subroutine init_special_boundaries_velocity(domain)

end subroutine init_special_boundaries_velocity

!|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
!
! init_special_boundaries_tracers
!
!> \brief
!> \author Adrian K. Turner, LANL
!> \date 16th January 2021
!> \details
!>
!
!-----------------------------------------------------------------------

subroutine init_special_boundaries_tracers(domain)

type (domain_type), intent(inout) :: &
domain !< Input/Output:

call MPAS_pool_get_config(domain % configs, "config_use_special_boundaries_zero_tracers", useSpecialBoundariesZeroTracers)

end subroutine init_special_boundaries_tracers

!|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
!
! seaice_set_special_boundaries_velocity
Expand Down Expand Up @@ -307,6 +338,77 @@ subroutine seaice_set_special_boundaries_velocity_masks(domain)

end subroutine seaice_set_special_boundaries_velocity_masks

!|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
!
! seaice_set_special_boundaries_zero_tracers
!
!> \brief
!> \author Adrian K. Turner, LANL
!> \date 16th January 2021
!> \details
!>
!
!-----------------------------------------------------------------------

subroutine seaice_set_special_boundaries_zero_tracers(domain)

type (domain_type), intent(inout) :: &
domain !< Input/Output:

type(block_type), pointer :: &
blockPtr

type(mpas_pool_type), pointer :: &
specialBoundariesPool, &
tracersPool

integer, dimension(:), pointer :: &
tracerBoundaryType

real(kind=RKIND), dimension(:,:,:), pointer :: &
iceAreaCategory, &
iceVolumeCategory, &
snowVolumeCategory

integer, pointer :: &
nCells

integer :: &
iCell

if (useSpecialBoundariesZeroTracers) then

blockPtr => domain % blocklist
do while (associated(blockPtr))

call MPAS_pool_get_dimension(blockPtr % dimensions, "nCells", nCells)

call MPAS_pool_get_subpool(blockPtr % structs, "special_boundaries", specialBoundariesPool)
call MPAS_pool_get_subpool(blockPtr % structs, "tracers", tracersPool)

call MPAS_pool_get_array(specialBoundariesPool, "tracerBoundaryType", tracerBoundaryType)

call MPAS_pool_get_array(tracersPool, "iceAreaCategory", iceAreaCategory, 1)
call MPAS_pool_get_array(tracersPool, "iceVolumeCategory", iceVolumeCategory, 1)
call MPAS_pool_get_array(tracersPool, "snowVolumeCategory", snowVolumeCategory, 1)

do iCell = 1, nCells

if (tracerBoundaryType(iCell) == TRACER_BOUNDARY_ZERO) then
iceAreaCategory(:,:,iCell) = 0.0_RKIND
iceVolumeCategory(:,:,iCell) = 0.0_RKIND
snowVolumeCategory(:,:,iCell) = 0.0_RKIND
endif

enddo ! iCell

blockPtr => blockPtr % next
enddo

endif

end subroutine seaice_set_special_boundaries_zero_tracers

!-----------------------------------------------------------------------

end module seaice_special_boundaries
6 changes: 6 additions & 0 deletions src/core_seaice/shared/mpas_seaice_time_integration.F
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,9 @@ subroutine seaice_timestep(&
use seaice_prescribed, only: &
seaice_run_prescribed_ice

use seaice_special_boundaries, only: &
seaice_set_special_boundaries_zero_tracers

type(domain_type), intent(inout) :: &
domain !< Input/Output:

Expand Down Expand Up @@ -176,6 +179,9 @@ subroutine seaice_timestep(&
! check the physical state of the model
call seaice_check_state(domain)

! tracer special boundaries
call seaice_set_special_boundaries_zero_tracers(domain)

end subroutine seaice_timestep!}}}

!|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@
config_use_aerosols = false
config_use_effective_snow_density = false
config_use_snow_grain_radius = false
config_use_special_boundaries_zero_tracers = false
/
&biogeochemistry
config_use_brine = true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@
config_use_aerosols = false
config_use_effective_snow_density = false
config_use_snow_grain_radius = false
config_use_special_boundaries_zero_tracers = false
/
&biogeochemistry
config_use_brine = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@
config_use_aerosols = false
config_use_effective_snow_density = false
config_use_snow_grain_radius = false
config_use_special_boundaries_zero_tracers = false
/
&biogeochemistry
config_use_brine = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@
config_use_aerosols = false
config_use_effective_snow_density = true
config_use_snow_grain_radius = true
config_use_special_boundaries_zero_tracers = false
/
&biogeochemistry
config_use_brine = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@
config_use_aerosols = false
config_use_effective_snow_density = false
config_use_snow_grain_radius = false
config_use_special_boundaries_zero_tracers = false
/
&biogeochemistry
config_use_brine = true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@
config_use_aerosols = false
config_use_effective_snow_density = false
config_use_snow_grain_radius = false
config_use_special_boundaries_zero_tracers = false
/
&biogeochemistry
config_use_brine = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@
config_use_aerosols = false
config_use_effective_snow_density = false
config_use_snow_grain_radius = false
config_use_special_boundaries_zero_tracers = false
/
&biogeochemistry
config_use_brine = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@
config_use_aerosols = false
config_use_effective_snow_density = false
config_use_snow_grain_radius = false
config_use_special_boundaries_zero_tracers = false
/
&biogeochemistry
config_use_brine = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@
config_use_column_itd_thermodynamics = true
config_use_column_ridging = true
config_use_column_snow_tracers = false
config_use_special_boundaries_zero_tracers = false
/
&column_tracers
config_use_ice_age = true
Expand Down
Loading

0 comments on commit b6e2fde

Please sign in to comment.