Skip to content

Commit 600549e

Browse files
committed
ADD: md.groundingline in class, no implementation for now
1 parent 51bfeeb commit 600549e

File tree

3 files changed

+43
-13
lines changed

3 files changed

+43
-13
lines changed

src/core/elements.jl

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -579,20 +579,34 @@ function InputUpdateFromVector(element::Tria, vector::Vector{Float64}, enum::Iss
579579
return nothing
580580
end #}}}
581581
function IsAllFloating(element::Tria) #{{{
582-
input = GetInput(element, MaskOceanLevelsetEnum)
583582

584-
# by default use none migration
585-
if GetInputMin(input) > 0.
586-
return false;
583+
input=GetInput(element, MaskIceLevelsetEnum)
584+
migration_style = FindParam(String, element, GroundinglineMigrationEnum)
585+
# get the Enum
586+
migration_style_enum = StringToEnum(migration_style)
587+
588+
if (migration_style_enum==SubelementMigrationEnum)
589+
if GetInputMax(input) <= 0.
590+
return true;
591+
else
592+
return false
593+
end
594+
elseif (migration_style_enum==ContactEnum)
595+
if GetInputMin(input) < 0.
596+
return true;
597+
else
598+
return false
599+
end
600+
elseif (migration_style_enum==NoneEnum || migration_style_enum==AggressiveMigrationEnum || migration_style_enum==SoftMigrationEnum || migration_style_enum==GroundingOnlyEnum)
601+
# by default use none migration
602+
if GetInputMin(input) > 0.
603+
return false;
604+
else
605+
return true
606+
end
587607
else
588-
return true
608+
error("migration_style not implemented yet")
589609
end
590-
# TODO: add subelement migration
591-
#if GetInputMax(input) <= 0.
592-
# return true;
593-
#else
594-
# return false
595-
#end
596610
end#}}}
597611
function IsIcefront(element::Tria) #{{{
598612

src/core/modules.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,9 @@ function CreateParameters(parameters::Parameters,md::model,solutionstring::Symbo
136136

137137
#Is moving front
138138
AddParam(parameters,md.transient.ismovingfront,TransientIsmovingfrontEnum)
139+
#Is grounding line
140+
AddParam(parameters,md.transient.isgroundingline,TransientIsgroundinglineEnum)
141+
AddParam(parameters,md.groundingline.migration,GroundinglineMigrationEnum)
139142

140143
return nothing
141144
end# }}}

src/usr/classes.jl

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,17 @@ function Base.show(io::IO, this::Frontalforcings)# {{{
321321
IssmStructDisp(io, this)
322322
end# }}}
323323
# }}}
324+
#Groundingline{{{
325+
mutable struct Groundingline
326+
migration::String
327+
end
328+
function Groundingline() #{{{
329+
return Groundingline("None")
330+
end# }}}
331+
function Base.show(io::IO, this::Groundingline)# {{{
332+
IssmStructDisp(io, this)
333+
end# }}}
334+
# }}}
324335

325336
#Model structure
326337
mutable struct model{Mesh<:AbstractMesh, Friction<:AbstractFriction, Basalforcings<:AbstractBasalforcings, Calving<:AbstractCalving}
@@ -342,20 +353,21 @@ mutable struct model{Mesh<:AbstractMesh, Friction<:AbstractFriction, Basalforcin
342353
calving::Calving
343354
levelset::Levelset
344355
frontalforcings::Frontalforcings
356+
groundingline::Groundingline
345357
end
346358
function model() #{{{
347359
return model( Mesh2dTriangle(), Geometry(), Mask(), Materials(),
348360
Initialization(),Stressbalance(), Constants(), Dict(),
349361
BuddFriction(), DefaultBasalforcings(), SMBforcings(), DefaultTimestepping(),
350362
Masstransport(), Transient(), Inversion(), DefaultCalving(),
351-
Levelset(), Frontalforcings())
363+
Levelset(), Frontalforcings(), Groundingline())
352364
end#}}}
353365
function model(md::model; mesh::AbstractMesh=md.mesh, friction::AbstractFriction=md.friction, calving::AbstractCalving=md.calving, basalforcings::AbstractBasalforcings=md.basalforcings) #{{{
354366
return model(mesh, md.geometry, md.mask, md.materials,
355367
md.initialization, md.stressbalance, md.constants, md.results,
356368
friction, basalforcings, md.smb, md.timestepping,
357369
md.masstransport, md.transient, md.inversion, md.calving,
358-
md.levelset, md.frontalforcings)
370+
md.levelset, md.frontalforcings, md.groundingline)
359371
end#}}}
360372
function model(matmd::Dict; verbose::Bool=true, friction::AbstractFriction=BuddFriction(), basalforcings::AbstractBasalforcings=DefaultBasalforcings()) #{{{
361373

@@ -436,6 +448,7 @@ function Base.show(io::IO, md::model)# {{{
436448
@printf "%19s: %-26s -- %s\n" "calving" typeof(md.calving) "parameters for calving"
437449
@printf "%19s: %-26s -- %s\n" "levelset" typeof(md.levelset) "parameters for moving boundaries (level-set method)"
438450
@printf "%19s: %-26s -- %s\n" "frontalforcings" typeof(md.frontalforcings) "parameters for frontalforcings"
451+
@printf "%19s: %-26s -- %s\n" "groundingline" typeof(md.groundingline) "parameters for groundingline"
439452
@printf "%19s: %-26s -- %s\n" "results" typeof(md.results) "model results"
440453

441454
end# }}}

0 commit comments

Comments
 (0)