Electrowetting on dielectric
|
Classes | |
struct | ScratchData |
Public Member Functions | |
Pressure (const Triangulation< dim > &tria, Material_Parameters ¶ms, const unsigned deg, const double ee, const double thres, const unsigned sweeps) | |
virtual | ~Pressure () |
Public Attributes | |
AsFunction< dim > | get_pressure |
pressure | |
AsFunction< dim > | get_extrapolated_pressure |
extrapolated pressure | |
Protected Types | |
typedef IteratorGroup < 2, typename hp::DoFHandler < dim >::active_cell_iterator > | Iterator |
Protected Member Functions | |
virtual void | SetupDoFsSuffix () |
virtual void | InitLADataSuffix () |
virtual void | AssembleSystem (std::vector< AsFunction< dim > * > &data, const double time, const bool m_threaded=true) |
void | AssembleCell (const Iterator Its, ScratchData &scratch, typename Problem< dim >::PerTaskData &data) |
virtual void | ReinitPrec () |
virtual void | DoSolve (SolverControl &control) |
virtual void | SolveSystemSuffix () |
virtual void | SetInitialData () |
virtual void | PreRefinementPreffix () |
virtual void | PostRefinementSuffix (const std::vector< TrilinosWrappers::Vector > &sol_tmp) |
Protected Attributes | |
const double | rho_min |
Penalization parameter. | |
TrilinosWrappers::PreconditionAMG | prec |
Preconditioner (AMG) | |
TrilinosWrappers::PreconditionAMG::AdditionalData | prec_data |
Preconditioner data. | |
TrilinosWrappers::Vector | p |
pressure | |
TrilinosWrappers::Vector | pres_extr |
extrapolated pressure . |
The elliptic problem that determines the pressure. After time discretization, at each time step, we solve
with boundary condition
After which, the pressure is determined by
For this reason, the "solution" in this problem is the variable and the pressure is just a view, that is an instance of the AsFunction class template.
typedef IteratorGroup<2, typename hp::DoFHandler<dim>::active_cell_iterator> Pressure< dim >::Iterator [protected] |
Pressure< dim >::Pressure | ( | const Triangulation< dim > & | tria, |
Material_Parameters & | params, | ||
const unsigned | deg, | ||
const double | ee, | ||
const double | thres, | ||
const unsigned | sweeps | ||
) |
Initialize the members:
tria | : A reference to the mesh where this problem is defined. |
params | : The list of material parameters. |
deg | : The polynomial degree |
ee | : The accuracy to which we iteraritvely solve the problem. |
thres | : The aggregation threshold for the AMG preconditioner. |
sweeps | : The number of smoothing steps the AMG preconditioner must perform. |
Notice that in this problem the matrix does not change and, therefore, the preconditioner does not need to be updated.
virtual void Pressure< dim >::SetupDoFsSuffix | ( | ) | [protected, virtual] |
Since the problem we are solving has a homogeneous Neumann boundary condition we obtain a singular matrix. To remove the singularity we add to the ConstraintMatrix one extra constraint, fixing the value of the solution at one degree of freedom.
Reimplemented from Problem< dim >.
virtual void Pressure< dim >::InitLADataSuffix | ( | ) | [protected, virtual] |
We just set the auxiliary vectors to the proper size
Reimplemented from Problem< dim >.
virtual void Pressure< dim >::AssembleSystem | ( | std::vector< AsFunction< dim > * > & | data, |
const double | time, | ||
const bool | m_threaded = true |
||
) | [protected, virtual] |
Assemble the system matrix and right hand side for the current status of the problem
data | : The views of the other problems this one needs information from to be able to assemble. |
time | : The current time. |
m_threaded | : flag that indicates if the assembly should be done using multithreading. |
Implements Problem< dim >.
void Pressure< dim >::AssembleCell | ( | const Iterator | Its, |
ScratchData & | scratch, | ||
typename Problem< dim >::PerTaskData & | data | ||
) | [protected] |
Assemble the local problems.
Its | : The cell iterators for the current problem and the data. |
scratch | : The scratch data. |
data | : The per task data. |
virtual void Pressure< dim >::ReinitPrec | ( | ) | [protected, virtual] |
Reinit the preconditioner
Implements Problem< dim >.
virtual void Pressure< dim >::DoSolve | ( | SolverControl & | control | ) | [protected, virtual] |
Solve the system
control | : Provides the maximal number of iterations and exit criterion |
Implements Problem< dim >.
virtual void Pressure< dim >::SolveSystemSuffix | ( | ) | [protected, virtual] |
Since and are actually views of the problem. After solving the system, we need to update them.
Reimplemented from Problem< dim >.
virtual void Pressure< dim >::SetInitialData | ( | ) | [protected, virtual] |
Set the initial data
Implements Problem< dim >.
virtual void Pressure< dim >::PreRefinementPreffix | ( | ) | [protected, virtual] |
Used to handle changes in the triangulation: Copy to the solution transfer
Implements Problem< dim >.
virtual void Pressure< dim >::PostRefinementSuffix | ( | const std::vector< TrilinosWrappers::Vector > & | sol_tmp | ) | [protected, virtual] |
Used to handle changes in the triangulation: Copy from the solution transfer
Implements Problem< dim >.
TrilinosWrappers::PreconditionAMG Pressure< dim >::prec [protected] |
TrilinosWrappers::PreconditionAMG::AdditionalData Pressure< dim >::prec_data [protected] |
TrilinosWrappers::Vector Pressure< dim >::p [protected] |
TrilinosWrappers::Vector Pressure< dim >::pres_extr [protected] |
AsFunction<dim> Pressure< dim >::get_pressure |
AsFunction<dim> Pressure< dim >::get_extrapolated_pressure |