LCOV - code coverage report
Current view: top level - ugbase/lib_disc/function_spaces - dof_position_util.h (source / functions) Coverage Total Hit
Test: coverage.info Lines: 0.0 % 5 0
Test Date: 2025-09-21 23:31:46 Functions: 0.0 % 18 0

            Line data    Source code
       1              : /*
       2              :  * Copyright (c) 2012-2015:  G-CSC, Goethe University Frankfurt
       3              :  * Author: Andreas Vogel
       4              :  * 
       5              :  * This file is part of UG4.
       6              :  * 
       7              :  * UG4 is free software: you can redistribute it and/or modify it under the
       8              :  * terms of the GNU Lesser General Public License version 3 (as published by the
       9              :  * Free Software Foundation) with the following additional attribution
      10              :  * requirements (according to LGPL/GPL v3 §7):
      11              :  * 
      12              :  * (1) The following notice must be displayed in the Appropriate Legal Notices
      13              :  * of covered and combined works: "Based on UG4 (www.ug4.org/license)".
      14              :  * 
      15              :  * (2) The following notice must be displayed at a prominent place in the
      16              :  * terminal output of covered works: "Based on UG4 (www.ug4.org/license)".
      17              :  * 
      18              :  * (3) The following bibliography is recommended for citation and must be
      19              :  * preserved in all covered files:
      20              :  * "Reiter, S., Vogel, A., Heppner, I., Rupp, M., and Wittum, G. A massively
      21              :  *   parallel geometric multigrid solver on hierarchically distributed grids.
      22              :  *   Computing and visualization in science 16, 4 (2013), 151-164"
      23              :  * "Vogel, A., Reiter, S., Rupp, M., Nägel, A., and Wittum, G. UG4 -- a novel
      24              :  *   flexible software system for simulating pde based models on high performance
      25              :  *   computers. Computing and visualization in science 16, 4 (2013), 165-179"
      26              :  * 
      27              :  * This program is distributed in the hope that it will be useful,
      28              :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      29              :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
      30              :  * GNU Lesser General Public License for more details.
      31              :  */
      32              : 
      33              : #ifndef __H__UG__LIB_DISC__FUNCTION_SPACE__DOF_POSITION_UTIL__
      34              : #define __H__UG__LIB_DISC__FUNCTION_SPACE__DOF_POSITION_UTIL__
      35              : 
      36              : #include "common/common.h"
      37              : #include "common/math/ugmath.h"
      38              : #include "common/util/smart_pointer.h"
      39              : #include "lib_disc/dof_manager/dof_distribution.h"
      40              : 
      41              : namespace ug {
      42              : 
      43              : 
      44              : /**
      45              :  * Returns the global DoF position on an element.
      46              :  */
      47              : ///�\{
      48              : template <int dim>
      49              : bool InnerDoFPosition(std::vector<MathVector<dim> >& vPos, const ReferenceObjectID roid,
      50              :                       const std::vector<MathVector<dim> >& vCornerCoord, const LFEID& lfeID);
      51              : 
      52              : 
      53              : template <typename TDomain>
      54              : bool InnerDoFPosition(std::vector<MathVector<TDomain::dim> >& vPos,
      55              :                       GridObject* elem, const TDomain& domain, const LFEID& lfeID);
      56              : /// \}
      57              : 
      58              : /**
      59              :  * Returns the global DoF position on an element.
      60              :  */
      61              : ///�\{
      62              : template <int dim>
      63              : bool DoFPosition(std::vector<MathVector<dim> >& vPos, const ReferenceObjectID roid,
      64              :                  const std::vector<MathVector<dim> >& vCornerCoord, const LFEID& lfeID);
      65              : 
      66              : template <typename TDomain>
      67              : bool DoFPosition(std::vector<MathVector<TDomain::dim> >& vPos,
      68              :                  GridObject* elem, const TDomain& domain, const LFEID& lfeID);
      69              : /// \}
      70              : 
      71              : /**
      72              :  * returns the shape function values at given global positions on an element
      73              :  */
      74              : /// \{
      75              : template <int dim>
      76              : void ShapesAtGlobalPosition(std::vector<std::vector<number> >& vvShape,
      77              :                            const std::vector<MathVector<dim> >& vGlobPos,
      78              :                            const ReferenceObjectID roid,
      79              :                            const std::vector<MathVector<dim> >& vCornerCoord,
      80              :                            const LFEID& lfeID);
      81              : template <typename TDomain>
      82              : void ShapesAtGlobalPosition(std::vector<std::vector<number> >& vvShape,
      83              :                            const std::vector<MathVector<TDomain::dim> >& vGlobPos,
      84              :                            GridObject* elem, const TDomain& domain, const LFEID& lfeID);
      85              : /// \}
      86              : 
      87              : /**
      88              :  * extracts the positions of the degrees of freedom and stores them into the
      89              :  * passed vector at the position of the algebraic index corresponding to the
      90              :  * degree of freedom.
      91              :  *
      92              :  * @param domain                the underlying domain
      93              :  * @param dd                    the dof distribution
      94              :  * @param vPos                  the array of positions (to be filled)
      95              :  */
      96              : template<typename TDomain>
      97              : void ExtractPositions(ConstSmartPtr<TDomain> domain, ConstSmartPtr<DoFDistribution> dd,
      98              :                       std::vector<MathVector<TDomain::dim> >& vPos);
      99              : 
     100              : /**
     101              :  * extracts the positions of the degrees of freedom and stores them into the
     102              :  * passed vector at the position of the algebraic index corresponding to the
     103              :  * degree of freedom.
     104              :  *
     105              :  * @param u                             the underlying grid function
     106              :  * @param vPos                  the array of positions (to be filled)
     107              :  */
     108              : template<typename TFunction>
     109            0 : void ExtractPositions(const TFunction &u,
     110              :                       std::vector<MathVector<TFunction::domain_type::dim> >& vPos)
     111              : {
     112            0 :         ExtractPositions(u.domain(),u.dof_distribution(), vPos);
     113            0 : }
     114              : 
     115              : /**
     116              :  * extracts the positions of the degrees of freedom and stores them together with
     117              :  * the index in a std::pair into the passed vector at the position of the
     118              :  * algebraic index corresponding to the degree of freedom.
     119              :  *
     120              :  * @param domain                the underlying domain
     121              :  * @param dd                    the dof distribution
     122              :  * @param vPos                  the array of positions (to be filled)
     123              :  */
     124              : template <typename TDomain>
     125              : void ExtractPositions(ConstSmartPtr<TDomain> domain,
     126              :                       ConstSmartPtr<DoFDistribution> dd,
     127              :                       std::vector<std::pair<MathVector<TDomain::dim>, size_t> >& vPosPair);
     128              : 
     129              : /**
     130              :  * extracts the positions of the degrees of freedom of a component
     131              :  * and stores them together with the index in a std::pair into the passed
     132              :  * vector at the position of the algebraic index corresponding to the degree of
     133              :  * freedom.
     134              :  *
     135              :  * @param domain                the underlying domain
     136              :  * @param dd                    the dof distribution
     137              :  * @param fct                   the component of the trial space
     138              :  * @param vPos                  the array of positions (to be filled)
     139              :  */
     140              : template <typename TDomain>
     141              : void ExtractPositions(ConstSmartPtr<TDomain> domain,
     142              :                       ConstSmartPtr<DoFDistribution> dd,
     143              :                       const size_t fct,
     144              :                       std::vector<std::pair<MathVector<TDomain::dim>, size_t> >& vPosPair);
     145              : 
     146              : /**
     147              :  * Checks that DoF Positions equal wheather they are extracted by a macroelement
     148              :  * or a subelement.
     149              :  */
     150              : /// \{
     151              : template<typename TDomain>
     152              : bool CheckDoFPositions(ConstSmartPtr<TDomain> domain, ConstSmartPtr<DoFDistribution> dd);
     153              : 
     154              : template<typename TFunction>
     155            0 : bool CheckDoFPositions(const TFunction &u)
     156              : {
     157            0 :         return CheckDoFPositions(u.domain(),u.dof_distribution());
     158              : }
     159              : 
     160              : template <typename TDomain>
     161              : void ExtractAlgebraIndices(ConstSmartPtr<TDomain> domain,
     162              :                       ConstSmartPtr<DoFDistribution> dd,
     163              :                       std::vector<size_t> &fctIndex);
     164              : /// \}
     165              : } // end namespace ug
     166              : 
     167              : #endif /* __H__UG__LIB_DISC__FUNCTION_SPACE__DOF_POSITION_UTIL__ */
        

Generated by: LCOV version 2.0-1