30 line.erase(std::remove(line.begin(), line.end(),
'\r'), line.end());
37 str.erase(std::find_if(str.rbegin(), str.rend(), [](
unsigned char ch) {
38 return !std::isspace(ch);
39 }).base(), str.end());
43 for (
size_t ptrIndex = 0; ptrIndex < (number); ptrIndex++){
44 intPtr[ptrIndex] = htons((intPtr[ptrIndex]));
49 for (
size_t ptrIndex = 0; ptrIndex < (number); ptrIndex++){
50 intPtr[ptrIndex] = ntohl((intPtr[ptrIndex]));
55 for (
size_t ptrIndex = 0; ptrIndex < (number); ptrIndex++){
56 intPtr[ptrIndex] = htobe64(intPtr[ptrIndex]);
61 uint16_t *uint16_tCopy;
64 switch ((sizeOfItem)){
68 uint16_tCopy = (uint16_t *)(itemList);
72 intCopy = (
int *)(itemList);
76 doubleCopy = (
double *)(itemList);
89 std::string extention=filename.substr(filename.find_last_of(
".") + 1);
91 if (extention ==
"gz"){
94 gzstream = gzopen(filename.c_str(),
"rb");
106 fopen_s(&
fstream, filename.c_str(),
"rb");
108 fstream = fopen((
const char*)filename.c_str(),
"rb");
137 ret = gzfread(pchar, sizeOfItem , numItems,
gzstream);
139 cout <<
"Error in reading file" << endl;
142 ret = fread(pchar, sizeOfItem, numItems,
fstream);
144 cout <<
"Error in reading file" << endl;
150 ((
char *)pchar)[sizeOfItem * numItems] =
'\0';
158 typedef unsigned char Boolean;
169 int *connect3DA =
nullptr;
170 Boolean *delElt3DA =
nullptr;
171 int *defPart3DA =
nullptr;
172 char **pText3DA =
nullptr;
173 char **fText3DA =
nullptr;
174 float *eFunc3DA =
nullptr;
175 char **tText3DA =
nullptr;
176 float *tensVal3DA =
nullptr;
177 float *eMass3DA =
nullptr;
178 int *elNum3DA =
nullptr;
189 uint16_t *skewShortValA =
nullptr;
190 float *skewValA =
nullptr;
191 float *coorA =
nullptr;
192 int *connectA =
nullptr;
193 char *delEltA =
nullptr;
194 int *defPartA =
nullptr;
195 uint16_t *normShortA =
nullptr;
196 float *funcA =
nullptr;
197 float *eFuncA =
nullptr;
203 std::list<std::string> checksum_list;
206 Ufread(&magic,
sizeof(
int), 1);
211 Ufread(&a_time,
sizeof(
float), 1);
212 Ufread(tmpText,
sizeof(
char), 81);
213 Ufread(tmpText,
sizeof(
char), 81);
214 Ufread(tmpText,
sizeof(
char), 81);
226 Ufread(flagA,
sizeof(
int), 10);
230 Ufread(&nbNodes,
sizeof(
int), 1);
231 Ufread(&nbFacets,
sizeof(
int), 1);
232 Ufread(&nbParts,
sizeof(
int), 1);
233 Ufread(&nbFunc,
sizeof(
int), 1);
234 Ufread(&nbEFunc,
sizeof(
int), 1);
235 Ufread(&nbVect,
sizeof(
int), 1);
236 Ufread(&nbTens,
sizeof(
int), 1);
237 Ufread(&nbSkew,
sizeof(
int), 1);
241 skewShortValA = (uint16_t *)malloc(nbSkew * 6 *
sizeof(uint16_t));
242 skewValA = (
float *)malloc(nbSkew * 6 *
sizeof(
float));
243 Ufread(skewShortValA,
sizeof(uint16_t), nbSkew * 6);
244 for (i = 0; i < 6 * nbSkew; i++)
246 skewValA[i] = ((float)skewShortValA[i]) /
252 coorA = (
float *)malloc(3 * nbNodes *
sizeof(
float));
253 Ufread(coorA,
sizeof(
float), 3 * nbNodes);
259 connectA = (
int *)malloc(nbFacets * 4 *
sizeof(
int));
260 Ufread(connectA,
sizeof(
int), nbFacets * 4);
265 delEltA = (
char *)malloc(nbFacets *
sizeof(
char));
266 Ufread(delEltA,
sizeof(
char), nbFacets);
272 defPartA = (
int *)malloc(nbParts *
sizeof(
int));
273 Ufread(defPartA,
sizeof(
int), nbParts);
277 for (i = 0; i < nbParts; i++){
278 Ufread(tmpText,
sizeof(
char), 50);
283 normShortA = (uint16_t *)malloc(3 * nbNodes *
sizeof(uint16_t));
284 Ufread(normShortA,
sizeof(uint16_t), 3 * nbNodes);
288 if (nbFunc + nbEFunc)
291 for (i = 0; i < (nbFunc + nbEFunc); i++)
293 Ufread(tmpText,
sizeof(
char), 81);
295 if (strncmp(tmpText,
"ZCHKSM_",7) == 0 )
303 funcA = (
float *)malloc(nbFunc * nbNodes *
sizeof(
float));
304 eFuncA = (
float *)malloc(nbEFunc * nbFacets *
sizeof(
float));
306 Ufread(funcA,
sizeof(
float), nbNodes * nbFunc);
310 Ufread(eFuncA,
sizeof(
float), nbFacets * nbEFunc);
317 return checksum_list;
326 char NameRequest[100];
328 char string_value[101];
329 float float_variable;
331 int NUMMAT,NUMGEO,NVAR,NBELEM,NBSUBSF,NBPARTF,NSUBS;
332 int NPART_NTHPART,NTHGRP2,NGLOB;
334 std::list<std::string> checksum_list;
336 Ufread(&dummy_variable,
sizeof(
int),1);
339 Ufread(&TH_Version,
sizeof(
int),1);
340 if(TH_Version >= 4021){
343 else if(TH_Version >= 3050){
346 else if(TH_Version >= 3041){
354 Ufread(string_value,
sizeof(
char),80,
true);
355 Ufread(&dummy_variable,
sizeof(
int),1);
358 Ufread(&dummy_variable,
sizeof(
int),1);
359 Ufread(string_value,
sizeof(
char),80,
true);
360 Ufread(&dummy_variable,
sizeof(
int),1);
362 if(TH_Version >= 3050)
365 Ufread(&dummy_variable,
sizeof(
int),1);
366 Ufread(&dummy_variable,
sizeof(
int),1);
367 Ufread(&dummy_variable,
sizeof(
int),1);
370 Ufread(&dummy_variable,
sizeof(
int),1);
371 Ufread(&dummy_variable,
sizeof(
int),1);
372 Ufread(&dummy_variable,
sizeof(
int),1);
375 Ufread(&dummy_variable,
sizeof(
int),1);
376 Ufread(&float_variable,
sizeof(
float),1);
377 Ufread(&float_variable,
sizeof(
float),1);
378 Ufread(&float_variable,
sizeof(
float),1);
379 Ufread(&dummy_variable,
sizeof(
int),1);
383 Ufread(&dummy_variable,
sizeof(
int),1);
386 Ufread(&NPART_NTHPART,
sizeof(
int),1);
387 Ufread(&NUMMAT,
sizeof(
int),1);
388 Ufread(&NUMGEO,
sizeof(
int),1);
389 Ufread(&NSUBS,
sizeof(
int),1);
390 Ufread(&NTHGRP2,
sizeof(
int),1);
391 Ufread(&NGLOB,
sizeof(
int),1);
393 Ufread(&dummy_variable,
sizeof(
int),1);
399 Ufread(&dummy_variable,
sizeof(
int),1);
400 for(i=0;i<NGLOB;i++){
401 Ufread(&dummy_variable,
sizeof(
int),1);
403 Ufread(&dummy_variable,
sizeof(
int),1);
408 if(NPART_NTHPART > 0)
410 for(i=0;i<NPART_NTHPART;i++){
411 Ufread(&dummy_variable,
sizeof(
int),1);
412 Ufread(&dummy_variable,
sizeof(
int),1);
413 Ufread(string_value,
sizeof(
char),titleLength,
true);
415 Ufread(&dummy_variable,
sizeof(
int),1);
416 Ufread(&dummy_variable,
sizeof(
int),1);
417 Ufread(&dummy_variable,
sizeof(
int),1);
418 Ufread(&NVAR,
sizeof(
int),1);
420 Ufread(&dummy_variable,
sizeof(
int),1);
423 dummy_array = (
int*)malloc((NVAR+2)*
sizeof(
int));
424 Ufread(dummy_array,
sizeof(
int),NVAR+2);
433 for(i=0;i<NUMMAT;i++){
434 Ufread(&dummy_variable,
sizeof(
int),1);
435 Ufread(&dummy_variable,
sizeof(
int),1);
436 Ufread(string_value,
sizeof(
char),titleLength,
true);
438 Ufread(&dummy_variable,
sizeof(
int),1);
446 for(i=0;i<NUMGEO;i++){
447 Ufread(&dummy_variable,
sizeof(
int),1);
448 Ufread(&dummy_variable,
sizeof(
int),1);
449 Ufread(string_value,
sizeof(
char),titleLength,
true);
451 Ufread(&dummy_variable,
sizeof(
int),1);
459 for(i=0;i<NSUBS;i++){
460 Ufread(&dummy_variable,
sizeof(
int),1);
461 Ufread(&dummy_variable,
sizeof(
int),1);
462 Ufread(&dummy_variable,
sizeof(
int),1);
463 Ufread(&NBSUBSF,
sizeof(
int),1);
464 Ufread(&NBPARTF,
sizeof(
int),1);
465 Ufread(&NVAR,
sizeof(
int),1);
466 Ufread(string_value,
sizeof(
char),titleLength,
true);
471 Ufread(&dummy_variable,
sizeof(
int),1);
475 dummy_array = (
int*)malloc((NBSUBSF+2)*
sizeof(
int));
476 Ufread(dummy_array,
sizeof(
int),NBSUBSF+2);
482 dummy_array = (
int*)malloc((NBPARTF+2)*
sizeof(
int));
483 Ufread(dummy_array,
sizeof(
int),NBPARTF+2);
489 dummy_array = (
int*)malloc((NVAR+2)*
sizeof(
int));
490 Ufread(dummy_array,
sizeof(
int),NVAR+2);
500 for(i=0;i<NTHGRP2;i++){
501 Ufread(&dummy_variable,
sizeof(
int),1);
502 Ufread(&dummy_variable,
sizeof(
int),1);
503 Ufread(&dummy_variable,
sizeof(
int),1);
504 Ufread(&dummy_variable,
sizeof(
int),1);
506 Ufread(&NBELEM,
sizeof(
int),1);
507 Ufread(&NVAR,
sizeof(
int),1);
509 Ufread(NameRequest,
sizeof(
char),titleLength,
true);
513 if (strncmp(NameRequest,
"CHECKSUM", 8) == 0) isCheckSum = 1;
515 Ufread(&dummy_variable,
sizeof(
int),1);
517 for(j=0;j<NBELEM;j++){
518 Ufread(&dummy_variable,
sizeof(
int),1);
519 Ufread(&dummy_variable,
sizeof(
int),1);
521 if (isCheckSum == 1){
525 checksum_list.push_back(checksum_str);
528 Ufread(&dummy_variable,
sizeof(
int),1);
532 dummy_array = (
int*)malloc((NVAR+2)*
sizeof(
int));
533 Ufread(dummy_array,
sizeof(
int),NVAR+2);
537 return checksum_list;
554 std::list<std::string> checksum_list;
558 while (getline(*new_file, line) && not_found) {
560 if (line ==
" CHECKSUM DIGESTS" || line ==
" CHECKSUM DIGESTS") {
561 if (getline(*new_file, line)){
562 if (getline(*new_file, line)){
563 while( not_found && getline(*new_file, line) ){
564 std::string
comp=line.substr(0, 15);
565 if (
comp ==
" CHECKSUM : "){
567 std::string
checksum = line.substr(15);
571 cout <<
"Checksum found: " <<
checksum << endl;
584 return checksum_list;
588 std::list<std::tuple<std::string,std::string>> checksum_list;
591 while (getline(*new_file, line) && not_found) {
593 if (line ==
" OUTPUT FILES CHECKSUM DIGESTS") {
595 if (getline(*new_file, line)){
597 while( not_found && getline(*new_file, line) ){
598 if (line.length() > 4){
599 std::string
comp=line.substr(4);
600 size_t pos =
comp.find_last_of(
' ');
602 std::string filename =
comp.substr(0,pos);
604 checksum_list.push_back(make_tuple(filename,
checksum));
615 return checksum_list;
void remove_trailing_blanks(std::string &str)
int open_binary_file(std::string filename)
void SWAP_MANY4BYTES(int *intPtr, size_t number)
void SWAP_MANY8BYTES(double *intPtr, size_t number)
int Ufread(void *pchar, size_t sizeOfItem, size_t numItems, bool text=false)
void SWAP_BYTESINDATA(void *itemList, size_t itemCount, size_t sizeOfItem)
void remove_cr(std::string &line)
std::list< std::string > Animation()
void SWAP_MANY2BYTES(uint16_t *intPtr, size_t number)
std::list< std::string > Out_File(std::fstream *new_file)
std::list< std::string > Time_History()
std::list< std::tuple< std::string, std::string > > Checksum_File(std::fstream *new_file)