286 Application *getApplication(
void) {
return application; }
288 EntityMeshCartesian *getEntityMesh(
void) {
return entityMesh; }
289 void setEntityMesh(EntityMeshCartesian *mesh) { entityMesh = mesh; }
290 void deleteMesh(
void);
291 void reportTime(
const std::string &message, std::time_t &timer);
292 std::list<ot::UID> getAllGeometryEntitiesForMeshing(
void);
293 EntityMeshCartesianData *determineMeshLines(
const std::list<EntityBase *> &meshEntities,
double maximumEdgeLength,
double stepsAlongDiagonalProperty);
294 void determineBoundingBoxExtension(
double deltaX,
double deltaY,
double deltaZ,
double &offsetXmin,
double &offsetXmax,
double &offsetYmin,
double &offsetYmax,
double &offsetZmin,
double &offsetZmax);
295 void determineMeshLinesOneDirection(
double min,
double max,
double step, std::vector<double> &coords);
296 EntityGeometry *addBackgroundCubeTopology(
void);
297 void addBackgroundCubeGeometry(EntityGeometry *backgroundCube, EntityMeshCartesianData *meshData,
double stepWidth);
298 void determineVolumeFill(std::list<EntityGeometry *> &geometryEntities, EntityMeshCartesianData *meshData,
bool conformalMeshing);
299 void fillSingleShape(EntityGeometry *shape, std::vector<EntityGeometry *> &meshFill, std::vector<char> &shapeFill, EntityMeshCartesianData *meshData,
300 std::map<EntityGeometry*, double> &shapePriorities, std::map<std::pair<EntityGeometry*, EntityGeometry*>,
bool> &overlappingShapes,
301 std::vector<CartesianMeshFillFront> &fillFrontElements, std::vector<std::map<EntityGeometry*, std::list<Geometry::Triangle*>>> *triangleInCellInformation);
302 void extractInterfaces(std::vector<EntityGeometry *> meshFill, EntityMeshCartesianData *meshData,
304 void extractInterfacesW(std::vector<EntityGeometry *> meshFill, std::map<std::pair<EntityGeometry*, EntityGeometry*>,
CartesianMeshBoundaryFacets *> &boundaryFacets,
305 size_t nu,
size_t nv,
size_t nw,
size_t mu,
size_t mv,
size_t mw,
int dirW);
306 void addBoundaryFacet(
int direction,
size_t facetIndex, EntityGeometry *from, EntityGeometry *to, std::map<std::pair<EntityGeometry*, EntityGeometry*>,
CartesianMeshBoundaryFacets *> &boundaryFacets);
308 void storeBoundaryFacesList(std::map<std::pair<EntityGeometry*, EntityGeometry*>,
CartesianMeshBoundaryFacets *> &boundaryFacets, EntityMeshCartesianData *meshData);
309 void fillCell(EntityGeometry *shape, std::vector<EntityGeometry *> &meshFill,
size_t index,
310 std::map<EntityGeometry*, double> &shapePriorities, std::map<std::pair<EntityGeometry*, EntityGeometry*>,
bool> &overlappingShapes);
311 void fillSingleShapeVolume(
size_t nx,
size_t ny,
size_t nz, std::vector<char> &shapeFill, EntityFacetData *facetData,
312 std::vector<double> &linesX, std::vector<double> &linesY, std::vector<double> &linesZ,
313 std::vector<CartesianMeshFillFront> &fillFrontElements);
314 bool findUndefinedCell(
size_t nx,
size_t ny,
size_t nz, std::vector<char> &shapeFill,
unsigned int &ix,
unsigned int &iy,
unsigned int &iz);
315 void fillNeighbouringVolume(
unsigned int ix,
unsigned int iy,
unsigned int iz,
char fillCode,
size_t nx,
size_t ny,
size_t nz, std::vector<char> &shapeFill,std::vector<CartesianMeshFillFront> &fillFrontElements);
316 void updateFront(std::vector<CartesianMeshFillFront> &fillFrontElements,
size_t &nFrontElements,
char fillCode,
size_t nx,
size_t ny,
size_t nz, std::vector<char> &shapeFill);
317 void expandFront(
unsigned int ix,
unsigned int iy,
unsigned int iz, std::vector<CartesianMeshFillFront> &fillFrontElements,
size_t &nFrontElements,
size_t nx,
size_t ny,
size_t nz, std::vector<char> &shapeFill);
318 bool testPointInside(
double xpos,
double ypos,
double zpos);
319 void setupEmbree(EntityFacetData *facetData,
bool multipleIntersections);
320 void terminateEmbree(
void);
321 std::string getLargeNumberString(
size_t number);
322 void extractAndStoreMesh(std::vector<EntityGeometry *> &meshFill, EntityMeshCartesianData *meshData, std::time_t &timer, std::list<EntityGeometry *> &geometryEntities);
323 void createMatrices(std::vector<EntityGeometry *> &meshFill, EntityMeshCartesianData *meshData);
324 void extractInterfacesConformal(std::vector<EntityGeometry *> meshFill, EntityMeshCartesianData *meshData,
326 void extractInterfacesWConformal(std::vector<EntityGeometry *> meshFill, std::map<std::pair<EntityGeometry*, EntityGeometry*>,
CartesianMeshBoundaryFacetsConformal *> &boundaryFacets,
327 size_t nu,
size_t nv,
size_t nw,
size_t mu,
size_t mv,
size_t mw,
int dirW);
328 void addBoundaryFacetConformal(
int direction,
size_t iu,
size_t iv,
size_t iw,
size_t mu,
size_t mv,
size_t mw, EntityGeometry *from, EntityGeometry *to,
size_t indexFrom,
size_t indexTo, std::map<std::pair<EntityGeometry*, EntityGeometry*>,
CartesianMeshBoundaryFacetsConformal *> &boundaryFacets);
330 void storeBoundaryFacesListConformal(std::map<std::pair<EntityGeometry*, EntityGeometry*>,
CartesianMeshBoundaryFacetsConformal *> &boundaryFacets, EntityMeshCartesianData *meshData);
331 void createNodes(
unsigned int nx,
unsigned int ny,
unsigned int nz, std::map<std::pair<EntityGeometry*, EntityGeometry*>,
CartesianMeshBoundaryFacetsConformal *> &boundaryFacets, EntityMeshCartesianData *meshData,
333 void extractAndStoreMeshConformal(std::vector<EntityGeometry *> &meshFill, EntityMeshCartesianData *meshData, std::time_t &timer, std::list<EntityGeometry *> &geometryEntities,
334 std::map<EntityGeometry*, double> shapePriorities, std::vector<std::map<EntityGeometry*, std::list<Geometry::Triangle*>>> &triangleInCellInformation);
335 bool movePointToClosestPointOnGeometry(
size_t pointIndex,
CartesianMeshBoundaryPointData *boundaryPointInfo,
int nx,
int ny,
int nz, std::vector<EntityGeometry *> &meshFill, EntityGeometry *geometryEntity, EntityMeshCartesianNodes *meshNodes, EntityFacetData *facets, std::vector<std::map<EntityGeometry*, std::list<Geometry::Triangle*>>> &triangleInCellInformation);
336 float clamp(
float value,
float min,
float max);
338 void determine2DFill(std::list<EntityGeometry *> &geometryEntities, EntityMeshCartesianData *meshData);
339 void setProgress(
int percentage);
340 void displayMessage(std::string message);
341 void setProgressInformation(std::string message,
bool continuous);
342 void closeProgressInformation(
void);
343 EntityCartesianVector* getDsMatrix(
void) {
return matrixDs; };
344 EntityCartesianVector* getDualDsMatrix(
void) {
return matrixDualDs; };
345 EntityCartesianVector* getDaMatrix(
void) {
return matrixDa; };
346 EntityCartesianVector* getDualDaMatrix(
void) {
return matrixDualDa; };
347 EntityCartesianVector* getDepsMatrix(
void) {
return matrixDeps; };
348 EntityCartesianVector* getDmuMatrix(
void) {
return matrixDmu; };
349 EntityCartesianVector* getDsigmaMatrix(
void) {
return matrixDsigma; };
350 std::string readMaterialInformation(
const std::list<EntityGeometry *> &geometryEntities);
351 void clearMaterialInformation(
const std::list<EntityGeometry *> &geometryEntities);
352 void calcDsW(
double *matrix,
long long nu,
long long nv,
long long nw,
long long mu,
long long mv,
long long mw, EntityGeometry **meshFill);
353 void calcDaW(
double *matrix,
long long nu,
long long nv,
long long nw,
long long mu,
long long mv,
long long mw, EntityGeometry **meshFill);
354 void calcDmuW(
double *matrix,
long long nu,
long long nv,
long long nw,
long long mu,
long long mv,
long long mw,
double *meshLinesW, EntityGeometry **meshFill);
355 void calcDepsW(
double *matrix,
long long nu,
long long nv,
long long nw,
long long mu,
long long mv,
long long mw,
double *meshLinesU,
double *meshLinesV, EntityGeometry **meshFill);
356 void calcDsigmaW(
double *matrix,
long long nu,
long long nv,
long long nw,
long long mu,
long long mv,
long long mw,
double *meshLinesU,
double *meshLinesV, EntityGeometry **meshFill);
357 void addMatrixPlot(EntityResultBase::tResultType resultType,
const std::string &plotName, EntityCartesianVector *matrix, EntityMeshCartesianData *mesh, std::list<EntityBase *> &entityList, std::map<ot::UID,bool> &topologyEntityForceVisible);
359 enum lockType {ANY_OPERATION, MODEL_CHANGE};
360 void setUILock(
bool flag, lockType type);
364 EntityMeshCartesian *entityMesh;
365 size_t numberPointInsideTests;
370 std::list<EntityBase *> newTopologyEntities;
371 std::list<EntityBase *> newDataEntities;
372 std::list<CartesianMeshMaterial *> materialList;
373 std::string backgroundShapeName;
374 std::string backgroundMeshName;
376 EntityCartesianVector *matrixDs;
377 EntityCartesianVector *matrixDualDs;
378 EntityCartesianVector *matrixDa;
379 EntityCartesianVector *matrixDualDa;
380 EntityCartesianVector *matrixDeps;
381 EntityCartesianVector *matrixDmu;
382 EntityCartesianVector *matrixDsigma;