Toggle navigation
Documentation
Big picture
The finite element method
The data structure
Not-so-quick guide
Optimisation
Order of action functions
Example codes and tutorials
List of example codes and tutorials
Meshing
Solvers
MPI parallel processing
Post-processing/visualisation
Other
Change log
Creating documentation
Coding conventions
Index
FAQ
Installation
Installation guide
Copyright
About
People
Contact/Get involved
Publications
Acknowledgements
Picture show
Go
src
space_time
space_time_block_preconditioner
general_purpose_space_time_block_preconditionable_elements.h
Go to the documentation of this file.
1
// LIC// ====================================================================
2
// LIC// This file forms part of oomph-lib, the object-oriented,
3
// LIC// multi-physics finite-element library, available
4
// LIC// at http://www.oomph-lib.org.
5
// LIC//
6
// LIC// Copyright (C) 2006-2024 Matthias Heil and Andrew Hazel
7
// LIC//
8
// LIC// This library is free software; you can redistribute it and/or
9
// LIC// modify it under the terms of the GNU Lesser General Public
10
// LIC// License as published by the Free Software Foundation; either
11
// LIC// version 2.1 of the License, or (at your option) any later version.
12
// LIC//
13
// LIC// This library is distributed in the hope that it will be useful,
14
// LIC// but WITHOUT ANY WARRANTY; without even the implied warranty of
15
// LIC// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16
// LIC// Lesser General Public License for more details.
17
// LIC//
18
// LIC// You should have received a copy of the GNU Lesser General Public
19
// LIC// License along with this library; if not, write to the Free Software
20
// LIC// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21
// LIC// 02110-1301 USA.
22
// LIC//
23
// LIC// The authors may be contacted at oomph-lib@maths.man.ac.uk.
24
// LIC//
25
// LIC//====================================================================
26
// Header file for SpaceTimeUnsteadyHeat elements
27
#ifndef OOMPH_GENERAL_PURPOSE_SPACETIME_BLOCK_PRECONDITIONABLE_ELEMENTS_HEADER
28
#define OOMPH_GENERAL_PURPOSE_SPACETIME_BLOCK_PRECONDITIONABLE_ELEMENTS_HEADER
29
30
// Config header generated by autoconfig
31
#ifdef HAVE_CONFIG_H
32
#include <oomph-lib-config.h>
33
#endif
34
35
// Oomph-lib headers
36
#include "
generic/elements.h
"
37
38
/// /////////////////////////////////////////////////////////////////////////
39
/// /////////////////////////////////////////////////////////////////////////
40
/// /////////////////////////////////////////////////////////////////////////
41
42
namespace
oomph
43
{
44
//======start_of_BlockPreconditionableSpaceTimeElement=========================
45
/// Block preconditionable space-time element base class.
46
/// NOTE: It has to derive from GeneralisedElement so that it can overload
47
/// the implementation of ndof_types() in GeneralisedElement.
48
//=============================================================================
49
class
BlockPreconditionableSpaceTimeElementBase
50
:
public
virtual
GeneralisedElement
51
{
52
public
:
53
/// Constructor (empty)
54
BlockPreconditionableSpaceTimeElementBase
() {}
55
56
/// Destructor (empty)
57
~BlockPreconditionableSpaceTimeElementBase
() {}
58
59
/// Access function to assign the time slice this element lies in
60
void
set_time_slab_id
(
const
int
& time_slice_id)
61
{
62
// The time slice must be greater than -1. This happens when we use
63
// an impulsive start so there are no dofs in the first time slice
64
// of the first elemental time slice of the first but there are proper
65
// dofs in the final time slice of the first elemental time slice.
66
if
(time_slice_id < -1)
67
{
68
// Throw an error
69
throw
OomphLibError
(
70
"Time slice ID must be greater than or equal to -1!"
,
71
OOMPH_CURRENT_FUNCTION,
72
OOMPH_EXCEPTION_LOCATION);
73
}
74
75
// Return the value that is currently stored
76
Time_slab_id
= time_slice_id;
77
}
// End of set_time_slab_id
78
79
80
/// Access function to assign the number of dof types in the mesh
81
/// NOTE: We have an access function for this as N_dof_types relies
82
/// on the number of time slices in the mesh which isn't something one
83
/// individual element should know...
84
void
set_ndof_types
(
const
unsigned
& n_dof_types)
85
{
86
// Return the value that is currently stored
87
N_dof_types
= n_dof_types;
88
}
// End of set_ndof_types
89
90
91
/// Return the number of "DOF types" that the degrees of freedom in
92
/// this element are sub-divided into
93
unsigned
ndof_types
()
const
94
{
95
// Return the number of dof types being used in the mesh
96
return
this->
N_dof_types
;
97
}
// End of ndof_types
98
99
100
/// Pure virtual function to be implemented in a derived class.
101
/// Create a list of pairs for all unknowns in this element,
102
/// so the first entry in each pair contains the global equation
103
/// number of the unknown, while the second one contains the number
104
/// of the "DOF type" that this unknown is associated with.
105
virtual
void
get_dof_numbers_for_unknowns
(
106
std::list<std::pair<unsigned long, unsigned>>& dof_lookup_list)
const
= 0;
107
108
protected
:
109
/// The number of time slices in the mesh
110
unsigned
N_dof_types
;
111
112
/// The time slice this element lies within
113
int
Time_slab_id
;
114
};
115
}
// End of namespace oomph
116
#endif
oomph::BlockPreconditionableSpaceTimeElementBase
Block preconditionable space-time element base class. NOTE: It has to derive from GeneralisedElement ...
Definition:
general_purpose_space_time_block_preconditionable_elements.h:51
oomph::BlockPreconditionableSpaceTimeElementBase::set_ndof_types
void set_ndof_types(const unsigned &n_dof_types)
Access function to assign the number of dof types in the mesh NOTE: We have an access function for th...
Definition:
general_purpose_space_time_block_preconditionable_elements.h:84
oomph::BlockPreconditionableSpaceTimeElementBase::Time_slab_id
int Time_slab_id
The time slice this element lies within.
Definition:
general_purpose_space_time_block_preconditionable_elements.h:113
oomph::BlockPreconditionableSpaceTimeElementBase::~BlockPreconditionableSpaceTimeElementBase
~BlockPreconditionableSpaceTimeElementBase()
Destructor (empty)
Definition:
general_purpose_space_time_block_preconditionable_elements.h:57
oomph::BlockPreconditionableSpaceTimeElementBase::ndof_types
unsigned ndof_types() const
Return the number of "DOF types" that the degrees of freedom in this element are sub-divided into.
Definition:
general_purpose_space_time_block_preconditionable_elements.h:93
oomph::BlockPreconditionableSpaceTimeElementBase::BlockPreconditionableSpaceTimeElementBase
BlockPreconditionableSpaceTimeElementBase()
Constructor (empty)
Definition:
general_purpose_space_time_block_preconditionable_elements.h:54
oomph::BlockPreconditionableSpaceTimeElementBase::get_dof_numbers_for_unknowns
virtual void get_dof_numbers_for_unknowns(std::list< std::pair< unsigned long, unsigned >> &dof_lookup_list) const =0
Pure virtual function to be implemented in a derived class. Create a list of pairs for all unknowns i...
oomph::BlockPreconditionableSpaceTimeElementBase::N_dof_types
unsigned N_dof_types
The number of time slices in the mesh.
Definition:
general_purpose_space_time_block_preconditionable_elements.h:110
oomph::BlockPreconditionableSpaceTimeElementBase::set_time_slab_id
void set_time_slab_id(const int &time_slice_id)
Access function to assign the time slice this element lies in.
Definition:
general_purpose_space_time_block_preconditionable_elements.h:60
oomph::GeneralisedElement
A Generalised Element class.
Definition:
elements.h:73
oomph::OomphLibError
An OomphLibError object which should be thrown when an run-time error is encountered....
Definition:
oomph_definitions.h:222
elements.h
oomph
//////////////////////////////////////////////////////////////////// ////////////////////////////////...
Definition:
advection_diffusion_elements.cc:30