File: mesh.h

package info (click to toggle)
felt 3.06-9
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 17,512 kB
  • ctags: 7,946
  • sloc: ansic: 85,476; fortran: 3,614; yacc: 2,803; lex: 1,178; makefile: 305; sh: 302
file content (90 lines) | stat: -rw-r--r-- 3,668 bytes parent folder | download | duplicates (2)
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
/*
    This file is part of the FElt finite element analysis package.
    Copyright (C) 1993-2000 Jason I. Gobat and Darren C. Atkinson

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

/************************************************************************
 * File:	mesh.h							*
 *									*
 * Description:	This file contains the the public function and type	*
 *		declarations for the element generation routines.	*
 ************************************************************************/

# ifndef _MESH_H
# define _MESH_H
# include "fe.h"


typedef enum {
    LinearRule, 
    CosRule, SinRule, 
    LogRule, RevLogRule,
    ParabolicRule, RevParabolicRule, 
} Rule;

typedef struct _curve {
   unsigned	numvc;
   double	(*vcl) [2];
} *Curve;

typedef struct _trimesh {
   Definition	definition;	/* element definition			    */
   int		target;		/* target number to generate		    */
   double       alpha;          /* elt area constraint is alpha*Atot/target */
   unsigned	numcurves;	/* number of curves (first is boundary)	    */
   Curve	*curves; 	/* array of curve structures		    */
} *TriMesh;

typedef struct _line {
   Definition	definition;	/* element definition			*/
   double	xs,ys,zs;	/* starting coordinate			*/
   double	xe,ye,ze;	/* ending coordinate			*/
   unsigned	number;		/* number of lines			*/
   Rule		rule;		/* scale rule				*/
} *Line;

typedef struct _grid {
   Definition	definition;	/* element definition			*/
   double	xs,ys,zs;	/* starting coordinate			*/
   double	xe,ye,ze;	/* ending coordinate			*/
   unsigned	xnumber;	/* number of segments along x-axis	*/
   unsigned	ynumber;	/* number of segments along y-axis	*/
   unsigned	znumber;	/* number of segments along z-axis	*/
   Rule		xrule;		/* scale rule for x-axis		*/
   Rule		yrule;		/* scale rule for y-axis		*/
   Rule		zrule;		/* scale rule for z-axis		*/
} *Grid;

extern Node    *CoalesceNodes     PROTO ((Node *, Element *, 
                                          unsigned *, unsigned));
extern unsigned GenerateLine	  PROTO ((Line, Element **, Node **,
                                          unsigned *, unsigned *,
                                          unsigned, unsigned));
extern unsigned GenerateGrid	  PROTO ((Grid, Element **, Node **,
                                          unsigned *, unsigned *,
                                          unsigned, unsigned));
extern unsigned GenerateQuadGrid  PROTO ((Grid, Element **, Node **,
                                          unsigned *, unsigned *,
                                          unsigned, unsigned));
extern unsigned GenerateBrickGrid PROTO ((Grid, Element **, Node **,
                                          unsigned *, unsigned *,
                                          unsigned, unsigned));
extern unsigned GenerateTriMesh	  PROTO ((TriMesh, Element **, Node **,
                                          unsigned *, unsigned *,
                                          unsigned, unsigned));

# endif /* _MESH_H */