Loading [MathJax]/extensions/tex2jax.js
Plugins
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
biot_projection.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2019-2022: G-CSC, Goethe University Frankfurt
3 * Copyright (c) 2022-2025: MSQC, Goethe University Frankfurt
4 * Author: Arne Naegel
5 *
6 * This file is part of UG4.
7 *
8 * UG4 is free software: you can redistribute it and/or modify it under the
9 * terms of the GNU Lesser General Public License version 3 (as published by the
10 * Free Software Foundation) with the following additional attribution
11 * requirements (according to LGPL/GPL v3 §7):
12 *
13 * (1) The following notice must be displayed in the Appropriate Legal Notices
14 * of covered and combined works: "Based on UG4 (www.ug4.org/license)".
15 *
16 * (2) The following notice must be displayed at a prominent place in the
17 * terminal output of covered works: "Based on UG4 (www.ug4.org/license)".
18 *
19 * (3) The following bibliography is recommended for citation and must be
20 * preserved in all covered files:
21 * "Reiter, S., Vogel, A., Heppner, I., Rupp, M., and Wittum, G. A massively
22 * parallel geometric multigrid solver on hierarchically distributed grids.
23 * Computing and visualization in science 16, 4 (2013), 151-164"
24 * "Vogel, A., Reiter, S., Rupp, M., Nägel, A., and Wittum, G. UG4 -- a novel
25 * flexible software system for simulating pde based models on high performance
26 * computers. Computing and visualization in science 16, 4 (2013), 165-179"
27 *
28 * This program is distributed in the hope that it will be useful,
29 * but WITHOUT ANY WARRANTY; without even the implied warranty of
30 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
31 * GNU Lesser General Public License for more details.
32 */
33#pragma once
34
35#ifndef __BIOT_PROJECTION_H__
36#define __BIOT_PROJECTION_H__
37
38// For
39
40// For
42
43
44#include "lib_disc/time_disc/theta_time_step.h" // ThetaTimeStep
45#include "../Limex/time_disc/time_integrator.hpp" // ConstStepLinearTimeIntegrator
46
47#ifdef UG_JSON
48#include <nlohmann/json.hpp>
49#endif
50
51namespace ug {
52namespace Poroelasticity {
53
54
55
57
59template <typename TDomain, typename TAlgebra>
61{
62public:
65
68protected:
70
71public:
75
78 {
79 // Create time integrator (if required)
80 if (time_integrator.invalid())
81 {
82 using TTimeDisc = ThetaTimeStep<TAlgebra>;
83 SmartPtr<TTimeDisc> time_disc = make_sp<TTimeDisc> (new TTimeDisc(m_dd0));
84 time_integrator = make_sp<TTimeIntegrator> (new TTimeIntegrator(time_disc, m_solver));
85 }
86
87 // Perform one step.
88 double tau0 = 1.0; // dummy tau
89 time_integrator->set_time_step(tau0);
90 time_integrator->set_precision_bound(1e-12);
91 time_integrator->apply(sol, tau0, sol, 0.0);
92
93 }
94
95protected:
96
98 SmartPtr<TDomainDisc> m_dd0; // domain disc for initial values
100};
101
102
103} // namespace Poroelasticity
104} // namespace ug
105
106#endif
Integrate over a given time interval (for a linear problem)
Definition time_integrator.hpp:246
A Biot problem consists of several element discs plus boundary conditions.
Definition biot_tools.h:375
GridFunction< TDomain, TAlgebra > TGridFunction
Definition biot_tools.h:380
Creates consistent initial values.
Definition biot_projection.h:61
ConstStepLinearTimeIntegrator< TDomain, TAlgebra > TTimeIntegrator
Definition biot_projection.h:69
typename TBiotProblem::TGridFunction TGridFunction
Definition biot_projection.h:67
TBiotProblem::TDomainDisc TDomainDisc
Definition biot_projection.h:64
BiotProblem< TDomain, TAlgebra > TBiotProblem
Definition biot_projection.h:63
SmartPtr< TSolver > m_solver
Definition biot_projection.h:97
BiotProjection(SmartPtr< TDomainDisc > dd0, SmartPtr< TSolver > solver)
Constructor (TODO: construct from BiotProblem???)
Definition biot_projection.h:73
void apply(SmartPtr< TGridFunction > sol)
Computes a consistent solution.
Definition biot_projection.h:77
SmartPtr< TTimeIntegrator > time_integrator
Definition biot_projection.h:99
SmartPtr< TDomainDisc > m_dd0
Definition biot_projection.h:98
const NullSmartPtr SPNULL