Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
prudhomm committed May 28, 2018
2 parents 445c49a + 5be8480 commit 4548ea8
Show file tree
Hide file tree
Showing 17 changed files with 571 additions and 49 deletions.
8 changes: 3 additions & 5 deletions docs/dev/modules/reference/pages/Integrals/README.adoc
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
// -*- mode: adoc -*-

Integration
-----------
= Integration

You should be able to create a mesh now. If it is not the case, get
back to the section <<../Mesh/README.adoc,Mesh>>.

Prerequisites::
* <<../Mesh/iterators.adoc,Iterate over a region of a mesh elements, faces, edges and points>>
* <<../Keywords/keywords.adoc,Define expressions>>
* xref:Mesh/iterators.adoc[Iterate over a region of a mesh elements, faces, edges and points]
* xref:Keywords/keywords.adoc[Define expressions]

include::integrate.adoc[]

Expand Down
10 changes: 5 additions & 5 deletions docs/math/modules/fem/pages/ch-problemes-mixtes.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -230,8 +230,8 @@ Thanks to the Lemma of Céa applied to Saddle-Point Problems, the unique solutio
++++
\begin{array}[c]{rl}
||u-u_h||_X & \leq c_{1h} \inf_{v_h \in X_h} ||u-v_h||_X + c_{2}
\inf_{q_h \in M_h} ||q-q_h||_M\\
||p-p_h||_X & \leq c_{3h} \inf_{v_h \in X_h} ||u-v_h||_X + c_{4h} \inf_{q_h \in M_h} ||q-q_h||_M
\inf_{q_h \in M_h} ||p-q_h||_M\\
||p-p_h||_M & \leq c_{3h} \inf_{v_h \in X_h} ||u-v_h||_X + c_{4h} \inf_{q_h \in M_h} ||p-q_h||_M
\end{array}
++++
where
Expand Down Expand Up @@ -396,7 +396,7 @@ Look for stem:[(u,p) \in [H^1_0(\Omega)\]^d \times L^2_0(\Omega)] such that
\begin{array}[c]{rl}
\int_\Omega \nabla u : \nabla v -\int_\Omega p \nabla \cdot v & =
\int_\Omega f \cdot v, \quad \forall v \in [H^1_0(\Omega)]^d\\
\int_\Omega q \nabla \cdot u & = - \int_\Omega g q, \quad \forall q \in L^2_0(\Omega)
- \int_\Omega q \nabla \cdot u & = - \int_\Omega g q, \quad \forall q \in L^2_0(\Omega)
\end{array}
\right.
++++
Expand Down Expand Up @@ -430,9 +430,9 @@ Look for stem:[(u_h,p_h) \in X_h \times M_h] such that
++++
\left\{
\begin{array}[c]{rl}
\int_\Omega \nabla u_h : \nabla v_h + \int_\Omega p_h \nabla \cdot v_h
\int_\Omega \nabla u_h : \nabla v_h - \int_\Omega p_h \nabla \cdot v_h
& = \int_\Omega f \cdot v_h, \quad \forall v_h \in X_h\\
\int_\Omega q_h \nabla \cdot u_h & = -\int_\Omega g q_h, \quad \forall q_h \in M_h
- \int_\Omega q_h \nabla \cdot u_h & = -\int_\Omega g q_h, \quad \forall q_h \in M_h
\end{array}
\right.
++++
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,7 @@ feelpp_qs_elasticity_pure_traction_2d --config-file cantilever.cfg --functions.g
<script type="text/javascript">
feelppVtkJs.createSceneImporter( vtkVisuSection3, {
fileURL: "https://girder.math.unistra.fr/api/v1/file/5affc155b0e9574027048059/download",
objects: { "reference":[ { scene:"cantilever-pure-traction", name:"Cantilever" } ],
"displacement":[ { scene:"displacement", name:"Rigid Rotation" } ],
objects: { "reference":[ { scene:"cantilever-pure-traction", name:"Cantilever" }, { scene:"displacement", name:"Displacement" } ],
"deformed":[ { scene:"deformed", name:"Cantilever Rotated" } ] }
} );
</script>
Expand Down
2 changes: 1 addition & 1 deletion docs/math/modules/fem/pages/elasticity/pure-traction.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ a(\disp{d},\disp{d})=\int_\Omega \lambda(\nabla \cdot u)^2 + \int_\Omega 2 \mu \
ce qui signifie que stem:[\deformt{\disp{d}} = 0], donc que les composantes de stem:[\disp{d}] sont des polynomes du premier degré et donc que
[stem]
++++
\disp(x) = \tau + R \times \disp{x}
\disp{d}(x) = \tau + R \disp{x}
++++
avec stem:[\tau \in \RR^3] et stem:[R \in \RR^{3\times 3}].
De plus remarquons que stem:[R] est anti-symmétrique, _i.e_ stem:[R+R^T=0], du fait que stem:[\deformt{\disp{d}} = 0].
Expand Down
1 change: 1 addition & 0 deletions docs/toolboxes/antora.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ nav:
- modules/csm/nav.adoc
- modules/fsi/nav.adoc
- modules/thermoelectric/nav.adoc
- modules/heatfluid/nav.adoc
- modules/multifluid/nav.adoc
- modules/maxwell/nav.adoc
- modules/hdg/nav.adoc
6 changes: 3 additions & 3 deletions docs/toolboxes/modules/cfd/nav.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@
*** xref:toolbox.adoc#_materials[Materials]
*** xref:toolbox.adoc#_boundary_conditions[Boundary Conditions]
*** xref:toolbox.adoc#_body_forces[Body Forces]
*** xref:toolbox.adoc#_post_pro[Post-Processing]
*** xref:toolbox.adoc#_stab[Stabilisation methods]
*** xref:toolbox.adoc#_run[Running a CFD simulation]
*** xref:toolbox.adoc#_post_processing[Post-Processing]
*** xref:toolbox.adoc#_stabilization_methods[Stabilisation methods]
*** xref:toolbox.adoc#_run_simulation[Running a CFD simulation]
8 changes: 5 additions & 3 deletions docs/toolboxes/modules/cfd/pages/toolbox.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -619,13 +619,15 @@ NOTE: Documentation pending

== Run simulation

programme avalaible :
The computational fluid dynamics applications available are

* `feelpp_toolbox_fluid_2d`
* [x] 2D CFD toolbox : `feelpp_toolbox_fluid_2d`

* `feelpp_toolbox_fluid_3d`
* [x] 3D CFD toolbox : `feelpp_toolbox_fluid_3d`

Here is an example of execution of the 2D CFD toolbox on 4 processors using the configuration script `<myfile.cfg>`
----
mpirun -np 4 feelpp_toolbox_fluid_2d --config-file=<myfile.cfg>
----


93 changes: 74 additions & 19 deletions docs/toolboxes/modules/fsi/pages/theory.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -219,34 +219,89 @@ Different coupling strategies (semi-implicit and semi-explicit) can be set betwe

* using a Dirichlet-Neumann scheme
* using a Robin-Robin coupling scheme between the fluid and the structure.
* using a Generalized Robin-Neumann scheme

NOTE: The list needs to be updated

== Coupling strategies

Discrete coupling conditions must mimic the continuous coupling conditions that impose velocity, stress and geometric continuity on the FSI interface.

FSI coupling conditions can be practically enforced in different ways. A key element determining the numerical scheme to be used is the added-mass effect. This phenomenon depends on the ratio stem:[\frac{\rho_s}{\rho_f}] and refers to the different acceleration that a body immersed in a fluid experiences, as opposed to the acceleration it would experience in vacuum. This effect is explained by imagining that, as it moves, the solid carries with it a certain volume of fluid, and the higher the fluid density, the stronger the added mass. The added-mass effect is strong when fluid and solid densities are approximately equal.

Initially, when FSI simulations were carried out for aerodynamic purposes, this effect was negligible and a Dirichlet-Neumann approach was employed; lately, FSI modeling started employing denser fluids, and numerical schemes that are independent from added mass effects became necessary: two examples are Robin-Robin and Generalized Robin-Neumann schemes. They are all explicit schemes.

=== Dirichlet-Neumann

Dirichlet-Neumann coupling strategy is the easiest and directest one. It discretizes the FSI coupling conditions as follows: at the stem:[n]-th time iteration, on the fluid sub-problem the following conditions are imposed

[stem]
++++
\mathbf{u}_f^n = \frac{\boldsymbol{\eta}_s^{n-1} - \boldsymbol{\eta}_s^{n-2}}{\Delta t} \quad \textrm{in stem:[\Omega_f^t]}
++++

They are the discretized Dirichlet prescription on the velocity suggested by the coupling conditions.

On the solid sub-problem, instead, the Neumann condition on the stresses' continuity is imposed in a discrete form
[stem]
++++
\boldsymbol{\sigma}_s^n \mathbf{n}_s = -\boldsymbol{\sigma}_f^n \mathbf{n}_f \quad \textrm{in stem:[\Omega_s^*]}
++++

=== Robin-Robin

The conditions read
Robin-Robin (RR) coupling strategy imposes coupling conditions in Robin form, in two steps: at the stem:[n]-th time iteration, on the solid sub-problem the following conditions are imposed
[stem]
++++
\begin{aligned}
\boldsymbol{\sigma}_{s}^{n} \boldsymbol{n}_s^n + \frac{\gamma
\mu_f }{h} \boldsymbol{u}_{s}^n &=& \frac{\gamma \mu_f }{h}
\boldsymbol{u}_{f}^{n-1} -
\boldsymbol{\sigma}_{f}^{n-1}
\boldsymbol{n}_f \quad
\quad \text{in}\ \Omega^*_s \\
\boldsymbol{\sigma}_{f}^{n} \boldsymbol{n}_f + \frac{\gamma
\mu_f }{h} \boldsymbol{u}_{f} &=& \frac{\gamma \mu_f }{h}
\boldsymbol{u}_{s}^n +
\boldsymbol{\sigma}_{f}^{n-1}
\boldsymbol{n}_f \quad \quad
\text{in}\ \Omega^t_f
\end{aligned}
\boldsymbol{\sigma}_s^n\mathbf{n}_s + \frac{\gamma \mu_f}{h} \mathbf{u}_s^n = \frac{\gamma \mu_f}{h} \mathbf{u}_f^{n-1}- \boldsymbol{\sigma}_f^{n-1}\mathbf{n_f} \quad \textrm{in stem:[\Omega_s^*]}
++++
with
where
[stem]
++++
\boldsymbol{u}_{s}^n = \frac{\partial
\boldsymbol{\eta}_{s}^n }{\partial t}
\mathbf{u}_s^n= \frac{\partial \boldsymbol{\eta}_s^n}{\partial t}
++++
and latexmath:[\gamma] a parameter to choose.
The right-hand side depends only on quantities coming from the stem:[(n-1)]-th time iteration.

Once the solid sub-problem has been solved, one uses stem:[\mathbf{u}_s^n ] to impose on the fluid sub-problem:
[stem]
++++
\boldsymbol{\sigma}_f^n\mathbf{n}_f + \frac{\gamma \mu_f}{h} \mathbf{u}_f^n = \frac{\gamma \mu_f}{h} \mathbf{u}_s^{n} +\boldsymbol{\sigma}_f^{n-1} \mathbf{n_f} \quad \textrm{in stem:[\Omega_f^t]}
++++
Here, stem:[\gamma] is a penalization parameter to be chosen.

It should be noticed that in (RR) stability and accuracy are subject to a CFL-condition: hyperbolic-type CFL, for which stem:[\Delta t = \mathcal{O}(h)], is sufficient to have stability, but parabolic-type CFL, for which stem:[\Delta t = \mathcal{O}(h^2)], is necessary to have optimal accuracy.

=== Generalized Robin-Neumann

This coupling strategy, at the stem:[n]-th time iteration, imposes on the fluid sub-problem:
[stem]
++++
\boldsymbol{\sigma}_f^n \mathbf{n} + \frac{\rho_s}{\Delta t} \mathbf{B}\mathbf{u}_f^n = \frac{\rho_s}{\Delta t} \mathbf{B}\mathbf{u}_s^{n-1} - \boldsymbol{\sigma}_s^{n-1}\mathbf{n}_s \quad \textrm{in stem:[\Omega_f^t]}
++++
where
[stem]
++++
\mathbf{u}_s^{n-1}= \frac{\partial \boldsymbol{\eta}_s^{n-1}}{\partial t}
++++
and stem:[\mathbf{B}] is a self-adjoint operator coming from a mass lumping procedure. The fluid-sided condition is called generalized Robin because of stem:[\bf{B}] that multiplies fluid and solid velocities.

On the solid sub-problem, the following discrete Neumann condition is imposed
\[
\boldsymbol{\sigma}_s^n \mathbf{n}_s = -\boldsymbol{\sigma}_f^n \mathbf{n}_f \quad \textrm{in stem:[\Omega_s^*]}
\]
Also in this case there are CFL-type constraints that link space and time discretization steps: under parabolic-type CFL condition, stability is guaranteed; however, if adequate extrapolation techniques are employed, stability can be obtained under weaker requirements.

These succint explanations were taken from the articles:

* Erik Burman, Miguel Angel Fernández. Explicit strategies for incompressible fluid-structure inter-
action problems: Nitsche type mortaring versus Robin-Robin coupling. International Journal for
Numerical Methods in Engineering, Wiley, 2014, 97 (10), pp.739–758. <10.1002/nme.4607>. <hal-
00819948v2> https://hal.inria.fr/hal-00819948v2

* Miguel Angel Fernández, Jimmy Mullaert, Marina Vidrascu. Generalized Robin-Neumann explicit
coupling schemes for incompressible fluid-structure interaction: stability analysis and numerics.
International Journal for Numerical Methods in Engineering, Wiley, 2015, 101 (3), pp.199-229.
<10.1002/nme.4785>. <hal-00875819> https://hal.inria.fr/hal-00875819

7 changes: 5 additions & 2 deletions docs/toolboxes/modules/hdg/pages/mixedpoisson.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ The models are not considered for now.
[source,json]
.Model section
----
"Model": "HDG"
"Models": { "equations":"hdg" }
----

==== Materials
Expand Down Expand Up @@ -153,7 +153,10 @@ Two fields can be exported, the potential stem:[p] and the flux stem:[\boldsymbo
----
"PostProcess":
{
"Fields":["potential","flux"]
"Exports":
{
"fields":["potential","flux"]
}
}
----

Expand Down
Loading

0 comments on commit 4548ea8

Please sign in to comment.