-
Notifications
You must be signed in to change notification settings - Fork 12
/
README4engineers
220 lines (175 loc) · 9.69 KB
/
README4engineers
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
FeenoX for Engineers
- 1 How FeenoX works
- 2 What Feenox can solve
- 3 Why FeenoX works the way it does
[1 How FeenoX works]: #how-feenox-works
[2 What Feenox can solve]: #what-feenox-can-solve
[3 Why FeenoX works the way it does]: #why-feenox-works-the-way-it-does
How FeenoX works
Heads up! First things first:
1. FeenoX is not a traditional point-and-click finite-element solver.
It does not include a graphical interface.
2. FeenoX is designed as a cloud-first back end for generic
computational workflows to solve engineering-related problems. One
of these many workflows can be point-and-click graphical interface
such as CAEplex which allows to solve thermo-mechanical problems
directly from the browser.
3. Since it is a cloud-first tool, FeenoX targets at GNU/Linux. If
you are using Windows, FeenoX may not be for you (but CAEplex
may). See below to find out why FeenoX works the way it does.
In plain engineering terms, FeenoX works like a transfer function
between one or more input files and zero or more output files:
+------------+
mesh (*.msh) } | | { terminal
data (*.dat) } input ----> | FeenoX |----> output { data files
input (*.fee) } | | { post (vtk/msh)
+------------+
When solving problems using the finite element method, FeenoX sits in
the middle of pre and post-processing tools. The former should aid the
engineer to prepare the mesh and, eventually, the input file. The latter
should show the numerical results. See the tensile test tutorial for an
in-depth step-by-step explanation.
To fix ideas, let us consider the NAFEMS LE10 “Thick plate pressure”
benchmark. Fig. 1 shows that there is a one-to-one correspondence
between the human-friendly problem formulation and the input file FeenoX
reads. There is no need to give extra settings if the problem does not
ask for them. Note that since the problem has only one volume, E means
“the” Young modulus. No need to deal with a map between materials and
mesh entitites (in this case the mapping is not needed but in
multi-material problems the mapping is needed indeed). Nothing more,
nothing less.
[Figure 1: The NAFEMS LE10 problem statement and the corresponding
FeenoX input]
Figure 1: The NAFEMS LE10 problem statement and the corresponding FeenoX
input
Say we already have a nafems-le10.geo file which tells Gmsh how to
create a mesh nafems-le10.msh (check out the tensile test tutorial for
details). Then, we can create an input file for FeenoX (using editors
with syntax highlighting for example) as follows:
# NAFEMS Benchmark LE-10: thick plate pressure
PROBLEM mechanical DIMENSIONS 3
READ_MESH nafems-le10.msh # mesh in millimeters
# LOADING: uniform normal pressure on the upper surface
BC upper p=1 # 1 Mpa
# BOUNDARY CONDITIONS:
BC DCD'C' v=0 # Face DCD'C' zero y-displacement
BC ABA'B' u=0 # Face ABA'B' zero x-displacement
BC BCB'C' u=0 v=0 # Face BCB'C' x and y displ. fixed
BC midplane w=0 # z displacements fixed along mid-plane
# MATERIAL PROPERTIES: isotropic single-material properties
E = 210e3 # Young modulus in MPa
nu = 0.3 # Poisson's ratio
SOLVE_PROBLEM # solve!
# print the direct stress y at D (and nothing more)
PRINT "σ_y @ D = " sigmay(2000,0,300) "MPa"
Heads up! The .msh file from Gmsh can be either
a. version 2.2, or
b. version 4.0, or
c. version 4.1.
and can be partitioned or not.
Once we put these two files, nafems-le10.geo and nafems-le10.fee in the
same directory, say in the examples directory of the repository, then we
call first Gmsh and then FeenoX from the terminal to solve the benchmark
problem:
Check out the section about invocation in the FeenoX manual.
The trick is that this workflow is susceptible of being automated and
customized to run in the cloud, possibly in parallel throughout several
servers using the MPI standard. Check out this 1-minute video that
covers a similar case from the tensile-test tutorial:
[]
There is a sound explanation about why FeenoX works this way and not
like other FEA tools you might have encountered in the past. If you are
feeling curious, take a look at what FeenoX has to offer to hackers and
academics.
[FeenoX]: https://www.seamplex.com/feenox
[cloud-first]: https://seamplex.com/feenox/doc/sds.html#cloud-first
[back end]: https://en.wikipedia.org/wiki/Frontend_and_backend
[CAEplex]: https://www.caeplex.com
[why]: #why
[input files]: https://seamplex.com/feenox/doc/sds.html#sec:input
[output files]: https://seamplex.com/feenox/doc/sds.html#sec:output
[tensile test tutorial]: https://www.seamplex.com/feenox/doc/tutorials/110-tensile-test/
[NAFEMS LE10 “Thick plate pressure” benchmark]: https://www.seamplex.com/feenox/examples/mechanical.html#nafems-le10-thick-plate-pressure-benchmark
[multi-material problems]: https://seamplex.com/feenox/examples/mechanical.html#two-cubes-compressing-each-other
[Figure 1: The NAFEMS LE10 problem statement and the corresponding FeenoX input]:
nafems-le10-problem-input.svg
[nafems-le10.geo]: https://github.com/seamplex/feenox/blob/main/examples/nafems-le10.geo
[Gmsh]: http://gmsh.info/
[editors with syntax highlighting]: https://seamplex.com/feenox/doc/sds.html#sec:syntactic
[examples]: https://github.com/seamplex/feenox/tree/main/examples
[invocation]: https://www.seamplex.com/feenox/doc/feenox-manual.html#running-feenox
[FeenoX manual]: https://www.seamplex.com/feenox/doc/feenox-manual.html
[in the cloud]: https://www.seamplex.com/feenox/doc/sds.html#cloud-first
[in parallel throughout several servers using the MPI standard]: https://seamplex.com/feenox/doc/sds.html#sec:scalability
[1]: https://seamplex.com/feenox/doc/tutorials/110-tensile-test/quick.mp4
[hackers]: README4hackers.md
[academics]: README4academics.md
What Feenox can solve
FeenoX can solve the following types of problems:
- Basic mathematics
- Systems of ODEs/DAEs
- Laplace’s equation
- Heat conduction
- Linear elasticity
- Modal analysis
- Neutron diffusion
- Neutron SN
Take the tutorials to learn how to solve those types of problems:
0. Setting up your workspace
1. Overview: the tensile test case
2. Fun & games: solving mazes with PDES instead of AI
3. Heat conduction
Browse through the documentation to dive deeper into the details.
[Basic mathematics]: https://seamplex.com/feenox/examples/basic.html
[Systems of ODEs/DAEs]: https://seamplex.com/feenox/examples/daes.html
[Laplace’s equation]: https://seamplex.com/feenox/examples/laplace.html
[Heat conduction]: https://seamplex.com/feenox/examples/thermal.html
[Linear elasticity]: https://seamplex.com/feenox/examples/mechanical.html
[Modal analysis]: https://seamplex.com/feenox/examples/modal.html
[Neutron diffusion]: https://seamplex.com/feenox/examples/neutron_diffusion.html
[Neutron SN]: https://seamplex.com/feenox/examples/neutron_sn.html
[Setting up your workspace]: https://www.seamplex.com/feenox/doc/tutorials/000-setup
[Overview: the tensile test case]: https://www.seamplex.com/feenox/doc/tutorials/110-tensile-test
[Fun & games: solving mazes with PDES instead of AI]: https://www.seamplex.com/feenox/doc/tutorials/120-mazes
[2]: https://www.seamplex.com/feenox/doc/tutorials/320-thermal
[the documentation]: https://seamplex.com/feenox/doc/
Why FeenoX works the way it does
There are two “why” questions we have to answer.
1. Why is FeenoX different from other “similar” tools?
Consider again the NAFEMS LE10 case from fig. 1 above. Take some
time to think (or investigate) how other FEA tools handle this case.
Note the following features FeenoX provides:
- ready-to-run executable that reads the problem at runtime (no
need to compile anything to solve a particular problem)
- self-explanatory plain-text near-English input file
- one-to-one correspondence between computer input file and
human description of the problem
- Git-traceable (mesh is not part of the input file)
- everything is an expression
- material properties can be given as functions of space
and/or time and/or temperature (or other intermediate
variables)
- these functions can be given as algebraic expressions or
come from interpolated point-wise defined data
- 100% user-defined output
- simple problems need simple inputs
- similar problems need similar inputs
- parametric and optimization runs through command-line arguments
- flexibility to handle many workflows, including web-based
interfaces
2. Why FeenoX works the way it does?
Because it is cloud first and its objective is to be flexible enough
to power web-based interfaces like CAEplex and many other workflows.
More information in the details for Unix experts and academic
professors.
Depending on the complexity of the case, CAEplex might be enough or
not. If the latter, one has to see what’s sitting under the hood.
Peek into the documentation and the repository for further details.
[ready-to-run executable]: https://www.seamplex.com/feenox/doc/sds.html#sec:execution
[100% user-defined output]: https://seamplex.com/feenox/doc/sds.html#sec:output
[web-based interfaces]: https://www.caeplex.com
[cloud first]: https://seamplex.com/feenox/doc/sds.html#cloud-first
[Unix experts]: README4hackers.md
[academic professors]: README4academics.md
[the documentation]: https://seamplex.com/feenox/doc/
[the repository]: https://github.com/seamplex/feenox/