Changeset 26622
- Timestamp:
- 11/15/21 09:49:06 (3 years ago)
- Location:
- issm/trunk-jpl/src/jl
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/jl/classes.jl
r26522 r26622 154 154 155 155 println(io,"Model:") 156 @printf "%19s: %-2 2s -- %s\n" "mesh" typeof(md.mesh) "mesh properties"157 @printf "%19s: %-2 2s -- %s\n" "geometry" typeof(md.geometry) "surface elevation, bedrock topography, ice thickness,..."158 @printf "%19s: %-2 2s -- %s\n" "mask" typeof(md.mask) "defines grounded and floating regions"159 @printf "%19s: %-2 2s -- %s\n" "materials" typeof(md.materials) "material properties"160 @printf "%19s: %-2 2s -- %s\n" "initialization" typeof(md.initialization) "initial state"161 @printf "%19s: %-2 2s -- %s\n" "stressbalance" typeof(md.stressbalance) "stress balance parameters"162 @printf "%19s: %-2 2s -- %s\n" "constants" typeof(md.constants) "physical constants"156 @printf "%19s: %-26s -- %s\n" "mesh" typeof(md.mesh) "mesh properties" 157 @printf "%19s: %-26s -- %s\n" "geometry" typeof(md.geometry) "surface elevation, bedrock topography, ice thickness,..." 158 @printf "%19s: %-26s -- %s\n" "mask" typeof(md.mask) "defines grounded and floating regions" 159 @printf "%19s: %-26s -- %s\n" "materials" typeof(md.materials) "material properties" 160 @printf "%19s: %-26s -- %s\n" "initialization" typeof(md.initialization) "initial state" 161 @printf "%19s: %-26s -- %s\n" "stressbalance" typeof(md.stressbalance) "stress balance parameters" 162 @printf "%19s: %-26s -- %s\n" "constants" typeof(md.constants) "physical constants" 163 163 164 164 end# }}} 165 166 -
issm/trunk-jpl/src/jl/solve.jl
r26522 r26622 8 8 value::Float64 9 9 end# }}} 10 function GetParameterValue(param::DoubleParam) #{{{ 11 return param.value 12 end#}}} 10 13 struct IntParam <: Parameter #{{{ 11 14 enum::IssmEnum 12 15 value::Int64 13 16 end# }}} 17 function GetParameterValue(param::IntParam) #{{{ 18 return param.value 19 end#}}} 14 20 mutable struct Parameters #{{{ 15 21 lookup::Dict{IssmEnum,Parameter} … … 28 34 29 35 parameters.lookup[enum] = IntParam(enum,value) 36 37 end#}}} 38 function FindParam(parameters::Parameters,enum::IssmEnum) #{{{ 39 40 param = parameters.lookup[enum] 41 return GetParameterValue(param) 30 42 31 43 end#}}} … … 194 206 195 207 abstract type Analysis end 196 struct StressbalanceAnalysis #{{{208 struct StressbalanceAnalysis <: Analysis#{{{ 197 209 end #}}} 198 210 … … 209 221 210 222 #Solve 211 Stressbalance(femmodel) 223 analysis = StressbalanceAnalysis() 224 Core(analysis,femmodel) 212 225 213 226 #then what?? 227 error("STOP") 214 228 215 229 end# }}} … … 237 251 CreateConstraints(analysis,constraints,md) 238 252 253 #Configure objects 254 ConfigureObjectx(elements,nodes,vertices,parameters,inputs) 255 239 256 #Build FemModel 240 257 return FemModel(elements,vertices,nodes,parameters,inputs,constraints) … … 247 264 tempparams = Parameters(Dict{IssmEnum,Parameter}()) 248 265 tempinputs = Inputs(-1,-1,Dict{IssmEnum,Input}()) 249 tempvertices = Vector{Vertex}(undef, 0)266 tempvertices = Vector{Vertex}(undef,3) 250 267 tempnodes = Vector{Node}(undef,0) 251 268 … … 283 300 FetchDataToInput(md,inputs,elements,md.materials.rheology_B,MaterialsRheologyBEnum) 284 301 FetchDataToInput(md,inputs,elements,md.materials.rheology_n,MaterialsRheologyNEnum) 302 end# }}} 303 function ConfigureObjectx(elements::Vector{Tria},nodes::Vector{Node},vertices::Vector{Vertex},parameters::Parameters,inputs::Inputs) #{{{ 304 305 for i in 1:length(elements) 306 Configure(elements[i],nodes,vertices,parameters,inputs) 307 end 308 309 285 310 end# }}} 286 311 … … 334 359 335 360 end#}}} 336 function Stressbalance(femmodel::FemModel) 361 function Core(analysis::StressbalanceAnalysis,femmodel::FemModel)# {{{ 362 363 #Fetch parameters relevant to solution sequence 364 maxiter = FindParam(femmodel.parameters,StressbalanceMaxiterEnum) 365 restol = FindParam(femmodel.parameters,StressbalanceRestolEnum) 366 reltol = FindParam(femmodel.parameters,StressbalanceReltolEnum) 367 abstol = FindParam(femmodel.parameters,StressbalanceAbstolEnum) 368 369 solutionsequence_nonlinear(femmodel,analysis,maxiter,restol,reltol,abstol) 337 370 error("STOP") 338 end 371 372 end #}}} 373 function solutionsequence_nonlinear(femmodel::FemModel,analysis::Analysis,maxiter::Int64,restol::Float64,reltol::Float64,abstol::Float64) # {{{ 374 375 #Initialize number of iterations 376 count = 0 377 converged = false 378 379 #Get existing solution 380 ug = GetSolutionFromInputsx(analysis,femmodel) 381 382 #Loop until we reach convergence 383 while(~converged) 384 385 error("not implemented yet") 386 387 #Increase count 388 count += 1 389 if(count>maxiter) 390 println(" maximum number of nonlinear iterations (",maxiter,") exceeded") 391 converged = true 392 end 393 end 394 395 error("STOP") 396 397 end# }}} 339 398 340 399 #Element functions … … 360 419 end 361 420 end #}}} 421 function Configure(element::Tria,nodes::Vector{Node},vertices::Vector{Vertex},parameters::Parameters,inputs::Inputs) # {{{ 422 423 #Configure vertices 424 for i in 1:3 425 element.vertices[i] = vertices[element.vertexids[i]] 426 end 427 428 #Point to real datasets 429 element.parameters = parameters 430 element.inputs = inputs 431 432 end # }}}
Note:
See TracChangeset
for help on using the changeset viewer.