From f49b9a17595e03b06e8d872c9c7a5a2929784100 Mon Sep 17 00:00:00 2001 From: DIAZ Jerome <jerome.diaz@inria.fr> Date: Mon, 19 Aug 2019 17:50:29 +0200 Subject: [PATCH] Update model_tutorial.md --- Documentation/ModelTutorial/model_tutorial.md | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/Documentation/ModelTutorial/model_tutorial.md b/Documentation/ModelTutorial/model_tutorial.md index 97b2b4305f..6f4fb3bd58 100644 --- a/Documentation/ModelTutorial/model_tutorial.md +++ b/Documentation/ModelTutorial/model_tutorial.md @@ -1,5 +1,4 @@ - <!-- toc --> - [Introduction](#introduction) @@ -160,8 +159,8 @@ Finally, we are left with the following set of equations and boundary conditions ```math \begin{cases} -\displaystyle \forall \underline{y}^* \in \mathcal{V}, \quad \displaystyle \int_{\Omega _{0}}^{} \rho_0 \, \underline{y}^{*} \cdot \underline{\ddot{y}} \textrm{d}\Omega_0 + \int_{\Omega_{0}}^{} \underline{\hat{\varepsilon}}(\underline{y}^*)^T \cdot \underline{\underline{\hat{\text{A}}}} \cdot \underline{\hat{\varepsilon}}(\underline{y}) \textrm{d}\Omega_0 -= \int_{\Gamma_0^N} \underline{y}^* \cdot \underline{g}_0 \text{d}S_0 \\ +\displaystyle \forall \underline{y}^* \in \mathcal{V}, \quad \displaystyle \int_{\Omega _{0}}^{} \rho_0 \, \underline{y}^{*} \cdot \underline{\ddot{y}} \, \textrm{d}\Omega_0 + \int_{\Omega_{0}}^{} \underline{\hat{\varepsilon}}(\underline{y}^*)^T \cdot \underline{\underline{\hat{\text{A}}}} \cdot \underline{\hat{\varepsilon}}(\underline{y}) \, \textrm{d}\Omega_0 += \int_{\Gamma_0^N} \underline{y}^* \cdot \underline{g}_0 \, \text{d}S_0 \\ \displaystyle \underline{y}(\underline{x}) = \underline{0} \quad \text{on } \, \Gamma^D \end{cases} ``` @@ -169,7 +168,7 @@ This bilinear system (with respect to the virtual displacement field $` \underli # Resolution of the linear system ## Spatial discretization -In order to solve our previoulsy defined bilinear (with respect to $`\underline{y}`$ and $`\underline{y}^*`$) system, we will be using the standard Galerkin method. It consists of approximating the function of interest (the displacement field in our case) by a finite sum of known shape functions (polynomials usually) $`\phi_k(\underline{\xi})`$ weighted by unkown coefficients $`y_{jk} `$ where $`k`$ is the order of the shape functions used. In 2D, the discretization of the displacement field gives: +In order to solve our previoulsy defined bilinear system (with respect to $`\underline{y}`$ and $`\underline{y}^*`$), we will be using the standard Galerkin method. It consists of approximating the function of interest (the displacement field in our case) by a finite sum of known shape functions (polynomials usually) $`\phi_k(\underline{\xi})`$ weighted by unkown coefficients $`y_{jk} `$ where $`k \in [1, \, N + 1] `$, $` N `$ being the order of the shape functions used. In 2D, the discretization of the displacement field gives: ```math y_j = \sum_{k=1}^{N+1} y_{jk} \phi_k (\underline{\xi}) \quad j \in [x,y] @@ -236,16 +235,16 @@ y_{yN+1} & ``` Plugging these discretized forms into our equilibrium equation gives: ```math -\forall \, \underline{\mathbb{U}}^*_h \in \mathcal{V}_h, \quad \displaystyle \int_{\Omega_0} \rho_0 \underline{\mathbb{U}}^{*T}_h \underline{\underline{\mathbb{N}}} ^T \cdot \underline{\underline{\mathbb{N}}} \cdot \underline{\dot{\mathbb{V}}}_h \text{d}\Omega_0 + \int_{\Omega_{0}}^{} \underline{\mathbb{U}}^{*T}_h \cdot \underline{\underline{\mathbb{B}}}^T \cdot \underline{\underline{\hat{\text{A}}}} \cdot \underline{\underline{\mathbb{B}}} \cdot \underline{\mathbb{U}}_h \textrm{d}\Omega_0 -= \int_{\Gamma_0^N} \underline{\mathbb{U}}^{*T} \cdot \underline{\underline{\mathbb{N}}}^T \cdot \underline{g}_0 \text{d}S_0 +\forall \, \underline{\mathbb{U}}^*_h \in \mathcal{V}_h, \quad \displaystyle \int_{\Omega_0} \rho_0 \underline{\mathbb{U}}^{*T}_h \underline{\underline{\mathbb{N}}} ^T \cdot \underline{\underline{\mathbb{N}}} \cdot \underline{\dot{\mathbb{V}}}_h \, \text{d}\Omega_0 + \int_{\Omega_{0}}^{} \underline{\mathbb{U}}^{*T}_h \cdot \underline{\underline{\mathbb{B}}}^T \cdot \underline{\underline{\hat{\text{A}}}} \cdot \underline{\underline{\mathbb{B}}} \cdot \underline{\mathbb{U}}_h \, \textrm{d}\Omega_0 += \int_{\Gamma_0^N} \underline{\mathbb{U}}^{*T} \cdot \underline{\underline{\mathbb{N}}}^T \cdot \underline{g}_0 \, \text{d}S_0 ``` where $`\underline{\dot{\mathbb{V}}}_h `$ is time derivative of the unkown coefficients $`\dot{y}_{jk}`$ relative to the velocity field (which is itself the time derivative of the unknown weighting coefficients of the displacement field). This equation can be factorized and simplified as follows: ```math -\forall \, \underline{\mathbb{U}}^*_h \in \mathcal{V}_h, \quad \displaystyle \underline{\mathbb{U}}^{*T}_h \left[ \int_{\Omega_0} \rho_0 \underline{\underline{\mathbb{N}}} ^T \cdot \underline{\underline{\mathbb{N}}} \text{d}\Omega_0 \right] \underline{\dot{\mathbb{V}}}_h + \underline{\mathbb{U}}^{*T}_h \left[ \int_{\Omega_{0}}^{} \underline{\underline{\mathbb{B}}}^T \cdot \underline{\underline{\hat{\text{A}}}} \cdot \underline{\underline{\mathbb{B}}} \textrm{d}\Omega_0 \right] \underline{\mathbb{U}}_h -= \underline{\mathbb{U}}^{*T}_h \left[ \int_{\Gamma_0^N} \underline{\underline{\mathbb{N}}}^T \cdot \underline{g}_0 \text{d}S_0 \right] +\forall \, \underline{\mathbb{U}}^*_h \in \mathcal{V}_h, \quad \displaystyle \underline{\mathbb{U}}^{*T}_h \left[ \int_{\Omega_0} \rho_0 \underline{\underline{\mathbb{N}}} ^T \cdot \underline{\underline{\mathbb{N}}} \, \text{d}\Omega_0 \right] \underline{\dot{\mathbb{V}}}_h + \underline{\mathbb{U}}^{*T}_h \left[ \int_{\Omega_{0}}^{} \underline{\underline{\mathbb{B}}}^T \cdot \underline{\underline{\hat{\text{A}}}} \cdot \underline{\underline{\mathbb{B}}} \, \textrm{d}\Omega_0 \right] \underline{\mathbb{U}}_h += \underline{\mathbb{U}}^{*T}_h \left[ \int_{\Gamma_0^N} \underline{\underline{\mathbb{N}}}^T \cdot \underline{g}_0 \, \text{d}S_0 \right] ``` ```math @@ -261,7 +260,7 @@ where $` \underline{\underline{\mathbb{M}}} `$ corresponds to the <strong>mass m Here the only time dependency for our elastic problem is the term associated to the inertia, involving the acceleration field $` \ddot{\underline{y}} `$: ```math -\int_{\Omega _{0}}^{} \rho_0 \, \underline{y}^{*} \cdot \underline{\ddot{y}} \textrm{d}\Omega_0 +\int_{\Omega _{0}}^{} \rho_0 \, \underline{y}^{*} \cdot \underline{\ddot{y}} \, \textrm{d}\Omega_0 ``` This means that in order to solve our system, we just need to update the acceleration values (no need to solve a linear system) with a selected time scheme , once we have the static solution. In this demo, we will implement the Newmark time scheme, which reads: ```math @@ -688,7 +687,7 @@ value = 0.04 ```` ##### Transient source. -This corresponds to $` \displaystyle \underline{g}_0(\underline{x}) \quad \text{in} \quad \int_{\Gamma_0^N} \underline{g}_0 \cdot \underline{y}^* \text{d}S_0 `$ +This corresponds to $` \displaystyle \underline{g}_0(\underline{x}) \quad \text{in} \quad \int_{\Gamma_0^N} \underline{g}_0 \cdot \underline{y}^* \, \text{d}S_0 `$ ```` @@ -1079,7 +1078,7 @@ git commit -m "#0 System linear algebra properly initialized; new method RunStat ### Source operator -RHS for the system is just the surfacic source; we therefore need to define the related operator. This corresponds to the surfacic loading vector $` \displaystyle \underline{\mathbb{F}} = \int_{\Gamma_0^N} \underline{\underline{\mathbb{N}}}^T \cdot \underline{g}_0 \text{d}S_0 `$: +RHS for the system is just the surfacic source; we therefore need to define the related operator. This corresponds to the surfacic loading vector $` \displaystyle \underline{\mathbb{F}} = \int_{\Gamma_0^N} \underline{\underline{\mathbb{N}}}^T \cdot \underline{g}_0 \, \text{d}S_0 `$: <p><strong><font color="green">In VariationalFormulation.hpp:</font></strong></p> @@ -1178,7 +1177,7 @@ source_parameter); ### Stiffness operator -We also need to define the sitffness matrix. This corresponds to $` \displaystyle \underline{\underline{\mathbb{K}}} = \int_{\Omega_{0}}^{} \underline{\underline{\mathbb{B}}}^T \cdot \underline{\underline{\hat{\text{A}}}} \cdot \underline{\underline{\mathbb{B}}} \textrm{d}\Omega_0 `$ +We also need to define the sitffness matrix. This corresponds to $` \displaystyle \underline{\underline{\mathbb{K}}} = \int_{\Omega_{0}}^{} \underline{\underline{\mathbb{B}}}^T \cdot \underline{\underline{\hat{\text{A}}}} \cdot \underline{\underline{\mathbb{B}}} \, \textrm{d}\Omega_0 `$ <p><strong><font color="green">In VariationalFormulation.hpp:</font></strong></p> ```` @@ -1375,7 +1374,7 @@ git commit -m "#0 Static case implemented and working." ## Defining the mass operator -Here we are defining the mass matrix required for the dynamic part of the run $` \underline{\underline{\mathbb{M}}} = \int_{\Omega_0} \rho_0 \underline{\underline{\mathbb{N}}} ^T \cdot \underline{\underline{\mathbb{N}}} \text{d}\Omega_0 `$ +Here we are defining the mass matrix required for the dynamic part of the run $` \underline{\underline{\mathbb{M}}} = \int_{\Omega_0} \rho_0 \underline{\underline{\mathbb{N}}} ^T \cdot \underline{\underline{\mathbb{N}}} \, \text{d}\Omega_0 `$ <p><strong><font color="green">In VariationalFormulation.hpp:</font></strong></p> @@ -1727,7 +1726,7 @@ This is where we are solving our dynamic linear system: ```math \begin{cases} -\\underline{\underline{\mathbb{M}}} \cdot \underline{\dot{\mathbb{V}}}_h + \underline{\underline{\mathbb{K}}} \cdot \underline{\mathbb{U}}_h = \underline{\mathbb{F}} \\ +\underline{\underline{\mathbb{M}}} \cdot \underline{\dot{\mathbb{V}}}_h + \underline{\underline{\mathbb{K}}} \cdot \underline{\mathbb{U}}_h = \underline{\mathbb{F}} \\ \underline{y}(\underline{x}) = \underline{0} \quad \text{on} \quad \Gamma^D \end{cases} ``` -- GitLab