/usr/include/ug/fegeom.h is in libug-dev 3.11.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 | // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
// vi: set et ts=4 sw=2 sts=2:
/****************************************************************************/
/* */
/* File: fegeom.h */
/* */
/* Purpose: Finite--Element geometry related data */
/* dimension independent, general elmement */
/* */
/* Author: Peter Bastian */
/* Institut fuer Computeranwendungen III */
/* Universitaet Stuttgart */
/* Pfaffenwaldring 27 */
/* 70569 Stuttgart */
/* email: peter@ica3.uni-stuttgart.de */
/* fon: 0049-(0)711-685-7003 */
/* fax: 0049-(0)711-685-7000 */
/* */
/* History: 06.05.96 begin, ug version 3.2 */
/* 02.07.96 begin, adapted from FV to FE */
/* */
/* Remarks: */
/* */
/****************************************************************************/
/* RCS_ID
$Header$
*/
/****************************************************************************/
/* */
/* include files */
/* system include files */
/* application include files */
/* */
/****************************************************************************/
#ifndef __FEGEOM__
#define __FEGEOM__
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include "ugdevices.h"
#include "enrol.h"
#include "ugtypes.h"
#include "misc.h"
#include "gm.h"
#include "ugenv.h"
#include "ugm.h"
#include "algebra.h"
#include "cmdint.h"
#include "commands.h"
#include "helpmsg.h"
#include "evm.h"
#include "domain.h"
#include "quadrature.h"
#include "namespace.h"
START_UGDIM_NAMESPACE
#ifndef MAXNC
#define MAXNC MAX_CORNERS_OF_ELEM /* just to make it more readable*/
#endif
#define MAXCON (MAXNC*(MAXNC-1))/2 /* need also internal edges ! */
#ifndef MAXS
#define MAXS MAX_SIDES_OF_ELEM /* just to make it more readable*/
#endif
#define MAXGP MAX_INT_POINTS
/****************************************************************************/
/* */
/* definition of exported data structures */
/* */
/****************************************************************************/
typedef struct {
DOUBLE weight; /* weight for that gauss point */
DOUBLE local[DIM]; /* position of gp in local coordinates */
DOUBLE N[MAXNC]; /* value of basis functions at gp */
DOUBLE gradN[MAXNC][DIM]; /* grad of basis functions at gp */
DOUBLE Jinv[DIM][DIM]; /* inverse of Jacobian of trafo at gp */
DOUBLE AbsdetJ; /* determinant of jacobian of trafo gp */
} GaussPoint;
typedef struct {
INT i,j; /* edge between node i and j */
DOUBLE edge[DIM]; /* edge vector pointing from i to j */
DOUBLE local[DIM]; /* mid point in local coords */
DOUBLE Jinv[DIM][DIM]; /* inverse of Jacobian of trafo at em */
DOUBLE detJ; /* determinant of jacobian of trafo em */
} Edge;
typedef struct {
DOUBLE weight; /* weight for gauss points */
DOUBLE local[DIM]; /* local coordinates of gauss point */
DOUBLE param[DIM]; /* parameter for bgp on patch */
DOUBLE surfel; /* surface element at gauss point */
DOUBLE N[MAXNC]; /* basis function of corner at bgp */
} BoundaryGaussPoint;
typedef struct {
INT side; /* side id */
INT nc; /* number of corners */
INT corners[MAXNC]; /* at most four corners... */
INT nbgp; /* number of boundary gauss points */
BoundaryGaussPoint bgp[MAXGP]; /* boundary gauss points of this side */
} BoundarySide;
typedef struct {
ELEMENT *e; /* data for this element */
INT tag; /* element type */
INT nc; /* number of corners */
INT ngp; /* number of Gauss points in quadrature */
INT ned; /* number of edges including internal */
INT nbs; /* number of boundary sides */
DOUBLE co_global[MAXNC][DIM]; /* points in global space, corners */
DOUBLE co_local[MAXNC][DIM]; /* points in local space, corners */
INT node_property[MAXNC]; /* subdomain info for corner */
GaussPoint gp[MAXGP]; /* quantities at gauss points */
Edge ed[MAXCON]; /* quantities on edges */
BoundarySide bs[MAXS]; /* element sides on domain boundary */
} FEElementGeometry; /* geometry data for a general element */
/****************************************************************************/
/* */
/* definition of exported functions */
/* */
/****************************************************************************/
INT EvaluateFEGeometry (ELEMENT *e, FEElementGeometry *geo);
END_UGDIM_NAMESPACE
#endif
|