33 #ifndef __H__UG__NAVIER_STOKES_TURBULENT_VISCOSITY_FV1_DATA_IMPL_H_
34 #define __H__UG__NAVIER_STOKES_TURBULENT_VISCOSITY_FV1_DATA_IMPL_H_
42 template <
typename TData,
int dim,
typename TImpl,
typename TGr
idFunction>
46 for (
size_t lev=approximationSpace.
num_levels()-2; ;lev--){
50 coarseLevelVertexIter clvIter, clvIterEnd;
51 clvIter = lDD.template begin<Vertex>(si);
52 clvIterEnd = lDD.template end<Vertex>(si);
53 for (;clvIter != clvIterEnd;clvIter++){
55 aaData[vertex] += aaData[
grid.get_child<
Vertex>(vertex, 0)];
62 template <
typename TData,
int dim,
typename TImpl,
typename TGr
idFunction>
67 std::vector<DoFIndex> multInd;
68 for(
int si = 0; si < domain.subset_handler()->
num_subsets(); ++si){
71 for( ;iter !=iterEnd; ++iter)
74 for (
int d=0;d<
dim;d++){
75 u->dof_indices(vertex, d, multInd);
76 aaU[vertex][d]=
DoFRef(*u,multInd[0]);
83 template <
typename TData,
int dim,
typename TImpl,
typename TGr
idFunction>
84 template <
typename VType>
91 SetAttachmentValues(aaUHat , m_uInfo->template begin<Vertex>(), m_uInfo->template end<Vertex>(), 0);
92 SetAttachmentValues(aaVol , m_uInfo->template begin<Vertex>(), m_uInfo->template end<Vertex>(), 0);
102 for(
int si = 0; si < domain.subset_handler()->
num_subsets(); ++si)
105 ElemIterator iter = m_uInfo->template begin<elem_type>(si);
106 ElemIterator iterEnd = m_uInfo->template end<elem_type>(si);
109 for( ;iter !=iterEnd; ++iter)
114 const size_t numVertices = elem->num_vertices();
118 for(
size_t i = 0; i < numVertices; ++i){
119 vVrt[i] = elem->vertex(i);
120 coCoord[i] = posAcc[vVrt[i]];
137 UG_ASSERT(
dynamic_cast<elem_type*
>(elem) != NULL,
"Only elements of type elem_type are currently supported");
140 std::vector<number> vShape;
143 geo.
update(elem, &(coCoord[0]), domain.subset_handler().get());
145 rTrialSpace.
shapes(vShape, localBary);
147 size_t noc = elem->num_vertices();
154 for (
size_t co=0;co<noc;co++){
156 VType localValue = aaU[elem->vertex(co)];
158 localValue *= vShape[co];
160 elementVolume += scv.
volume();
162 value *= elementVolume;
163 for (
size_t co=0;co<noc;co++){
164 aaUHat[elem->vertex(co)] += value;
165 aaVol[elem->vertex(co)] += elementVolume;
171 for(
int si = 0; si < domain.subset_handler()->num_subsets(); ++si)
175 for( ;vertexIter !=vertexIterEnd; vertexIter++)
177 Vertex* vertex = *vertexIter;
178 if (pbm && pbm->
is_slave(vertex))
continue;
179 aaUHat[vertex]/=(
number)aaVol[vertex];
185 template <
typename TData,
int dim,
typename TImpl,
typename TGr
idFunction>
191 std::vector<DoFIndex> multInd;
194 SetAttachmentValues(aaUHat , m_uInfo->template begin<Vertex>(), m_uInfo->template end<Vertex>(), 0);
195 SetAttachmentValues(aaVol , m_uInfo->template begin<Vertex>(), m_uInfo->template end<Vertex>(), 0);
205 for(
int si = 0; si < domain.subset_handler()->
num_subsets(); ++si)
208 ElemIterator iter = m_uInfo->template begin<elem_type>(si);
209 ElemIterator iterEnd = m_uInfo->template end<elem_type>(si);
212 for( ;iter !=iterEnd; ++iter)
217 const size_t numVertices = elem->num_vertices();
221 for(
size_t i = 0; i < numVertices; ++i){
222 vVrt[i] = elem->vertex(i);
223 coCoord[i] = posAcc[vVrt[i]];
241 std::vector<number> vShape;
244 geo.
update(elem, &(coCoord[0]), domain.subset_handler().get());
246 rTrialSpace.
shapes(vShape, localBary);
248 size_t noc = elem->num_vertices();
253 for (
size_t co=0;co<noc;co++){
256 for (
int d=0;d<
dim;d++){
257 u->dof_indices(elem->vertex(co), d, multInd);
258 localValue[d]=
DoFRef(*u,multInd[0]);
262 localValue *= vShape[co];
264 elementVolume += scv.
volume();
267 value *= elementVolume;
268 for (
size_t co=0;co<noc;co++){
269 aaVol[elem->vertex(co)]+=elementVolume;
270 aaUHat[elem->vertex(co)] += value;
276 for(
int si = 0; si < domain.subset_handler()->num_subsets(); ++si)
280 for( ;vertexIter !=vertexIterEnd; vertexIter++)
282 Vertex* vertex = *vertexIter;
283 if (pbm && pbm->
is_slave(vertex))
continue;
284 aaUHat[vertex]/=(
number)aaVol[vertex];
290 template <
typename TData,
int dim,
typename TImpl,
typename TGr
idFunction>
291 template <
typename VType>
298 SetAttachmentValues(aaUHat , m_uInfo->template begin<Vertex>(), m_uInfo->template end<Vertex>(), 0);
299 SetAttachmentValues(aaVol , m_uInfo->template begin<Vertex>(), m_uInfo->template end<Vertex>(), 0);
310 for(
int si = 0; si < domain.subset_handler()->
num_subsets(); ++si)
313 ElemIterator iter = m_uInfo->template begin<elem_type>(si);
314 ElemIterator iterEnd = m_uInfo->template end<elem_type>(si);
317 for( ;iter !=iterEnd; ++iter)
322 const size_t numVertices = elem->num_vertices();
326 for(
size_t i = 0; i < numVertices; ++i){
327 vVrt[i] = elem->vertex(i);
328 coCoord[i] = posAcc[vVrt[i]];
346 geo.
update(elem, &(coCoord[0]), domain.subset_handler().get());
348 size_t noc = elem->num_vertices();
351 for (
size_t co=0;co<noc;co++){
357 scvLocalBary += scv->loal_corner(i);
361 std::vector<number> vShape;
362 rTrialSpace.
shapes(vShape, scvLocalBary);
363 VType localValue = 0;
365 for (
size_t j=0;j<noc;j++){
366 localValue += vShape[j]*aaU[elem->vertex(j)];
369 localValue *= scv.
volume();
370 aaVol[elem->vertex(co)] += scv.
volume();
371 aaUHat[elem->vertex(co)] += localValue;
377 for(
int si = 0; si < domain.subset_handler()->num_subsets(); ++si)
381 for( ;vertexIter !=vertexIterEnd; vertexIter++)
383 Vertex* vertex = *vertexIter;
384 if (pbm && pbm->
is_slave(vertex))
continue;
385 aaUHat[vertex]/=(
number)aaVol[vertex];
391 template <
typename TData,
int dim,
typename TImpl,
typename TGr
idFunction>
398 SetAttachmentValues(aaUHat , m_uInfo->template begin<Vertex>(), m_uInfo->template end<Vertex>(), 0);
399 SetAttachmentValues(aaVol , m_uInfo->template begin<Vertex>(), m_uInfo->template end<Vertex>(), 0);
410 std::vector<DoFIndex> multInd;
412 for(
int si = 0; si < domain.subset_handler()->
num_subsets(); ++si)
415 ElemIterator iter = m_uInfo->template begin<elem_type>(si);
416 ElemIterator iterEnd = m_uInfo->template end<elem_type>(si);
419 for( ;iter !=iterEnd; ++iter)
424 const size_t numVertices = elem->num_vertices();
428 for(
size_t i = 0; i < numVertices; ++i){
429 vVrt[i] = elem->vertex(i);
430 coCoord[i] = posAcc[vVrt[i]];
448 geo.
update(elem, &(coCoord[0]), domain.subset_handler().get());
450 size_t noc = elem->num_vertices();
452 static const size_t MaxNumVerticesOfElem = 10;
455 std::vector<MVD> uValue(MaxNumVerticesOfElem);
457 for (
size_t co=0;co<noc;co++){
458 for (
int d=0;d<
dim;d++){
459 u->dof_indices(elem->vertex(co), d, multInd);
460 uValue[co][d]=
DoFRef(*u,multInd[0]);
465 for (
size_t co=0;co<noc;co++){
474 std::vector<number> vShape;
475 rTrialSpace.
shapes(vShape, scvLocalBary);
478 for (
size_t j=0;j<noc;j++)
479 for (
int d=0;d<
dim;d++)
480 localValue += vShape[j]*uValue[j];
482 localValue *= scv.
volume();
483 aaVol[elem->vertex(co)] += scv.
volume();
484 aaUHat[elem->vertex(co)] += localValue;
490 for(
int si = 0; si < domain.subset_handler()->num_subsets(); ++si)
494 for( ;vertexIter !=vertexIterEnd; vertexIter++)
496 Vertex* vertex = *vertexIter;
497 if (pbm && pbm->
is_slave(vertex))
continue;
498 aaUHat[vertex]/=(
number)aaVol[vertex];
503 template <
typename TData,
int dim,
typename TImpl,
typename TGr
idFunction>
511 std::vector<DoFIndex> multInd;
516 for(
size_t i = 0; i < this->m_turbZeroSg.size(); ++i){
521 SetAttachmentValues(aaDefTensor , u->template begin<Vertex>(), u->template end<Vertex>(), 0);
532 for(
int si = 0; si < domain.subset_handler()->
num_subsets(); ++si){
538 for( ;iter !=iterEnd; ++iter)
543 const size_t numVertices = elem->num_vertices();
544 for(
size_t i = 0; i < numVertices; ++i){
545 vVrt[i] = elem->vertex(i);
546 coCoord[i] = posAcc[vVrt[i]];
550 geo.
update(elem, &(coCoord[0]), domain.subset_handler().get());
552 static const size_t MaxNumVerticesOfElem = 10;
555 std::vector<MVD> uValue(MaxNumVerticesOfElem);
558 size_t noc = elem->num_vertices();
562 for (
size_t co=0;co < noc;co++)
565 for (
int d=0;d<
dim;d++){
566 u->dof_indices(elem->vertex(co), d, multInd);
567 uValue[co][d]=
DoFRef(*u,multInd[0]);
569 aaVol[elem->vertex(co)] += scv.
volume();
572 for (
size_t ip=0;ip<nip;ip++){
576 for (
size_t co=0;co < noc;co++){
577 for (
int d=0;d<
dim;d++){
578 ipVelocity[d] += scvf.
shape(co)*uValue[co][d];
583 for (
int i=0;i<
dim;i++){
584 for (
int j=0;j<
dim;j++){
585 ipDefTensorFlux[i][j]= 0.5 * (ipVelocity[i] * scvf.
normal()[j] + ipVelocity[j] * scvf.
normal()[i]);
588 aaDefTensor[elem->vertex(scvf.
from())]+=ipDefTensorFlux;
589 aaDefTensor[elem->vertex(scvf.
to())]-=ipDefTensorFlux;
591 for(
size_t sgi = 0; sgi < this->m_turbZeroSg.size(); ++sgi){
592 const size_t sgsi=this->m_turbZeroSg[sgi];
593 if (geo.
num_bf(sgsi) == 0)
continue;
594 for(
size_t bfi = 0; bfi < geo.
num_bf(sgsi); ++bfi){
596 const size_t nodeID = bf.node_id();
597 for (
int i=0;i<
dim;i++)
598 for (
int j=0;j<
dim;j++){
599 aaDefTensor[elem->vertex(nodeID)][i][j] += 0.5 * (uValue[nodeID][i] * bf.normal()[j] + uValue[nodeID][j] * bf.normal()[i]);
606 for(
int si = 0; si < domain.subset_handler()->num_subsets(); ++si){
609 for( ;vertexIter !=vertexIterEnd; vertexIter++)
611 Vertex* vertex = *vertexIter;
612 if (pbm && pbm->
is_slave(vertex))
continue;
613 aaDefTensor[vertex]/=(
number)aaVol[vertex];
618 template <
typename TData,
int dim,
typename TImpl,
typename TGr
idFunction>
625 for(
int si = 0; si < domain.subset_handler()->num_subsets(); ++si){
628 for( ;vertexIter !=vertexIterEnd; vertexIter++)
630 Vertex* vertex = *vertexIter;
631 if (pbm && pbm->
is_slave(vertex))
continue;
632 aaTensor[vertex]*=(
number)FNorm(aaTensor[vertex]);
637 template <
typename TData,
int dim,
typename TImpl,
typename TGr
idFunction>
644 std::vector<DoFIndex> multInd;
649 for(
size_t i = 0; i < this->m_turbZeroSg.size(); ++i){
653 SetAttachmentValues(aaDefTensor , m_uInfo->template begin<Vertex>(), m_uInfo->template end<Vertex>(), 0);
654 SetAttachmentValues(aaVol , m_uInfo->template begin<Vertex>(), m_uInfo->template end<Vertex>(), 0);
664 for(
int si = 0; si < domain.subset_handler()->
num_subsets(); ++si){
666 ElemIterator iter = m_uInfo->template begin<elem_type>(si);
667 ElemIterator iterEnd = m_uInfo->template end<elem_type>(si);
672 for( ;iter !=iterEnd; ++iter)
677 const size_t numVertices = elem->num_vertices();
678 for(
size_t i = 0; i < numVertices; ++i){
679 vVrt[i] = elem->vertex(i);
680 coCoord[i] = posAcc[vVrt[i]];
685 geo.
update(elem, &(coCoord[0]), domain.subset_handler().get());
687 static const size_t MaxNumVerticesOfElem = 10;
690 std::vector<MVD> uValue(MaxNumVerticesOfElem);
693 UG_ASSERT(
dynamic_cast<elem_type*
>(elem) != NULL,
"Only elements of type elem_type are currently supported");
695 size_t noc = elem->num_vertices();
699 for (
size_t co=0;co < noc;co++)
702 uValue[co]=aaU[elem->vertex(co)];
704 aaVol[elem->vertex(co)] += scv.
volume();
707 for (
size_t ip=0;ip<nip;ip++){
711 for (
size_t co=0;co < noc;co++){
712 for (
int d=0;d<
dim;d++){
713 ipVelocity[d] += scvf.
shape(co)*uValue[co][d];
718 for (
int d=0;d<
dim;d++){
719 for (
int j=0;j<
dim;j++){
720 ipDefTensorFlux[d][j]= 0.5 * (ipVelocity[d] * scvf.
normal()[j] + ipVelocity[j] * scvf.
normal()[d]);
723 aaDefTensor[elem->vertex(scvf.
from())]+=ipDefTensorFlux;
724 aaDefTensor[elem->vertex(scvf.
to())]-=ipDefTensorFlux;
726 for(
size_t sgi = 0; sgi < this->m_turbZeroSg.size(); ++sgi){
727 const size_t sgsi=this->m_turbZeroSg[sgi];
728 if (geo.
num_bf(sgsi) == 0)
continue;
729 for(
size_t bfi = 0; bfi < geo.
num_bf(sgsi); ++bfi){
731 const size_t nodeID = bf.node_id();
732 for (
int i=0;i<
dim;i++)
733 for (
int j=0;j<
dim;j++){
734 aaDefTensor[elem->vertex(nodeID)][i][j] += 0.5 * (uValue[nodeID][i] * bf.normal()[j] + uValue[nodeID][j] * bf.normal()[i]);
741 for(
int si = 0; si < domain.subset_handler()->num_subsets(); ++si){
744 for( ;vertexIter !=vertexIterEnd; vertexIter++)
746 Vertex* vertex = *vertexIter;
747 if (pbm && pbm->
is_slave(vertex))
continue;
748 aaDefTensor[vertex]/=(
number)aaVol[vertex];
754 template <
typename TData,
int dim,
typename TImpl,
typename TGr
idFunction>
757 for (
int d1=0;d1<
dim;d1++)
758 for (
int d2=0;d2<
dim;d2++){
759 norm += M[d1][d2] * M[d1][d2];
761 return sqrt(2.0*norm);
764 template <
typename TData,
int dim,
typename TImpl,
typename TGr
idFunction>
770 for(
int si = 0; si < domain.subset_handler()->num_subsets(); ++si){
773 for( ;vertexIter !=vertexIterEnd; vertexIter++)
775 Vertex* vertex = *vertexIter;
776 if (pbm && pbm->
is_slave(vertex))
continue;
778 for (
int d1=0;d1 <
dim;d1++)
779 for (
int d2=0;d2 <
dim;d2++)
780 Tij[d1][d2] = aaU[vertex][d1]*aaU[vertex][d2];
782 aaResult[vertex]+=Tij;
787 template <
typename TData,
int dim,
typename TImpl,
typename TGr
idFunction>
794 std::vector<DoFIndex> multInd;
796 for(
int si = 0; si < domain.subset_handler()->num_subsets(); ++si){
799 for( ;vertexIter !=vertexIterEnd; vertexIter++)
801 Vertex* vertex = *vertexIter;
802 if (pbm && pbm->
is_slave(vertex))
continue;
805 for (
int d=0;d<
dim;d++){
806 u->dof_indices(vertex, d, multInd);
807 uValue[d]=
DoFRef(*u,multInd[0]);
809 for (
int d1=0;d1 <
dim;d1++)
810 for (
int d2=0;d2 <
dim;d2++)
811 Tij[d1][d2] = uValue[d1]*uValue[d2];
813 aaResult[vertex]+=Tij;
818 template<
typename TGr
idFunction>
822 SetAttachmentValues(m_acTurbulentViscosity, m_grid->template begin<Vertex>(), m_grid->template end<Vertex>(), 0);
829 this->assembleDeformationTensor(m_acDeformation,m_acVolume,m_u);
831 for(
int si = 0; si < domain.subset_handler()->
num_subsets(); ++si)
833 if ((this->m_turbZeroSg.size()!=0) && (this->m_turbZeroSg.contains(si)==
true))
continue;
836 for( ;vertexIter !=vertexIterEnd; vertexIter++)
839 Vertex* vertex = *vertexIter;
840 if (m_pbm && m_pbm->is_slave(vertex)){
843 number delta = m_acVolume[vertex];
846 number tensorNorm = this->FNorm(m_acDeformation[vertex]);
847 m_acTurbulentViscosity[vertex] = m_c * delta*delta * tensorNorm;
851 this->transferToLowerLevels(m_acTurbulentViscosity,*m_spApproxSpace);
854 template<
typename TGr
idFunction>
865 SetAttachmentValues(m_acTurbulentViscosity, m_grid->template begin<Vertex>(), m_grid->template end<Vertex>(), 0);
867 SetAttachmentValues(m_acTurbulentC,m_grid->template begin<Vertex>(), m_grid->template end<Vertex>(), 0);
872 SetAttachmentValues(m_acMij,m_grid->template begin<Vertex>(), m_grid->template end<Vertex>(), 0);
876 this->elementFilter(m_acUHat,m_acVolumeHat,m_u);
879 this->addUiUjTerm(m_acMij,1.0,m_u);
881 this->elementFilter(m_acLij,m_acVolumeHat,m_acMij);
883 this->addUiUjTerm(m_acLij,-1.0,m_acUHat);
888 this->assembleDeformationTensor(m_acDeformationHat,m_acVolume,m_acUHat);
890 this->scaleTensorByNorm(m_acDeformationHat);
893 this->assembleDeformationTensor(m_acDeformation,m_acVolumeHat,m_u);
895 this->scaleTensorByNorm(m_acDeformation);
898 this->elementFilter(m_acMij,m_acVolumeHat,m_acDeformation);
900 bool use_filter =
false;
903 std::vector<DoFIndex> multInd;
907 for(
int si = 0; si < domain.subset_handler()->
num_subsets(); ++si)
909 if (use_filter==
false)
910 if ((this->m_turbZeroSg.size()!=0) && (this->m_turbZeroSg.contains(si)==
true))
continue;
913 for( ;vertexIter !=vertexIterEnd; vertexIter++){
914 Vertex* vertex = *vertexIter;
915 if (m_pbm && m_pbm->is_slave(vertex))
continue;
917 number delta = m_acVolume[vertex];
919 number deltaHat = m_acVolumeHat[vertex];
921 m_u->dof_indices(vertex, 0, multInd);
922 m_u->dof_indices(vertex, 1, multInd);
923 m_acDeformationHat[vertex] *= -2*deltaHat*deltaHat;
924 m_acMij[vertex] *= 2*delta*delta;
925 m_acMij[vertex] += m_acDeformationHat[vertex];
927 for (
int d1=0;d1<
dim;d1++){
928 for (
int d2=0;d2<
dim;d2++){
934 for (
int d1=0;d1<
dim;d1++){
935 for (
int d2=0;d2<
dim;d2++){
943 for (
int d1=0;d1<
dim;d1++)
944 for (
int d2=0;d2<
dim;d2++)
945 c += m_acLij[vertex][d1][d2]*m_acMij[vertex][d1][d2];
948 for (
int d1=0;d1<
dim;d1++)
949 for (
int d2=0;d2<
dim;d2++)
950 denom += m_acMij[vertex][d1][d2]*m_acMij[vertex][d1][d2];
955 if (m_spaceFilter==
false){
956 if (m_timeFilter==
false){
957 m_acTurbulentViscosity[vertex] = c * delta*delta * this->FNorm(m_acDeformation[vertex]);
959 m_acTurbulentC[vertex]= (m_timeFilterEps * c + (1-m_timeFilterEps)*m_acTurbulentC[vertex]);
960 m_acTurbulentViscosity[vertex] = m_acTurbulentC[vertex] * delta*delta * this->FNorm(m_acDeformation[vertex]);
962 if (m_acTurbulentViscosity[vertex]+m_viscosityNumber<m_small) m_acTurbulentViscosity[vertex] = m_viscosityNumber + m_small; }
965 m_acTurbulentViscosity[vertex] = c;
969 if (m_spaceFilter==
true){
971 if (m_timeFilter==
false)
972 this->elementFilter(m_acTurbulentC,m_acVolumeHat,m_acTurbulentViscosity);
975 this->elementFilter(m_acVolumeHat,m_acVolumeHat,m_acTurbulentViscosity);
977 for(
int si = 0; si < domain.subset_handler()->
num_subsets(); ++si)
980 if ((this->m_turbZeroSg.size()!=0) && (this->m_turbZeroSg.contains(si)==
true))
continue;
983 for( ;vertexIter !=vertexIterEnd; vertexIter++){
984 Vertex* vertex = *vertexIter;
985 if (m_pbm && m_pbm->is_slave(vertex))
continue;
986 number delta = m_acVolume[vertex];
988 if (m_timeFilter==
true)
990 m_acTurbulentC[vertex]= (m_timeFilterEps * m_acVolumeHat[vertex] + (1-m_timeFilterEps)*m_acTurbulentC[vertex]);
991 m_acTurbulentViscosity[vertex] = m_acTurbulentC[vertex] * delta*delta * this->FNorm(m_acDeformation[vertex]);
992 if (m_acTurbulentViscosity[vertex]+m_viscosityNumber<m_small) m_acTurbulentViscosity[vertex] = m_viscosityNumber+m_small;
function NavierStokes(fcts, subsets, discType)
SmartPtr< TDomain > domain()
const MathVector< worldDim > & normal() const
number shape(size_t sh) const
const MathVector< dim > & local_corner(size_t co) const
size_t num_corners() const
const std::vector< BF > & bf(int si) const
const SCVF & scvf(size_t i) const
const SCV & scv(size_t i) const
void update(GridObject *elem, const MathVector< worldDim > *vCornerCoords, const ISubsetHandler *ish=NULL)
void add_boundary_subset(int subsetIndex)
virtual void global_to_local(MathVector< dim > &locPos, const MathVector< worldDim > &globPos, const size_t maxIter=1000, const number tol=1e-10) const=0
SmartPtr< MultiGrid > multi_grid()
size_t num_levels() const
SmartPtr< DoFDistribution > dof_distribution(const GridLevel &gl, bool bCreate=true)
virtual void shapes(std::vector< std::vector< shape_type > > &vvShape, const std::vector< MathVector< dim > > &vLocPos) const=0
void update()
Definition: turbulent_viscosity_fv1_impl.h:855
TGridFunction::domain_type domain_type
domain type
Definition: turbulent_viscosity_fv1.h:393
TGridFunction::template traits< Vertex >::const_iterator VertexIterator
vertex iterator
Definition: turbulent_viscosity_fv1.h:414
TGridFunction::domain_type domain_type
domain type
Definition: turbulent_viscosity_fv1.h:205
void update()
Definition: turbulent_viscosity_fv1_impl.h:819
TGridFunction::template traits< Vertex >::const_iterator VertexIterator
vertex iterator
Definition: turbulent_viscosity_fv1.h:226
domain_type::position_accessor_type position_accessor_type
position accessor type
Definition: turbulent_viscosity_fv1.h:70
void fillAttachment(aVertexDimVector &aaU, SmartPtr< TGridFunction > u)
Definition: turbulent_viscosity_fv1_impl.h:63
void addUiUjTerm(aVertexTensor &aaDefTensor, const number factor, aVertexDimVector aaU)
Definition: turbulent_viscosity_fv1_impl.h:765
void transferToLowerLevels(aVertexNumber &aaData, ApproximationSpace< domain_type > &approximationSpace)
Definition: turbulent_viscosity_fv1_impl.h:43
void assembleDeformationTensor(aVertexTensor &aaDefTensor, aVertexNumber &aaVol, SmartPtr< TGridFunction > u)
Definition: turbulent_viscosity_fv1_impl.h:504
number FNorm(MathMatrix< dim, dim > M)
Definition: turbulent_viscosity_fv1_impl.h:755
TGridFunction::domain_type domain_type
domain type
Definition: turbulent_viscosity_fv1.h:64
void elementFilter(PeriodicAttachmentAccessor< Vertex, Attachment< VType > > &aaUHat, aVertexNumber &aaVol, const PeriodicAttachmentAccessor< Vertex, Attachment< VType > > &aaU)
Definition: turbulent_viscosity_fv1_impl.h:85
void scaleTensorByNorm(aVertexTensor &aaTensor)
Definition: turbulent_viscosity_fv1_impl.h:619
void scvFilter(PeriodicAttachmentAccessor< Vertex, Attachment< VType > > &aaUHat, aVertexNumber &aaVol, const PeriodicAttachmentAccessor< Vertex, Attachment< VType > > &aaU)
Definition: turbulent_viscosity_fv1_impl.h:292
TGridFunction::template dim_traits< dim >::const_iterator ElemIterator
element iterator
Definition: turbulent_viscosity_fv1.h:79
TGridFunction::template dim_traits< dim >::grid_base_object elem_type
element type
Definition: turbulent_viscosity_fv1.h:76
TGridFunction::template traits< Vertex >::const_iterator VertexIterator
vertex iterator
Definition: turbulent_viscosity_fv1.h:82
bool is_slave(TElem *) const
Grid::VertexAttachmentAccessor< position_attachment_type > position_accessor_type
SmartPtr< TSubsetHandler > subset_handler()
size_t num_subsets() const
void SetAttachmentValues(TAttachmentAccessor &aaVal, TIter elemsBegin, TIter elemsEnd, const TVal &val)
#define UG_ASSERT(expr, msg)
const number & DoFRef(const TMatrix &mat, const DoFIndex &iInd, const DoFIndex &jInd)
SurfaceView::traits< TElem >::const_iterator const_iterator