<commit_before>//---------------------------------------------------------------------------
//    $Id$
//    Version: $Name$
//
//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 by the deal.II authors
//
//    This file is subject to QPL and may not be  distributed
//    without copyright and license information. Please refer
//    to the file deal.II/doc/license.html for the  text  and
//    further information on this license.
//
//---------------------------------------------------------------------------
#ifndef __deal2__geometry_info_h
#define __deal2__geometry_info_h


#include <base/config.h>
#include <base/exceptions.h>
#include <base/point.h>


template <int dim> class GeometryInfo;



/**
 * Dimension independent base class for the <tt>GeometryInfo<dim></tt>
 * classes with <tt>dim=1,2,3,4</tt>. Includes all data and methods
 * which can be defined in an dimension indendent way.
 *
 * @ingroup grid geomprimitives
 * @author <NAME>, 2005
 */
class GeometryInfoBase
{
  private:
				     /**
				      * The maximal dimension for
				      * which data in this class is
				      * implemented.
				      */
    static const unsigned int max_dim = 4;

				     /**
				      * Number of faces of a cell for
				      * <tt>dim=max_dim</tt>.
				      */
    static const unsigned int faces_per_cell_max_dim = 2*max_dim;

  public:
        
				     /**
				      * For each face of the reference
				      * cell, this field stores the
				      * coordinate direction in which
				      * its normal vector points. In
				      * <tt>dim</tt> dimension these
				      * are the <tt>2*dim</tt> first
				      * entries of
				      * <tt>{0,0,1,1,2,2,3,3}</tt>.
				      *
				      * Remark that this is only the
				      * coordinate number. The actual
				      * direction of the normal vector
				      * is obtained by multiplying the
				      * unit vector in this direction
				      * with #unit_normal_orientation.
				      */
    static const unsigned int unit_normal_direction[faces_per_cell_max_dim];

				     /**
				      * Orientation of the unit normal
				      * vector of a face of the
				      * reference cell. In
				      * <tt>dim</tt> dimension these
				      * are the <tt>2*dim</tt> first
				      * entries of
				      * <tt>{-1,1,-1,1,-1,1,-1,1}</tt>.
				      *
				      * Each value is either
				      * <tt>1</tt> or <tt>-1</tt>,
				      * corresponding to a normal
				      * vector pointing in the
				      * positive or negative
				      * coordinate direction,
				      * respectively.
				      */
    static const int unit_normal_orientation[faces_per_cell_max_dim];

				     /**
				      * List of numbers which denotes
				      * which face is opposite to a
				      * given face. Its entries are<commit_msg>Add a link from unit_normal_orientation to the glossary entry on face normals.<commit_after>//---------------------------------------------------------------------------
//    $Id$
//    Version: $Name$
//
//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 by the deal.II authors
//
//    This file is subject to QPL and may not be  distributed
//    without copyright and license information. Please refer
//    to the file deal.II/doc/license.html for the  text  and
//    further information on this license.
//
//---------------------------------------------------------------------------
#ifndef __deal2__geometry_info_h
#define __deal2__geometry_info_h


#include <base/config.h>
#include <base/exceptions.h>
#include <base/point.h>


template <int dim> class GeometryInfo;



/**
 * Dimension independent base class for the <tt>GeometryInfo<dim></tt>
 * classes with <tt>dim=1,2,3,4</tt>. Includes all data and methods
 * which can be defined in an dimension indendent way.
 *
 * @ingroup grid geomprimitives
 * @author <NAME>, 2005
 */
class GeometryInfoBase
{
  private:
				     /**
				      * The maximal dimension for
				      * which data in this class is
				      * implemented.
				      */
    static const unsigned int max_dim = 4;

				     /**
				      * Number of faces of a cell for
				      * <tt>dim=max_dim</tt>.
				      */
    static const unsigned int faces_per_cell_max_dim = 2*max_dim;

  public:
        
				     /**
				      * For each face of the reference
				      * cell, this field stores the
				      * coordinate direction in which
				      * its normal vector points. In
				      * <tt>dim</tt> dimension these
				      * are the <tt>2*dim</tt> first
				      * entries of
				      * <tt>{0,0,1,1,2,2,3,3}</tt>.
				      *
				      * Remark that this is only the
				      * coordinate number. The actual
				      * direction of the normal vector
				      * is obtained by multiplying the
				      * unit vector in this direction
				      * with #unit_normal_orientation.
				      */
    static const unsigned int unit_normal_direction[faces_per_cell_max_dim];

				     /**
				      * Orientation of the unit normal
				      * vector of a face of the
				      * reference cell. In
				      * <tt>dim</tt> dimension these
				      * are the <tt>2*dim</tt> first
				      * entries of
				      * <tt>{-1,1,-1,1,-1,1,-1,1}</tt>.
				      *
				      * Each value is either
				      * <tt>1</tt> or <tt>-1</tt>,
				      * corresponding to a normal
				      * vector pointing in the
				      * positive or negative
				      * coordinate direction,
				      * respectively.
				      *
				      * Note that this is only the
				      * <em>standard orientation</em>
				      * of faces. At least in 3d,
				      * actual faces of cells in a
				      * triangulation can also have
				      * the opposite orientation,
				      * depending on a flag that one
				      * can query from the cell it
				      * belongs to. For more
				      * information, see the
				      * @ref GlossFaceOrientation "glossary"
				      * entry on
				      * face orientation.
				      */
    static const int unit_normal_orientation[faces_per_cell_max_dim];

				     /**
				      * List of numbers which denotes
				      * which face is opposite to a
				      * given face. Its entries are
{'fraction_non_alphanumeric': 0.13796998547684364, 'fraction_numerical': 0.022107471357108277, 'mean_word_length': 1.58465387823186, 'pattern_counts': {'":': 0, '<': 61, '<?xml version=': 0, '>': 61, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4811362', 'n_tokens_mistral': 2188, 'n_tokens_neox': 1626, 'n_words': 577}