-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathdomain_disc_util.lua
152 lines (141 loc) · 6.35 KB
/
domain_disc_util.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
-- Copyright (c) 2013-2014: G-CSC, Goethe University Frankfurt
-- Author: Andreas Vogel
--
-- This file is part of UG4.
--
-- UG4 is free software: you can redistribute it and/or modify it under the
-- terms of the GNU Lesser General Public License version 3 (as published by the
-- Free Software Foundation) with the following additional attribution
-- requirements (according to LGPL/GPL v3 §7):
--
-- (1) The following notice must be displayed in the Appropriate Legal Notices
-- of covered and combined works: "Based on UG4 (www.ug4.org/license)".
--
-- (2) The following notice must be displayed at a prominent place in the
-- terminal output of covered works: "Based on UG4 (www.ug4.org/license)".
--
-- (3) The following bibliography is recommended for citation and must be
-- preserved in all covered files:
-- "Reiter, S., Vogel, A., Heppner, I., Rupp, M., and Wittum, G. A massively
-- parallel geometric multigrid solver on hierarchically distributed grids.
-- Computing and visualization in science 16, 4 (2013), 151-164"
-- "Vogel, A., Reiter, S., Rupp, M., Nägel, A., and Wittum, G. UG4 -- a novel
-- flexible software system for simulating pde based models on high performance
-- computers. Computing and visualization in science 16, 4 (2013), 165-179"
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU Lesser General Public License for more details.
--[[!
\file domain_disc_util.lua
\defgroup scripts_util_domaindisc Domain Discretization Utility
\ingroup scripts_util
\{
\brief functions to create DomainDiscs using a string disc-type identifier
]]--
--! Returns a ConvectionDiffusion Element-Disc of the requested type
--! @return Returns the domain discreatization
--! @param fcts (String) names of symbolic functions
--! @param subsets (String) names of symbolic subsets
--! @param discType (String) discretizatin scheme
function ConvectionDiffusion(fcts, subsets, discType)
if discType == nil then discType = "fv1" end
if discType == "fv1" then return ConvectionDiffusionFV1(fcts, subsets)
elseif discType == "fe" then return ConvectionDiffusionFE(fcts, subsets)
elseif discType == "fvcr" then return ConvectionDiffusionFVCR(fcts, subsets)
elseif discType == "fv" then return ConvectionDiffusionFV(fcts, subsets)
else
print("ConvectionDiffusion: no disc type '"..discType.."' available. Aborting")
exit();
end
end
--! Returns a NeumannBoundary Element-Disc of the requested type
--! @return Returns the domain discreatization
--! @param fcts (String) names of symbolic function
--! @param discType (String) discretizatin scheme
function NeumannBoundary(fcts, discType)
if discType == nil then discType = "fv1" end
if discType == "fv1" then return NeumannBoundaryFV1(fcts)
elseif discType == "fv" then return NeumannBoundaryFV(fcts)
elseif discType == "fe" then return NeumannBoundaryFE(fcts)
else
print("NeumannBoundary: no disc type '"..discType.."' available. Aborting")
exit();
end
end
--! Returns a DensityDrivenFlow Element-Disc of the requested type
--! @return Returns the domain discreatization
--! @param fcts (String) names of symbolic functions
--! @param subsets (String) names of symbolic subsets
--! @param discType (String) discretizatin scheme
function DensityDrivenFlow(fcts, subsets, discType)
if discType == nil then discType = "fv1" end
if discType == "fv1" then return DensityDrivenFlowFV1(fcts, subsets)
elseif discType == "fv" then return DensityDrivenFlowFV(fcts, subsets)
else
print("DensityDrivenFlow: no disc type '"..discType.."' available. Aborting")
exit();
end
end
--! Returns a NavierStokes Element-Disc of the requested type
--! @return Returns the domain discreatization
--! @param fcts (String) names of symbolic functions
--! @param subsets (String) names of symbolic subsets
--! @param discType (String) discretizatin scheme
function NavierStokes(fcts, subsets, discType)
if discType == nil then discType = "fv1" end
if discType == "fv1" then return NavierStokesFV1(fcts, subsets)
elseif discType == "fv" then return NavierStokesFV(fcts, subsets)
elseif discType == "fvcr" then return NavierStokesFVCR(fcts, subsets)
elseif discType == "fe" then return NavierStokesFE(fcts, subsets)
elseif discType == "fecr" then return NavierStokesFE(fcts, subsets)
else
print("NavierStokes: no disc type '"..discType.."' available. Aborting")
exit();
end
end
--! Returns a NavierStokesInflow Element-Disc of the requested type
--! @return Returns the domain discreatization
--! @param fcts (String) names of symbolic functions
--! @param subsets (String) names of symbolic subsets
--! @param discType (String) discretizatin scheme
function NavierStokesInflow(spMaster)
if spMaster == nil then
print("NavierStokesInflow: master disc is not available. Aborting")
exit();
end
local discType = spMaster:disc_type();
if discType == "fv1" then return NavierStokesInflowFV1(spMaster)
elseif discType == "fv1_cutElem" then return NavierStokesInflowFV1_cutElem(spMaster)
elseif discType == "fv" then return NavierStokesInflowFV(spMaster)
elseif discType == "fvcr" then return NavierStokesInflowFVCR(spMaster)
elseif discType == "fe" then return NavierStokesInflowFE(spMaster)
elseif discType == "fecr" then return NavierStokesInflowFE(spMaster)
else
print("NavierStokesInflow: no disc type '"..discType.."' available. Aborting")
exit();
end
end
--! Returns a NavierStokesNoNormalStressOutflow Element-Disc of the requested type
--! @return Returns the domain discreatization
--! @param fcts (String) names of symbolic functions
--! @param subsets (String) names of symbolic subsets
--! @param discType (String) discretizatin scheme
function NavierStokesNoNormalStressOutflow(spMaster)
if spMaster == nil then
print("NavierStokesNoNormalStressOutflow: master disc is not available. Aborting")
exit();
end
local discType = spMaster:disc_type();
if discType == "fv1" then return NavierStokesNoNormalStressOutflowFV1(spMaster)
elseif discType == "fvcr" then return NavierStokesNoNormalStressOutflowFVCR(spMaster)
elseif discType == "fv" then return NavierStokesNoNormalStressOutflowFV(spMaster)
else
print("NavierStokesNoNormalStressOutflow: no disc type '"..discType.."' available. Aborting")
exit();
end
end
--[[!
\}
]]--