Apps
Loading...
Searching...
No Matches
unsat_flow_util.lua File Reference

Functions

function ProblemDisc assert_richards_parameters (medium)
 
function ProblemDisc CreateApproxSpace ()
 
function ProblemDisc CreateDomainDisc (approxSpace)
 
function ProblemDisc CreateElemDisc (subdom, medium)
 
function ProblemDisc CreateModelMap (paramDesc)
 
function ProblemDisc CreateVTKOutput ()
 
function dwDensityFct (w)
 
function dwViscosityFct (w)
 
function ProblemDisc lookup (uid, param)
 
function ProblemDisc new (problemDesc, dom)
 
function ProblemDisc SetInitialData ()
 

Function Documentation

◆ assert_richards_parameters()

function ProblemDisc assert_richards_parameters ( medium  )

location: /home/runner/work/docs/docs/ug4/apps/unsat_flow / unsat_flow_util.lua :320-336

function ProblemDisc:assert_richards_parameters(medium)
local porosity = medium.porosity
local cuid = medium.conductivity.value
local suid = medium.saturation.value
local Ksat = self:lookup(cuid, "Ksat")
local case1 = (Ksat == nil) and (medium.permeability ~= nil and self.problem.flow.viscosity ~= nil)
local case2 = (Ksat ~= nil) and (medium.permeability == nil and self.problem.flow.viscosity == nil)
print("Permeability and Viscosity are given, but not hydraulic conductivity: " .. tostring(case1))
print("Only hydraulic conductivity is given: " .. tostring(case2))
assert(case1 or case2, "either Ksat or permeability and viscosity must be defined")
function *Umax *y end
Definition channel.lua:87
function ProblemDisc lookup(uid, param)
function ProblemDisc assert_richards_parameters(medium)

◆ CreateApproxSpace()

function ProblemDisc CreateApproxSpace ( )

location: /home/runner/work/docs/docs/ug4/apps/unsat_flow / unsat_flow_util.lua :39-48

function ProblemDisc:CreateApproxSpace()
self.approxSpace = ApproximationSpace(self.domain)
self.approxSpace:add_fct("p", "Lagrange", 1)
self.approxSpace:add_fct("c", "Lagrange", 1)
self.approxSpace:init_levels()
self.approxSpace:init_top_surface()
self.approxSpace:print_statistic()
return self.approxSpace
parameterNumber c
Definition mixinglayer.lua:13
function ProblemDisc CreateApproxSpace()

◆ CreateDomainDisc()

function ProblemDisc CreateDomainDisc ( approxSpace  )

location: /home/runner/work/docs/docs/ug4/apps/unsat_flow / unsat_flow_util.lua :229-318

◆ CreateElemDisc()

function ProblemDisc CreateElemDisc ( subdom  ,
medium   
)

location: /home/runner/work/docs/docs/ug4/apps/unsat_flow / unsat_flow_util.lua :51-227

◆ CreateModelMap()

function ProblemDisc CreateModelMap ( paramDesc  )

location: /home/runner/work/docs/docs/ug4/apps/unsat_flow / unsat_flow_util.lua :405-422

function ProblemDisc:CreateModelMap(paramDesc)
local modelMap = {}
local mfactory = RichardsModelFactory()
for i, medium in ipairs(paramDesc) do
if medium.type == "vanGenuchten" then
modelMap[medium.uid] = mfactory:create_van_genuchten(json.encode(medium))
print(medium.uid .. ":v->" .. modelMap[medium.uid]:config_string())
elseif medium.type == "exp" then
modelMap[medium.uid] = mfactory:create_exponential(json.encode(medium))
print(medium.uid .. ":e->" .. modelMap[medium.uid]:config_string())
elseif medium.type == "const" then
modelMap[medium.uid] = medium.value
print(medium.uid .. ":c->" .. modelMap[medium.uid])
return modelMap
parameterString type
Definition adrivencavity.lua:2
function *y *math exp(-0.01 *t) end
function ProblemDisc CreateModelMap(paramDesc)

◆ CreateVTKOutput()

function ProblemDisc CreateVTKOutput ( )

location: /home/runner/work/docs/docs/ug4/apps/unsat_flow / unsat_flow_util.lua :349-402

◆ dwDensityFct()

function dwDensityFct ( )

/**

/**

/**

/**

/**

/** location: /home/runner/work/docs/docs/ug4/apps/unsat_flow / unsat_flow_util.lua :469-480

function dwDensityFct(w)
return (-1.0 * p_w * p_s * (p_w - p_s)) / (p_s * (p_w - 1) - p_w * w) ^ 2
density = LuaUserFunctionNumber("DensityFct", 1);
density:set_deriv(0, "dwDensityFct");
elseif self.problem.flow.density.type == "const" then
density = self.problem.flow.density.min
return density
function dwDensityFct(w)

References if().

◆ dwViscosityFct()

function dwViscosityFct ( )

/**

/** location: /home/runner/work/docs/docs/ug4/apps/unsat_flow / unsat_flow_util.lua :496-505

function dwViscosityFct(w)
return mu0 * (1.85 - 8.2 * w + 133.5 * w ^ 2)
viscosity = LuaUserFunctionNumber("ViscosityFct", 1);
viscosity:set_deriv(0, "dwViscosityFct");
return viscosity
function dwViscosityFct(w)

References for(), and if().

◆ lookup()

function ProblemDisc lookup ( uid  ,
param   
)

location: /home/runner/work/docs/docs/ug4/apps/unsat_flow / unsat_flow_util.lua :338-347

function ProblemDisc:lookup(uid, param)
local value = nil
for i, p in ipairs(self.problem.parameter) do
if p.uid == uid then
value = p[param]
return value
parameterString p

◆ new()

function ProblemDisc new ( problemDesc  ,
dom   
)

location: /home/runner/work/docs/docs/ug4/apps/unsat_flow / unsat_flow_util.lua :17-37

◆ SetInitialData()

function ProblemDisc SetInitialData ( )

location: /home/runner/work/docs/docs/ug4/apps/unsat_flow / unsat_flow_util.lua :424-429

function ProblemDisc:SetInitialData()
for i, initial in ipairs(self.problem.initial) do
print("Added Initial Value " .. initial.cmp .. " = " .. initial.value)
Interpolate(initial.value, self.u, initial.cmp)
function ProblemDisc SetInitialData()