Trisurf Monte Carlo simulator
1eb75bcca71b97196c1ad29da5d082a21b12cf00..579fbdf994b239ddcf68b1364fa3c84b2837d5c8
2019-10-19 Samo Penic
Restore seems to be working, however...
579fbd diff | tree
2019-10-19 Samo Penic
Fixed most problems, some still persists.
201659 diff | tree
2 files modified
31 ■■■■■ changed files
src/io.c 4 ●●●● patch | view | raw | blame | history
src/restore.c 27 ●●●●● patch | view | raw | blame | history
src/io.c
@@ -435,7 +435,7 @@
    fprintf(fh,"</CellData>\n<Points>\n<DataArray type=\"Float64\" Name=\"Koordinate tock\" NumberOfComponents=\"3\" format=\"binary\">\n");
    fprintf(fh,"</CellData>\n<Points>\n<DataArray type=\"Float64\" Name=\"Koordinate tock\" NumberOfComponents=\"3\" format=\"binary\">");
    offset=0;
    for(i=0;i<vlist->n;i++,offset+=3){
        //fprintf(fh,"%.17e %.17e %.17e\n",vtx[i]->x,vtx[i]->y, vtx[i]->z);
@@ -539,7 +539,7 @@
    printout=ts_compress((char *)int_vector,offset*sizeof(long));
    fprintf(fh,"%s",printout);
    free(printout);
    fprintf(fh,"</DataArray>\n<DataArray type=\"UInt8\" Name=\"types\" format=\"binary\">\n");
    fprintf(fh,"</DataArray>\n<DataArray type=\"UInt8\" Name=\"types\" format=\"binary\">");
    free(int_vector);
    free(float_vector);
    free(float_cell_vector);
src/restore.c
@@ -344,6 +344,7 @@
//                vals=(char *)values;
                unsigned long data_len=0;
                ts_double *curv_values=(double *)ts_decompress((unsigned char *)values,strlen((char *)values), &data_len);
                data_len=data_len/sizeof(ts_double);
//                token=strtok(vals," ");
                for(idx=0;idx<data_len;idx++){
//                while(token!=NULL){
@@ -362,7 +363,9 @@
                    //idx++;
                    //token=strtok(NULL," ");
                }
                xmlFree(values);        
                free(curv_values);
            }
            xmlFree(property_name);
        }
@@ -376,36 +379,37 @@
    xmlNodePtr child = cur->xmlChildrenNode;
    xmlChar *points;
//    char *pts;
    int idx, polyidx, monoidx, filidx, fonoidx;
    int i,idx, polyidx, monoidx, filidx, fonoidx;
//    char *token[3];
    while (child != NULL) {
        if ((!xmlStrcmp(child->name, (const xmlChar *)"DataArray"))){
            points = xmlNodeListGetString(doc, child->xmlChildrenNode, 1);
            unsigned long data_len=0;
            ts_double *coords=(double *)ts_decompress((unsigned char *)points,strlen((char *)points), &data_len);
            data_len=data_len/sizeof(ts_double);
            //pts=(char *)points;
            //token[0]=strtok(pts," ");
            //token[1]=strtok(NULL," ");
            //token[2]=strtok(NULL,"\n");
            for(idx=0;idx<data_len;idx+=3){
            for(i=0,idx=0;i<data_len;i+=3,idx++){
//            while(token[0]!=NULL){
                if(idx<vesicle->vlist->n){
                    vesicle->vlist->vtx[idx]->x=coords[idx];//atof(token[0]);
                    vesicle->vlist->vtx[idx]->y=coords[idx+1];//atof(token[1]);
                    vesicle->vlist->vtx[idx]->z=coords[idx+2];//atof(token[2]);
                    vesicle->vlist->vtx[idx]->x=coords[i];//atof(token[0]);
                    vesicle->vlist->vtx[idx]->y=coords[i+1];//atof(token[1]);
                    vesicle->vlist->vtx[idx]->z=coords[i+2];//atof(token[2]);
                } else if(vesicle->tape->nmono && vesicle->tape->npoly && idx<vesicle->vlist->n+vesicle->tape->nmono*vesicle->tape->npoly) {
                    polyidx=(idx-vesicle->vlist->n)/vesicle->tape->nmono;
                    monoidx=(idx-vesicle->vlist->n)%vesicle->tape->nmono;
                    vesicle->poly_list->poly[polyidx]->vlist->vtx[monoidx]->x=coords[idx];//atof(token[0]);
                    vesicle->poly_list->poly[polyidx]->vlist->vtx[monoidx]->y=coords[idx+1];//atof(token[1]);
                    vesicle->poly_list->poly[polyidx]->vlist->vtx[monoidx]->z=coords[idx+2];//atof(token[2]);
                    vesicle->poly_list->poly[polyidx]->vlist->vtx[monoidx]->x=coords[i];//atof(token[0]);
                    vesicle->poly_list->poly[polyidx]->vlist->vtx[monoidx]->y=coords[i+1];//atof(token[1]);
                    vesicle->poly_list->poly[polyidx]->vlist->vtx[monoidx]->z=coords[i+2];//atof(token[2]);
                } else {
                    filidx=(idx-vesicle->vlist->n-vesicle->tape->nmono*vesicle->tape->npoly)/vesicle->tape->nfono;
                    fonoidx=(idx-vesicle->vlist->n-vesicle->tape->nmono*vesicle->tape->npoly)%vesicle->tape->nfono;
                    //fprintf(stderr,"filidx=%d, fonoidx=%d, coord=%s,%s,%s\n",filidx,fonoidx,token[0],token[1],token[2]);
                    vesicle->filament_list->poly[filidx]->vlist->vtx[fonoidx]->x=coords[idx];//atof(token[0]);
                    vesicle->filament_list->poly[filidx]->vlist->vtx[fonoidx]->y=coords[idx+1];//atof(token[1]);
                    vesicle->filament_list->poly[filidx]->vlist->vtx[fonoidx]->z=coords[idx+2];//atof(token[2]);
                    vesicle->filament_list->poly[filidx]->vlist->vtx[fonoidx]->x=coords[i];//atof(token[0]);
                    vesicle->filament_list->poly[filidx]->vlist->vtx[fonoidx]->y=coords[i+1];//atof(token[1]);
                    vesicle->filament_list->poly[filidx]->vlist->vtx[fonoidx]->z=coords[i+2];//atof(token[2]);
                }
                //for(i=0;i<2;i++)    token[i]=strtok(NULL," ");    
                //token[2]=strtok(NULL,"\n");
@@ -433,6 +437,7 @@
            bonds = xmlNodeListGetString(doc, child->xmlChildrenNode, 1);
            unsigned long data_len=0;
            unsigned long *conn=(unsigned long *)ts_decompress((unsigned char *)bonds,strlen((char *)bonds), &data_len);
            data_len=data_len/sizeof(unsigned long);
            //token[0]=strtok(b," ");
            //token[1]=strtok(NULL,"\n");
            for(idx=0;idx<data_len;idx+=2){