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
|
// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
// vi: set et ts=4 sw=2 sts=2:
/** \defgroup std The Standard Domain
* \ingroup dom
*/
/*! \file std_domain.h
* \ingroup std
*/
/** \addtogroup std
*
* @{
*/
/****************************************************************************/
/* */
/* File: std_domain.h */
/* */
/* Purpose: standard domain declaration */
/* */
/* Author: Peter Bastian/Klaus Johannsen */
/* Institut fuer Computeranwendungen III */
/* Universitaet Stuttgart */
/* Pfaffenwaldring 27 */
/* 70550 Stuttgart */
/* email: ug@ica3.uni-stuttgart.de */
/* */
/* History: 29.01.92 begin, ug version 2.0 */
/* */
/* Remarks: */
/* */
/****************************************************************************/
/****************************************************************************/
/* */
/* auto include mechanism and other include files */
/* */
/****************************************************************************/
#ifndef __STD_DOMAIN__
#define __STD_DOMAIN__
#include "domain.h"
#include "dimension.h"
#include "namespace.h"
START_UGDIM_NAMESPACE
#undef CORNERS_OF_BND_SEG
#define CORNERS_OF_BND_SEG 2*DIM_OF_BND
/** \todo Please doc me! */
typedef struct {
/** \brief Table subdomain to part */
const INT *sd2part;
/** \brief Table segment to part */
const INT *sg2part;
# ifdef __THREEDIM__
/** \brief Table line to part */
const INT **ln2part;
# endif
/** \brief Table point to part */
const INT *pt2part;
} DOMAIN_PART_INFO;
/*----------- typedef for functions ----------------------------------------*/
/** \brief ???
*
* \todo Please doc me!
*/
typedef INT (*BndSegFuncPtr)(void *,DOUBLE *,DOUBLE *);
/** \brief ???
*
* \todo Please doc me!
*/
typedef INT (*BndCondProcPtr)(void *, void *, DOUBLE *, DOUBLE *, INT *);
/* --- public functions --- */
/* domain definition */
void *CreateDomainWithParts (const char *name,
INT segments,
INT corners,
INT nParts, const DOMAIN_PART_INFO *dpi);
void *CreateDomain (const char *name,
INT segments,
INT corners);
void RemoveDomain(const char* name);
void *CreateBoundarySegment (const char *name, INT left, INT right,
INT id, enum BoundaryType type,
const INT *point,
const DOUBLE *alpha, const DOUBLE *beta,
BndSegFuncPtr BndSegFunc,
void *data);
void *CreateLinearSegment (const char *name,
INT left, INT right,INT id,
INT n, const INT *point,
DOUBLE x[CORNERS_OF_BND_SEG][DIM]);
/** \brief Access the id of the segment (used by DUNE) */
UINT GetBoundarySegmentId(BNDS* boundarySegment);
/* problem definition */
void *CreateProblem (const char *domain, const char *name,
int id, ConfigProcPtr config,
int numOfCoefficients,
CoeffProcPtr coeffs[],
int numOfUserFct,
UserProcPtr userfct[]);
BVP *CreateBoundaryValueProblem (const char *BVPname, BndCondProcPtr theBndCond,
int numOfCoeffFct, CoeffProcPtr coeffs[],
int numOfUserFct, UserProcPtr userfct[]);
BVP *CreateBVP (const char *BVP, const char *Domain, const char *Problem);
const char *GetBVP_DomainName (const BVP *aBVP);
const char *GetBVP_ProblemName (const BVP *aBVP);
BVP *CreateBVP_Problem (const char *BVPName, const char *DomainName, const char *ProblemName);
END_UGDIM_NAMESPACE
/** @} */
#endif
|