ASPECT
include
aspect
mesh_deformation
free_surface.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2011 - 2019 by the authors of the ASPECT code.
3
4
This file is part of ASPECT.
5
6
ASPECT is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 2, or (at your option)
9
any later version.
10
11
ASPECT is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
15
16
You should have received a copy of the GNU General Public License
17
along with ASPECT; see the file LICENSE. If not see
18
<http://www.gnu.org/licenses/>.
19
*/
20
21
22
#ifndef _aspect_mesh_deformation_free_surface_h
23
#define _aspect_mesh_deformation_free_surface_h
24
25
#include <
aspect/mesh_deformation/interface.h
>
26
27
#include <
aspect/simulator_access.h
>
28
#include <
aspect/simulator/assemblers/interface.h
>
29
30
31
namespace
aspect
32
{
33
using namespace
dealii
;
34
35
namespace
Assemblers
36
{
43
template
<
int
dim>
44
class
ApplyStabilization
:
public
Assemblers::Interface
<dim>,
45
public
SimulatorAccess
<dim>
46
{
47
public
:
48
ApplyStabilization
(
const
double
stabilization_theta);
49
50
void
51
execute (
internal::Assembly::Scratch::ScratchBase<dim>
&scratch,
52
internal::Assembly::CopyData::CopyDataBase<dim>
&data)
const override
;
53
54
private
:
60
const
double
free_surface_theta
;
61
};
62
}
63
64
namespace
MeshDeformation
65
{
72
template
<
int
dim>
73
class
FreeSurface
:
public
Interface
<dim>,
public
SimulatorAccess
<dim>
74
{
75
public
:
80
void
initialize
()
override
;
81
86
void
set_assemblers(
const
SimulatorAccess<dim>
&simulator_access,
87
aspect::Assemblers::Manager<dim>
&assemblers)
const
;
88
95
void
96
compute_velocity_constraints_on_boundary(
const
DoFHandler<dim>
&mesh_deformation_dof_handler,
97
AffineConstraints<double>
&mesh_velocity_constraints,
98
const
std::set<types::boundary_id> &
boundary_id
)
const override
;
99
103
static
104
void
declare_parameters
(
ParameterHandler
&prm);
105
109
void
parse_parameters (
ParameterHandler
&prm)
override
;
110
111
private
:
116
void
project_velocity_onto_boundary (
const
DoFHandler<dim>
&free_surface_dof_handler,
117
const
IndexSet
&mesh_locally_owned,
118
const
IndexSet
&mesh_locally_relevant,
119
LinearAlgebra::Vector
&output)
const
;
120
126
double
free_surface_theta
;
127
131
struct
SurfaceAdvection
132
{
133
enum
Direction
{ normal, vertical };
134
};
135
140
typename
SurfaceAdvection::Direction
advection_direction
;
141
};
142
}
143
}
144
145
146
#endif
AffineConstraints< double >
interface.h
TrilinosWrappers::MPI::Vector
aspect::Assemblers::Manager
Definition:
simulator.h:121
aspect::MeshDeformation::FreeSurface
Definition:
free_surface.h:73
ParameterHandler
aspect::MeshDeformation::FreeSurface::SurfaceAdvection::Direction
Direction
Definition:
free_surface.h:133
aspect::AdiabaticConditions::declare_parameters
void declare_parameters(ParameterHandler &prm)
aspect::Assemblers::ApplyStabilization::free_surface_theta
const double free_surface_theta
Definition:
free_surface.h:60
aspect::MeshDeformation::FreeSurface::free_surface_theta
double free_surface_theta
Definition:
free_surface.h:126
simulator_access.h
aspect::SimulatorAccess
Definition:
plugins.h:44
aspect::MeshDeformation::Interface
Definition:
interface.h:62
aspect
Definition:
coordinate_systems.h:24
aspect::Assemblers::Interface
Definition:
simulator.h:120
IndexSet
aspect::Particle::Property::initialize
Definition:
interface.h:276
interface.h
aspect::internal::Assembly::Scratch::ScratchBase
Definition:
interface.h:59
DoFHandler< dim >
aspect::internal::Assembly::CopyData::CopyDataBase
Definition:
interface.h:345
aspect::MeshDeformation::FreeSurface::advection_direction
SurfaceAdvection::Direction advection_direction
Definition:
free_surface.h:140
dealii
aspect::Assemblers::ApplyStabilization
Definition:
free_surface.h:44
boundary_id
unsigned int boundary_id
aspect::MeshDeformation::FreeSurface::SurfaceAdvection
Definition:
free_surface.h:131