Previous Next Up Title Contents General Index Functions Index Bookshelf

5. TRAITEMENT DE MAILLAGES 3D


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

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

txxxxx (struct_id, &mesh, &scal_data)

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_data est l'adresse d'un jeu de données sur le maillage

Remarques concernant les maillages non structurés 3D :

Ces trois types de maillage sont décrits par une liste de N triplets des coordonnées des sommets (numérotés de 0 à N-1), et par une liste de M mailles du maillages. Chaque maille est décrite par ses 4, 5, 6 ou 8 numéros des sommets qui la composent.

Les maillages non structurés 3D doivent respecter les règles suivantes :

La structure de données des valeurs du maillage, définie une valeur en chacun des sommets du maillage.

Description du type des structures C mesh:

typedef struct {

	Tmesh3D_type	type;

	union {

		struct {
			Pint	num_x;
			Pint	num_y;
			Pint	num_z;
			Pfloat	*x;
			Pfloat	*y;
			Pfloat	*z;
		} parallelepipedic;

		struct {
			Pint	num_x;
			Pint	num_y;
			Pint	num_z;
			Pfloat	***x;
			Pfloat	***y;
			Pfloat	***z;
		} hexahedral;

		struct {
			Pint	num_r;
			Pint	num_p;
			Pint	num_z;
			Pfloat	*r;
			Pfloat	*p;
			Pfloat	*z;
		} cylindrical;
		struct {
			Pint	num_r;
			Pint	num_t;
			Pint	num_p;
			Pfloat	*r;
			Pfloat	*t;
			Pfloat	*p;
		} spherical;

		struct {
			Pint	num_hexahedrons;
			Pint	num_nodes;
			Thexahedron_ind	*hexahedron_nodes;
			Ppoint3	*nodes;
		} ns_hexahedrons;

		struct {
			Pint	num_tetrahedrons;
			Pint	num_nodes;
			Ttetrahedron_ind	*tetrahedron_nodes;
			Ppoint3	*nodes;
		} ns_tetrahedrons;

		struct {
			Pint	num_elems;
			Pint	num_nodes;
			Pint_list	*elem_nodes;
			Ppoint3	*nodes;
		} ns_non_homo_3D;

	} geometry;

} Tmesh3D

le champ type représente le type de géométrie du maillage :
typedef enum {
	TPARALLELEPIPEDIC_MESH,
	THEXAHEDRAL_MESH,
	TCYLINDRICAL_MESH,
	TSPHERICAL_MESH,
	TNS_MESH_OF_HEXAHEDRONS,
	TNS_MESH_OF_TETRAHEDRONS,
	TNS_MESH_NON_HOMO_3D
} Tmesh3D_type;
nodes représente un noeud du maillage :
typedef struct {
	Pfloat	x;
	Pfloat	y;
	Pfloat	z;
} Ppoint3;

Ttetrahedron_ind est un tableau contenant les 4 indices des noeuds d'un tétraèdre :
typedef Pint Ttetrahedron_ind [4];

Thexahedron_ind est un tableau contenant les 8 indices des noeuds d'un héxaèdre :
typedef Pint Thexahedron_ind[8];
Description du type des structures C scal_data:

typedef union {
	struct {
		Pfloat	***s;
	} parallelepipedic;

	struct {
		Pfloat	***s;
	} hexahedral;

	struct {
		Pfloat	***s;
		Pfloat	*sa;
	} cylindrical;

	struct {
		Pfloat	***s;
		Pfloat	*spa;
		Pfloat	*sna;
		Pfloat	so;
	} spherical;

	struct {
		Pfloat	*s;
	} ns_hexahedrons;

	struct {
		Pfloat	*s;
	} ns_tetrahedrons;

	struct {
		Pfloat	*s;
	} ns_non_homo_3D;

} Tscalar3D_data;

Description du type des structures C vector_data:


typedef union {

	struct {
		Pvec3	***v;
	} parallelepipedic;

	struct {
		Pvec3	***v;
	} hexahedral;

	struct {
		Pvec3	***v;
		Pvec3	*va;
	} cylindrical;

	struct {
		Pvec3	***v;
		Pvec3	*vpa;
		Pvec3	*vna
		Pvec3	vo;
	} spherical;
	struct {
		Pvec3	*v;
	} ns_hexahedrons;

	struct {
		Pvec3	*v;
	} ns_tetrahedrons;

	struct {
		Pvec3	*v;
	} ns_non_homo_3D;

} Tvec3D_data


où Pvec3  est le type vecteur 3D de PHIGURE:
typedef struct {
	Pfloat	delta_x;
	Pfloat	delta_y;
	Pfloat	delta_z;
} Pvec3;


Les champs des structures de type "triple pointeur" (***s, ***x, ***y, ***z, ou ***v) peuvent être alloués par les utilitaires talloc_float_matrix3 et talloc_vec3_matrix3, et libérés par les utilitaires tfree_float_matrix3 et tfree_vec3_matrix3.


Previous Next Up Title Contents General Index Functions Index Bookshelf