X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2Ftepal2med%2Fghs3dprl_mesh_wrap.h;h=69622498482f2fcf37a74ac2c1ff9f09d3594bd1;hb=0ab6a3e0b79a17ae0777497eea855925d5b1464b;hp=8073fa7ab36b3275bbc2fc51de231137b4d2468d;hpb=1635d9fabfa2e905dd4944cbcea696563c0fb5d7;p=plugins%2Fghs3dprlplugin.git diff --git a/src/tepal2med/ghs3dprl_mesh_wrap.h b/src/tepal2med/ghs3dprl_mesh_wrap.h old mode 100755 new mode 100644 index 8073fa7..6962249 --- a/src/tepal2med/ghs3dprl_mesh_wrap.h +++ b/src/tepal2med/ghs3dprl_mesh_wrap.h @@ -1,26 +1,54 @@ +// Copyright (C) 2007-2020 CEA/DEN, EDF R&D +// +// 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, 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 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// --- +// File : ghs3dprl_mesh_wrap.h +// Author : Christian VAN WAMBEKE (CEA) (from Hexotic plugin Lioka RAZAFINDRAZAKA) +// --- +// #ifndef GHS3DPRL_MESH_WRAP_H #define GHS3DPRL_MESH_WRAP_H -#include -#include +#include +#include +#include +#include + +#include +#include +#include +#include //Med File V 2.2 attributes -#undef MED_H -#undef MED_PROTO_H -namespace med_2_2 { - extern "C" { -#include -#include - } -} +//#undef MED_H +//#undef MED_PROTO_H -using namespace med_2_2; +#include +//#include class CVWtab //contains size=size of vector and the vector (med_int or med_float) { + public: + static long memoryuse; + static long memorymax; long size,type; med_int *tmint; //integer med med_float *tmflo; //float med @@ -33,36 +61,117 @@ public: bool is_equal(CVWtab *tab2); }; +typedef std::map fend; +typedef std::map fagr; +class familles{ + private: + void newfam(QString nom); + void newgro(QString nom); + public: + int no; + fagr fam; + fagr gro; + void write(); + xmlNodePtr xml_groups(); + void add(QString nomfam, QString nomgro); + void addgro(); + bool get_number_of_new_family(int sign,med_int *num,QString *tmp); + med_int find_family_on_groups(med_int fam1, med_int fam2); + fend fuse_goups(med_int fam1, med_int fam2); +}; + class ghs3dprl_mesh_wrap { public: - QString casename,path; + QString + medname, + casename, + path, + pathini, + filemed, + format, + format_tetra; + bool for_tetrahpc; //to know what files to read: .noboite or .mesh + bool for_multithread; //to know what files to read: one or more + QRegExp deletegroups; //regular expression long - nofile,nbfiles, + nbtetrastotal, + nofile,nbfiles,nbfilestot, nbelem_limit_swap, + nbvert, nbedge, nbtria, nbtetr, // for current idom verbose; - QDict mestab; + med_err err; + med_idt fid,fidjoint; + med_int idom; + + //master.xml + std::string filemaster,domainname; + char distfilename[MED_COMMENT_SIZE]; + xmlDocPtr master_doc; + xmlNodePtr root_node,node,node2, + joints_node,info_node,files_node,mesh_node; + + QHash mestab; + familles families; + + //from skin.med + char nommaa[MED_NAME_SIZE+1]; + char maillage_description[MED_COMMENT_SIZE+1]; + char nomcoo[3*MED_SNAME_SIZE+1]; + char unicoo[3*MED_SNAME_SIZE+1]; + med_int *famnodesskin; //from skin.med... + med_int *famseg2skin; //...valid on global index/numerotation + med_int *famtria3skin; + + //to final files .med with tetrahedra + char nomfinal[MED_NAME_SIZE+1]; + med_int *famnodes,nbnodes,famnewnodes,famallnodes; //to final files .med with tetrahedra + med_int *famseg2,nbseg2,famnewseg2,famallseg2; + med_int *famtria3,nbtria3,famnewtria3,famalltria3; + med_int *famtetra4,nbtetra4,famnewtetra4,famalltetra4; //low level bool list_keys_mesh_wrap(); //list keys bool list_onekey_mesh_wrap(const QString &key); long remove_key_mesh_wrap(const QRegExp &rxp); + long nb_key_mesh_wrap(const QRegExp &rxp); long remove_all_keys_mesh_wrap(); bool insert_key(const QString &key,CVWtab *tab); CVWtab* restore_key(const QString &key); + //family level + bool set_one_more_family(med_int *fami, med_int *more, med_int nb); + med_int create_families(med_idt fid, int sign); + med_int create_family_zero(med_idt fid, QString nameMesh); + void add_family(med_int num,QString newgro); + void cout_families_and_groups(); + bool idom_nodes(); + bool idom_edges(); + bool idom_faces(); + bool idom_joints(); + bool idom_tetras(); + //test level bool test_msg_wrap(); bool test_vertices_wrap(); //hight level - long SwapOutOfMemory_key_mesh_wrap(const QRegExp &rxp); + long SwapOutOfMemory_key_mesh_wrap(const QRegExp &rxp,long ifgreaterthan=0); + bool ReadFileMSGnew(const QString FileName); + bool TestExistingFileMESHnew(const QString FileName); bool ReadFileGLO(const QString FileName); + bool ReadFileGLOBAL(const QString FileName); //mg-tetra v2.1.11 + bool ReadFileDefaultGLOBAL(long vert, long edge, long tria, long tetr); //as default when multithread as one output bool ReadFileFACES(const QString FileName); + bool ReadFileMESH(const QString FileName); bool ReadFileNOBOITE(const QString FileName); bool ReadFileNOBOITEB(const QString FileName); bool ReadFilePOINTS(const QString FileName); - bool Write_MEDfiles(); + bool Find_VerticesDomainToVerticesSkin(); + bool Write_masterxmlMEDfile(); + bool Write_MEDfiles_v0(bool deletekeys=false); + bool Write_MEDfiles_v1(bool deletekeys=false); + bool Write_MEDfiles_v2(bool deletekeys=false); }; #endif