1 // Copyright (C) 2007-2020 CEA/DEN, EDF R&D
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 // File : ghs3dprl_mesh_wrap.h
22 // Author : Christian VAN WAMBEKE (CEA) (from Hexotic plugin Lioka RAZAFINDRAZAKA)
25 #ifndef GHS3DPRL_MESH_WRAP_H
26 #define GHS3DPRL_MESH_WRAP_H
33 #include <libxml/tree.h>
34 #include <libxml/parser.h>
35 #include <libxml/xpath.h>
36 #include <libxml/xpathInternals.h>
38 //Med File V 2.2 attributes
43 //#include <med_proto.h>
46 //contains size=size of vector and the vector (med_int or med_float)
50 static long memoryuse;
51 static long memorymax;
53 med_int *tmint; //integer med
54 med_float *tmflo; //float med
57 CVWtab(long nb, med_int *pmint);
58 CVWtab(long nb, med_float *pmflo);
60 bool CVWtab_deallocate();
61 bool is_equal(CVWtab *tab2);
64 typedef std::map<QString, int> fend;
65 typedef std::map<QString, fend> fagr;
68 void newfam(QString nom);
69 void newgro(QString nom);
75 xmlNodePtr xml_groups();
76 void add(QString nomfam, QString nomgro);
78 bool get_number_of_new_family(int sign,med_int *num,QString *tmp);
79 med_int find_family_on_groups(med_int fam1, med_int fam2);
80 fend fuse_goups(med_int fam1, med_int fam2);
83 class ghs3dprl_mesh_wrap
94 bool for_tetrahpc; //to know what files to read: .noboite or .mesh
95 bool for_multithread; //to know what files to read: one or more
96 QRegExp deletegroups; //regular expression
99 nofile,nbfiles,nbfilestot,
101 nbvert, nbedge, nbtria, nbtetr, // for current idom
104 med_idt fid,fidjoint;
108 std::string filemaster,domainname;
109 char distfilename[MED_COMMENT_SIZE];
110 xmlDocPtr master_doc;
111 xmlNodePtr root_node,node,node2,
112 joints_node,info_node,files_node,mesh_node;
114 QHash<QString,CVWtab*> mestab;
118 char nommaa[MED_NAME_SIZE+1];
119 char maillage_description[MED_COMMENT_SIZE+1];
120 char nomcoo[3*MED_SNAME_SIZE+1];
121 char unicoo[3*MED_SNAME_SIZE+1];
122 med_int *famnodesskin; //from skin.med...
123 med_int *famseg2skin; //...valid on global index/numerotation
124 med_int *famtria3skin;
126 //to final files .med with tetrahedra
127 char nomfinal[MED_NAME_SIZE+1];
128 med_int *famnodes,nbnodes,famnewnodes,famallnodes; //to final files .med with tetrahedra
129 med_int *famseg2,nbseg2,famnewseg2,famallseg2;
130 med_int *famtria3,nbtria3,famnewtria3,famalltria3;
131 med_int *famtetra4,nbtetra4,famnewtetra4,famalltetra4;
134 bool list_keys_mesh_wrap(); //list keys
135 bool list_onekey_mesh_wrap(const QString &key);
136 long remove_key_mesh_wrap(const QRegExp &rxp);
137 long nb_key_mesh_wrap(const QRegExp &rxp);
138 long remove_all_keys_mesh_wrap();
139 bool insert_key(const QString &key,CVWtab *tab);
140 CVWtab* restore_key(const QString &key);
143 bool set_one_more_family(med_int *fami, med_int *more, med_int nb);
144 med_int create_families(med_idt fid, int sign);
145 med_int create_family_zero(med_idt fid, QString nameMesh);
146 void add_family(med_int num,QString newgro);
147 void cout_families_and_groups();
155 bool test_msg_wrap();
156 bool test_vertices_wrap();
159 long SwapOutOfMemory_key_mesh_wrap(const QRegExp &rxp,long ifgreaterthan=0);
160 bool ReadFileMSGnew(const QString FileName);
161 bool TestExistingFileMESHnew(const QString FileName);
162 bool ReadFileGLO(const QString FileName);
163 bool ReadFileGLOBAL(const QString FileName); //mg-tetra v2.1.11
164 bool ReadFileDefaultGLOBAL(long vert, long edge, long tria, long tetr); //as default when multithread as one output
165 bool ReadFileFACES(const QString FileName);
166 bool ReadFileMESH(const QString FileName);
167 bool ReadFileNOBOITE(const QString FileName);
168 bool ReadFileNOBOITEB(const QString FileName);
169 bool ReadFilePOINTS(const QString FileName);
170 bool Find_VerticesDomainToVerticesSkin();
171 bool Write_masterxmlMEDfile();
172 bool Write_MEDfiles_v0(bool deletekeys=false);
173 bool Write_MEDfiles_v1(bool deletekeys=false);
174 bool Write_MEDfiles_v2(bool deletekeys=false);