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, ...)
où
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.