Previous Next Up Title Contents General Index Functions Index Bookshelf

4. TRAITEMENT DE MAILLAGES 2D


Ce chapitre présente un ensemble de fonction permettant la visualisation de données sur les types de maillage 2D suivants :

- maillage rectangulaire

- maillage quadrangulaire

- maillage polaire

- maillage secteur

- maillage triangulaire

- maillage triangulaire non structuré

- maillage quadrangulaire non structuré

- maillage polygonal hétérogène

Chacun de ces maillage est décrit par une structure décrivant sa géométrie (structure C de type Tmesh2D), par ses données scalaires 2D (structures C de type Tscalar2D_data) et par ses données vectorielles 2D (structures C de type Tvec2D_data). Une fonction PHIGURE de représentation de données scalaires d'un maillage 2D se présente ainsi sous la forme suivante :

txxxxx (struct_id, &mesh, &scal_data1, &scal_data2, ...)

xxxxx est le nom de la fonction PHIGURE

struct_id : est l'identificateur de la structure PHIGS (à intégrer dans la liste des structures de la fonction tscene si la structure doit être visualisée)

&mesh est l'adresse de la structure C décrivant la géométrie du maillage

&scal_data1 est l'adresse du premier jeu de données sur le maillage

&scal_data2 est l'adresse du deuxième jeu de données sur le maillage ...

Description du type des structures C mesh:

typedef struct {

	Tmesh2D_type	type;

	union {

		struct {
			Pint	num_x;
			Pint	num_y;
			Pfloat	*x;
			Pfloat	*y;
		} rectangular;
		struct {
			Pint	num_x;
			Pint	num_y;
			Pfloat	**x;
			Pfloat	**y;
		} quadrangular;


		struct {
			Pint	num_r;
			Pint	num_t;
			Pfloat	*r;
			Pfloat	*t;
		} polar;

		struct {
			Pint	num_r;
			Pint	num_t;
			Pfloat	*r;
			Pfloat	*t
		} sector;

		struct {
			Pint	num_triangles;
			Pint	num_edges;
			Pint	num_vertices;
			Pint	*triangle_edge[3];
			Pint	*edge_owner[2
			Pint	*edge_vertex[2];
			Ppoint	*vertex;
		} triangular;

		struct {
			Pint	num_triangles;
			Pint	num_nodes;
			Ttriangle_ind	*triangle_nodes;
			Ppoint	*nodes;
		} ns_triangles;

		struct {
			Pint	num_ quadrangles;
			Pint	num_nodes;
			Ttriangle_ind	*quadrangle_nodes;
			Ppoint	*nodes;
		} ns_quadrangles;

		struct {
			Pint	num_ elems;
			Pint	num_nodes;
			Pint_list	*elem_nodes;
			Ppoint	*nodes;
		} ns_non_homo_2D;
	}geometry;
}Tmesh2D
le champ type représente le type de géométrie du maillage :
typedef enum {
	TRECTANGULAR_MESH,
	TQUADRANGULAR_MESH,
	TPOLAR_MESH,
	TTRIANGULAR_MESH,
	TSECTOR_MESH,
	TNS_OF_TRIANGLES,
	TNS_OF_QUADRANGLES,
	TNS_MESH_NON_HOMO_2D
} Tmesh2D_type;

vertex et nodes représentent un noeud du maillage :
typedef struct {
	Pfloat	x;
	Pfloat	y;
} Ppoint;

Triangle_ind est un tableau contenant les 3 indices des noeuds d'un triangle:

typedef Pint Triangle_ind[3];

Tquadrangle_ind est un tableau contenant les 4 indices des noeuds d'un quadrangle:

typedef Pint Tquadrangle_ind[4];

Description du type des structures C scal_data:

typedef union {

	struct {
		Pfloat	**s;	
	} rectangular;

	struct {
		Pfloat	**s;
	} quadrangular;

	struct {
		Pfloat	**s;
		Pfloat	so;
	} polar;

	struct {
		Ppoint	*s;
	} triangular;

	struct {
		Pfloat	**s;
	} sector;

	struct {
		Pfloat	*s;
	} ns_triangles;

	struct {
		Pfloat	*s;
	} ns_quadrangles;

	struct {
		Pfloat	*s;
	} ns_non_homo_2D;

} Tscalar2D_data;
Description du type des structures C vector_data:

typedef union {
	struct {
		Pvec	**v;
	} rectangular;

	struct {
		Pvec	**v;
	} quadrangular;

	struct {
		Pvec	**v;
		Pvec	vo;
	} polar;

	struct {
		Pvec	*v;
	} triangular;

	struct {
		Pvec	**v;
	} sector;

	struct {
		Pvec	*v;
	} ns_triangles;

	struct {
		Pvec	*v;
	} ns_quadrangles;

	struct {
		Pvec	*v;
	} ns_non_homo_2D;

} Tvec2D_data

où Pvec est le type vecteur de PHIGURE :
typedef struct {
	Pfloat	delta_x;
	Pfloat	delta_y;
} Pvec;

Les champs des structures de type "double pointeur" (**s, **x, **y, ou **v) peuvent être alloués par les utilitaires talloc_float_matrix et talloc_vec_matrix, et libérés par les utilitaires tfree_float_matrix et tfree_vec_matrix.


Previous Next Up Title Contents General Index Functions Index Bookshelf