33#ifndef __H__UG__PLUGINS__LEVEL_SET__LEVEL_SET_H__
34#define __H__UG__PLUGINS__LEVEL_SET__LEVEL_SET_H__
47#include <boost/function.hpp>
55template<
typename TGr
idFunction>
65 static const int dim = domain_type::dim;
83 typedef typename TGridFunction::template dim_traits<dim>::grid_base_object
ElemType;
92 typedef typename TGridFunction::template dim_traits<dim>::const_iterator
ElemIterator;
131 bool advect_lsf(TGridFunction& uNew,TGridFunction& u);
141 vel->set_entry(0, vel_x);
142 if (
dim>1) vel->set_entry(1, vel_x);
143 if (
dim>2) vel->set_entry(2, vel_x);
150 vel->set_entry(0, vel_x);
151 vel->set_entry(1, vel_y);
153 UG_THROW(
"ConvectionDiffusion: Setting velocity vector of dimension 2"
154 " to a Discretization for world dim " <<
dim);
162 vel->set_entry(0, vel_x);
163 vel->set_entry(1, vel_y);
164 vel->set_entry(2, vel_z);
166 UG_THROW(
"ConvectionDiffusion: Setting velocity vector of dimension 3"
167 " to a Discretization for world dim " <<
dim);
199 bool compute_normal(TGridFunction& vx,TGridFunction& vy,TGridFunction& u);
200 bool compute_dnormal(TGridFunction& dnormal,TGridFunction& vx,TGridFunction& vy,TGridFunction& phi,TGridFunction& u);
201 bool compute_ddnormal(TGridFunction& ddnormal,TGridFunction& dnormal,TGridFunction& vx,TGridFunction& vy,TGridFunction& phi,TGridFunction& u);
278 bool overwrite(TGridFunction&,TGridFunction&,TGridFunction&,
int);
290 template <
typename TElem>
Definition level_set.h:57
void create_ls_subsets(TGridFunction &phi)
Definition level_set_impl.h:1580
void set_limiter(bool b)
Definition level_set.h:127
void set_nodes_inactive(int sign)
Definition level_set.h:265
TGridFunction::algebra_type algebra_type
algebra type
Definition level_set.h:62
bool calculate_vertex_vol(TGridFunction &u, aaVol &aaVolVolume)
fills the scvVolume attachment for all element types
Definition level_set_impl.h:860
int m_inside_nodes_si
Definition level_set.h:313
bool compute_ddnormal(TGridFunction &ddnormal, TGridFunction &dnormal, TGridFunction &vx, TGridFunction &vy, TGridFunction &phi, TGridFunction &u)
Definition level_set_impl.h:1294
bool set_outflow_boundary(TGridFunction &uNew, const char *subsets)
Definition level_set.h:212
void set_delta(number delta)
Definition level_set.h:123
number m_dt
Definition level_set.h:297
void set_nr_of_steps(size_t n)
set nr of time steps to perform in advect_lsf (default is 1)
Definition level_set.h:118
void set_dirichlet_data(SmartPtr< CplUserData< number, dim > > d)
Definition level_set.h:188
void set_divfree(bool b)
Definition level_set.h:121
bool update_ls_subsets(TGridFunction &phi)
Definition level_set_impl.h:1423
void set_timestep_nr(size_t n)
Definition level_set.h:128
SmartPtr< CplUserData< number, dim > > m_imSource
Data import for the right-hand side.
Definition level_set.h:320
int m_onls_nodes_si
Definition level_set.h:315
void set_info(bool b)
Definition level_set.h:126
bool compute_error(TGridFunction &numsol)
computes error w.r.t. the analytical solution (taken from the dirichlet bc)
Definition level_set_impl.h:917
TGridFunction::template traits< Vertex >::const_iterator VertexConstIterator
vertex base iterator
Definition level_set.h:89
TGridFunction::template dim_traits< dim >::grid_base_object ElemType
type of base grid object
Definition level_set.h:83
bool assemble_element(TElem &elem, DimFV1Geometry< dim > &geo, grid_type &grid, TGridFunction &uNew, const TGridFunction &uOld, aaGrad &aaGradient, aaVol &aaVolume)
Definition level_set_impl.h:276
number get_time()
Definition level_set.h:125
domain_type::grid_type grid_type
grid type
Definition level_set.h:71
void set_elements_inactive(int sign)
Definition level_set.h:239
void set_dt(number deltaT)
set time step
Definition level_set.h:115
bool compute_normal(TGridFunction &vx, TGridFunction &vy, TGridFunction &u)
Definition level_set_impl.h:1168
void set_reinit(size_t n)
Definition level_set.h:120
bool m_divFree
Definition level_set.h:301
void set_source(SmartPtr< CplUserData< number, dim > > user)
Definition level_set.h:179
number m_maxCFL
Definition level_set.h:303
void set_elements_active(int signi, int signj)
Definition level_set.h:231
Grid::VertexAttachmentAccessor< Attachment< number > > aaVol
type of volume-size attachment
Definition level_set.h:77
bool limit_grad(TGridFunction &uOld, aaGrad &aaGradient)
Definition level_set_impl.h:53
~FV1LevelSetDisc()
Destructor.
Definition level_set.h:112
size_t m_nrOfSteps
Definition level_set.h:302
void set_elements_inactive(int signi, int signj)
Definition level_set.h:244
bool runtimetest(TGridFunction &u)
Definition level_set_impl.h:1597
void set_velocity(SmartPtr< CplUserData< MathVector< dim >, dim > > user)
Definition level_set.h:136
number m_gamma
Definition level_set.h:299
number m_delta
Definition level_set.h:300
domain_type::position_accessor_type position_accessor_type
type of the position accessor
Definition level_set.h:74
TGridFunction::template dim_traits< dim >::const_iterator ElemIterator
grid element iterator
Definition level_set.h:92
int m_onls_elements_si
Definition level_set.h:312
void set_time(number t)
Definition level_set.h:124
int m_inside_elements_si
Definition level_set.h:310
size_t m_timestep_nr
Definition level_set.h:305
void set_dirichlet_data(number val)
Definition level_set.h:189
SmartPtr< CplUserData< number, dim > > m_imDirichlet
Data import for the Dirichlet values.
Definition level_set.h:322
SubsetGroup m_dirichlet_sg
Definition level_set.h:308
void set_elements_active(int signi, int signj, int signk)
Definition level_set.h:235
int m_outside_elements_si
Definition level_set.h:311
void set_elements_active(int sign)
Definition level_set.h:226
void set_nodes_inactive(int signi, int signj)
Definition level_set.h:270
bool assign_dirichlet(TGridFunction &)
Definition level_set_impl.h:640
void set_gamma(number gamma)
Definition level_set.h:122
void set_velocity(number vel_x)
Definition level_set.h:138
number m_time
Definition level_set.h:298
void set_source(number val)
Definition level_set.h:180
void set_nodes_active(int sign)
Definition level_set.h:252
bool compute_dnormal(TGridFunction &dnormal, TGridFunction &vx, TGridFunction &vy, TGridFunction &phi, TGridFunction &u)
Definition level_set_impl.h:1233
size_t m_limiter
Definition level_set.h:306
void set_velocity(number vel_x, number vel_y, number vel_z)
Definition level_set.h:159
Grid::VertexAttachmentAccessor< Attachment< MathVector< dim > > > aaGrad
type of gradient attachment
Definition level_set.h:80
bool calculate_vertex_grad_vol_sign(TGridFunction &, aaGrad &, aaVol &, TGridFunction &, int)
Definition level_set_impl.h:997
TGridFunction::domain_type domain_type
domain type
Definition level_set.h:59
void set_elements_inactive(int signi, int signj, int signk)
Definition level_set.h:248
void set_nodes_active(int signi, int signj, int signk)
Definition level_set.h:261
SmartPtr< CplUserData< MathVector< dim >, dim > > m_imVelocity
Data import for the Velocity field.
Definition level_set.h:318
void set_nodes_active(int signi, int signj)
Definition level_set.h:257
int m_outside_nodes_si
Definition level_set.h:314
FV1LevelSetDisc()
Constructor.
Definition level_set.h:96
bool overwrite(TGridFunction &, TGridFunction &, TGridFunction &, int)
Definition level_set_impl.h:1360
TGridFunction::template traits< Edge >::const_iterator EdgeConstIterator
edge iterator
Definition level_set.h:86
bool set_dirichlet_boundary(TGridFunction &uNew, const char *subsets)
boundary condition subset handling
Definition level_set.h:204
bool init_ls_subsets(TGridFunction &phi)
subset handling methods:
Definition level_set_impl.h:1572
bool calculate_vertex_grad_vol(TGridFunction &u, aaGrad &aaGradient, aaVol &aaVolume)
Definition level_set_impl.h:485
void set_nodes_inactive(int signi, int signj, int signk)
Definition level_set.h:274
bool advect_lsf(TGridFunction &uNew, TGridFunction &u)
computes the time steps of the discretization of the level-set equation
Definition level_set_impl.h:696
bool m_print
Definition level_set.h:304
void set_velocity(number vel_x, number vel_y)
Definition level_set.h:147
SubsetGroup m_inactive_sg
Definition level_set.h:309
static const int dim
world dimension
Definition level_set.h:65
SubsetGroup m_neumann_sg
Definition level_set.h:307
bool contains(const char *name) const
void remove(const char *name)
void add(const char *name)
#define UG_CATCH_THROW(msg)
SmartPtr< T, FreePolicy > make_sp(T *inst)