From deb2b3fc2e902a0b744af65e96a51efacddb6521 Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Tue, 30 Oct 2001 16:02:29 +0000 Subject: [PATCH] Read/Write views : format 1.1 --- Common/Views.cpp | 64 ++++++++++++++++++++++++++++++++++++------------ DataStr/List.cpp | 18 +++++++++++++- 2 files changed, 65 insertions(+), 17 deletions(-) diff --git a/Common/Views.cpp b/Common/Views.cpp index f0467b21be..3a962d616d 100644 --- a/Common/Views.cpp +++ b/Common/Views.cpp @@ -1,4 +1,4 @@ -// $Id: Views.cpp,v 1.56 2001-10-30 14:27:47 geuzaine Exp $ +// $Id: Views.cpp,v 1.57 2001-10-30 16:02:29 geuzaine Exp $ #include <set> #include "Gmsh.h" @@ -471,7 +471,7 @@ void Print_ColorTable(int num, char *prefix, FILE *file){ void Read_View(FILE *file, char *filename){ char str[256], name[256]; - int nb, format, size, testone, swap; + int nb, format, size, testone, swap, t2l, t3l; double version; Post_View *v; @@ -517,12 +517,24 @@ void Read_View(FILE *file, char *filename){ v = BeginView(0); - fscanf(file, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d\n", - name, &v->NbTimeStep, - &v->NbSP, &v->NbVP, &v->NbTP, - &v->NbSL, &v->NbVL, &v->NbTL, - &v->NbST, &v->NbVT, &v->NbTT, - &v->NbSS, &v->NbVS, &v->NbTS); + if(version >= 1.1){ + fscanf(file, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", + name, &v->NbTimeStep, + &v->NbSP, &v->NbVP, &v->NbTP, + &v->NbSL, &v->NbVL, &v->NbTL, + &v->NbST, &v->NbVT, &v->NbTT, + &v->NbSS, &v->NbVS, &v->NbTS, + &v->NbT2, &t2l, &v->NbT3, &t3l); + } + else{ + fscanf(file, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d\n", + name, &v->NbTimeStep, + &v->NbSP, &v->NbVP, &v->NbTP, + &v->NbSL, &v->NbVL, &v->NbTL, + &v->NbST, &v->NbVT, &v->NbTT, + &v->NbSS, &v->NbVS, &v->NbTS); + v->NbT2 = t2l = v->NbT3 = t3l = 0; + } swap = 0 ; if(format == LIST_FORMAT_BINARY){ @@ -578,17 +590,34 @@ void Read_View(FILE *file, char *filename){ nb = v->NbTS ? v->NbTS * (v->NbTimeStep*4*9+12) : 0 ; v->TS = List_CreateFromFile(nb, size, file, format, swap); - Msg(DEBUG, "Read View '%s' (%d TimeSteps): %d %d %d %d %d %d %d %d %d %d %d %d", + // Strings + nb = v->NbT2 ? v->NbT2 * 4 : 0 ; + v->T2D = List_CreateFromFile(nb, size, file, format, swap); + v->T2C = List_CreateFromFile(t2l, sizeof(char), file, format, swap); + + nb = v->NbT3 ? v->NbT3 * 5 : 0 ; + v->T3D = List_CreateFromFile(nb, size, file, format, swap); + v->T3C = List_CreateFromFile(t3l, sizeof(char), file, format, swap); + + + Msg(DEBUG, "Read View '%s' (%d TimeSteps): %d %d %d %d %d %d %d %d %d %d %d %d %d %d", name, v->NbTimeStep, v->NbSP, v->NbVP, v->NbTP, v->NbSL, v->NbVL, v->NbTL, v->NbST, v->NbVT, v->NbTT, - v->NbSS, v->NbVS, v->NbTS); - Msg(DEBUG, "List_Nbrs: %d %d %d %d %d %d %d %d %d %d %d %d", + v->NbSS, v->NbVS, v->NbTS, + v->NbT2, v->NbT3); + Msg(DEBUG, "List_Nbrs: " + "SP%d VP%d TP%d " + "SL%d VL%d TL%d " + "ST%d VT%d TT%d " + "SS%d VS%d TS%d " + "T2D%d T2C%d T3D%d T3C%d", List_Nbr(v->SP), List_Nbr(v->VP), List_Nbr(v->TP), List_Nbr(v->SL), List_Nbr(v->VL), List_Nbr(v->TL), List_Nbr(v->ST), List_Nbr(v->VT), List_Nbr(v->TT), - List_Nbr(v->SS), List_Nbr(v->VS), List_Nbr(v->TS)); + List_Nbr(v->SS), List_Nbr(v->VS), List_Nbr(v->TS), + List_Nbr(v->T2D), List_Nbr(v->T2C), List_Nbr(v->T3D), List_Nbr(v->T3C)); EndView(v, 1, filename, name); } @@ -620,8 +649,8 @@ void Write_View(int Flag_BIN, Post_View *v, char *filename){ else file = stdout; - fprintf(file, "$PostFormat /* Gmsh 1.0, %s */\n", Flag_BIN ? "binary" : "ascii") ; - fprintf(file, "1.0 %d %d\n", Flag_BIN, (int)sizeof(double)) ; + fprintf(file, "$PostFormat /* Gmsh 1.1, %s */\n", Flag_BIN ? "binary" : "ascii") ; + fprintf(file, "1.1 %d %d\n", Flag_BIN, (int)sizeof(double)) ; fprintf(file, "$EndPostFormat\n") ; for(i=0;i<(int)strlen(v->Name);i++) if(v->Name[i]==' ') v->Name[i]='_'; // -> Il faudra changer le format de post pour autoriser les blancs. @@ -630,10 +659,11 @@ void Write_View(int Flag_BIN, Post_View *v, char *filename){ // simplexes ? fprintf(file, "$View /* %s */\n", v->Name); fprintf(file, "%s ", v->Name); - fprintf(file, "%d %d %d %d %d %d %d %d %d %d %d %d %d\n", + fprintf(file, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", List_Nbr(v->Time), v->NbSP, v->NbVP, v->NbTP, v->NbSL, v->NbVL, v->NbTL, - v->NbST, v->NbVT, v->NbTT, v->NbSS, v->NbVS, v->NbTS); + v->NbST, v->NbVT, v->NbTT, v->NbSS, v->NbVS, v->NbTS, + v->NbT2, List_Nbr(v->T2C), v->NbT3, List_Nbr(v->T3C)); if(Flag_BIN){ f = LIST_FORMAT_BINARY; fwrite(&One, sizeof(int), 1, file); @@ -647,6 +677,8 @@ void Write_View(int Flag_BIN, Post_View *v, char *filename){ List_WriteToFile(v->ST, file, f); List_WriteToFile(v->VT, file, f); List_WriteToFile(v->TT, file, f); List_WriteToFile(v->SS, file, f); List_WriteToFile(v->VS, file, f); List_WriteToFile(v->TS, file, f); + List_WriteToFile(v->T2D, file, f); List_WriteToFile(v->T2C, file, f); + List_WriteToFile(v->T3D, file, f); List_WriteToFile(v->T3C, file, f); if(Flag_BIN) fprintf(file, "\n"); fprintf(file, "$EndView\n"); diff --git a/DataStr/List.cpp b/DataStr/List.cpp index 53487fd51e..754e2a3369 100644 --- a/DataStr/List.cpp +++ b/DataStr/List.cpp @@ -1,4 +1,4 @@ -// $Id: List.cpp,v 1.16 2001-05-22 07:11:14 geuzaine Exp $ +// $Id: List.cpp,v 1.17 2001-10-30 16:02:29 geuzaine Exp $ #include <stdlib.h> #include <stdio.h> @@ -383,6 +383,13 @@ List_T *List_CreateFromFile(int n, int size, FILE *file, int format, int swap){ for(i=0;i<n;i++) fscanf(file, "%f", (float*)&liste->array[i*size]) ; else if(size == sizeof(int)) for(i=0;i<n;i++) fscanf(file, "%d", (int*)&liste->array[i*size]) ; + /* + else if(size == sizeof(char)) + for(i=0;i<n;i++){ + fscanf(file, "%c", (char*)&liste->array[i*size]) ; + if(liste->array[i*size]=='^') liste->array[i*size]='\0'; + } + */ else{ Msg(GERROR, "Bad type of data to create list from (size = %d)", size); return NULL; @@ -412,6 +419,15 @@ void List_WriteToFile(List_T *liste, FILE *file, int format){ for(i=0;i<n;i++) fprintf(file, "%g ", *((float*)&liste->array[i*liste->size])) ; else if(liste->size == sizeof(int)) for(i=0;i<n;i++) fprintf(file, "%d ", *((int*)&liste->array[i*liste->size])) ; + /* + else if(liste->size == sizeof(char)) + for(i=0;i<n;i++){ + if(*((char*)&liste->array[i*liste->size]) == '\0') + fprintf(file, "^") ; + else + fprintf(file, "%c", *((char*)&liste->array[i*liste->size])) ; + } + */ else Msg(GERROR, "Bad type of data to write list to file (size = %d)", liste->size); fprintf(file, "\n"); -- GitLab