// Class : Gestion des tutaux en T (like castles in scotland)
-// Copyright (C) 2009-2012 CEA/DEN, EDF R&D
+// Copyright (C) 2009-2024 CEA, EDF
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
#ifndef __CROSS_ELEMENTS_H
#define __CROSS_ELEMENTS_H
+#include "Hex_defines.hxx"
#include "HexElements.hxx"
BEGIN_NAMESPACE_HEXA
enum { Cyl1=CylSmall, Cyl2=CylBig };
enum { NO_CYL=-1, NO_PIPE=0, IS_HERE=1 };
-class CrossElements : public Elements
+class HEXABLOCKENGINE_EXPORT CrossElements : public Elements
{
public:
- virtual int countHexa () { return nbr_hexas ; }
- virtual int countQuad () { return nbr_quads ; }
- virtual int countEdge () { return nbr_edges ; }
- virtual int countVertex () { return nbr_vertex ; }
-
-public:
- CrossElements (Document* doc, EnumGrid type=GR_BICYL);
-
- virtual ~CrossElements () {}
+ CrossElements (Document* doc, EnumGrid type);
Hexa* getHexaIJK (int part, int nx, int ny, int nz);
Quad* getQuadIJ (int part, int nx, int ny, int nz);
Edge* getEdgeK (int part, int nx, int ny, int nz);
Vertex* getVertexIJK (int part, int nx, int ny, int nz);
+#ifndef SWIG
+public :
+ virtual ~CrossElements () {}
// Tutaux en T (like castles in scotland)
int crossCylinders (Cylinder* cyl1, Cylinder* cyl2, bool fill=true);
void dump ();
void dumpVertex ();
void dumpHexas ();
+ virtual int countHexa () { return nbr_hexas ; }
+ virtual int countQuad () { return nbr_quads ; }
+ virtual int countEdge () { return nbr_edges ; }
+ virtual int countVertex () { return nbr_vertex ; }
+
private :
-
+
void resize ();
void fillGrid (int cyl, int deb=-1, int fin=-1);
void fillCenter (int cyl, int deb, int fin);
void copyEdge (int d1, int i, int j, int k, int d2, int i2, int j2, int k2);
void copyQuad (int d1, int i, int j, int k, int d2, int i2, int j2, int k2);
- void setVertex (int cyl, int nx, int ny, int nz, double px, double py,
+ void setVertex (int cyl, int nx, int ny, int nz, double px, double py,
double pz);
void setVertex (Vertex* vv, int cyl, int nx, int ny, int nz);
void setQuad (Quad* quad, int cyl, int dir, int nx, int ny, int nz);
void setHexa (Hexa* cell, int cyl, int nx, int ny, int nz);
- Edge* addEdge (Vertex* v1, Vertex* v2, int cyl, int dir, int nx,
+ Edge* addEdge (Vertex* v1, Vertex* v2, int cyl, int dir, int nx,
int ny, int nz);
- Quad* addQuad (Edge* e1, Edge* e2, Edge* e3, Edge* e4, int cyl, int dir,
+ Quad* addQuad (Edge* e1, Edge* e2, Edge* e3, Edge* e4, int cyl, int dir,
int nx, int ny, int nz);
Hexa* addHexa (Quad* qa, Quad* qb, Quad* qc, Quad* qd, Quad* qe, Quad* qf,
int cyl, int nx, int ny, int nz);
void assoCylinder (int cyl, double* normal);
void assoSlice (int cyl, double* base, double* norm, int nx, int zlice);
- void assoArc (int cyl, int nx, int ny, int nz, string& brep, double ray);
+ void assoArc (int cyl, int nx, int ny, int nz, int subid);
+ void assoArcMid (double mid[], int nx, int ny, int nz, double ray, int subid);
void assoBigMiddle (double* base, double* normal, int nzlice);
int assoIntersection (int nx, int nzlice, double* snorm, double* bnorm);
+ void adjustAsso (int nx, int ny, int nz, int sens);
- double getAngle (int cyl, int ny);
+ double getAngle (int cyl, int ny, int nz=0);
+ double getAngleInter (int cyl, int nz);
void addSlice (int cyl, int ni, int nk, double px, double rayon=-1);
void addVertex (int cyl, int ni, int nj, int nk, double px, double rayon);
void majIntersection ();
int size_vz[BiCyl], size_hz[BiCyl];
int nbr_hexas1, nbr_quads1, nbr_edges1, nbr_vertex1;
- double angle_inter [BiCyl];
+ double angle_inter [BiCyl];
+ double angle_intermed;
double cross_rayon [BiCyl][SizeRay];
double big_hauteur [size_v2z];
bool at_right, at_left;
int cyl_right, cyl_left;
+ NewShape* grid_geom;
+#endif // SWIG
};
END_NAMESPACE_HEXA
#endif