Trisurf Monte Carlo simulator
Samo Penic
2019-10-18 a69203a95d66595b80891aafc1ca8a59303290d0
Debugged all the leaks. Decompression still not working
4 files modified
33 ■■■■■ changed files
src/io.c 9 ●●●●● patch | view | raw | blame | history
src/snapshot.c 20 ●●●●● patch | view | raw | blame | history
src/snapshot.h 2 ●●● patch | view | raw | blame | history
src/tape 2 ●●● patch | view | raw | blame | history
src/io.c
@@ -255,16 +255,18 @@
    fprintf(fh, " <UnstructuredGrid>\n");
    fprintf(fh, "<Piece NumberOfPoints=\"%u\" NumberOfCells=\"%u\">\n",vlist->n+monono*polyno+fonono*filno, blist->n+monono*polyno+filno*(fonono-1)+vesicle->tlist->n);
    fprintf(fh,"<PointData Scalars=\"vertices_idx\">\n<DataArray type=\"Int64\" Name=\"vertices_idx\" format=\"binary\">");
    int *int_vector=(int *)malloc((vlist->n+monono*polyno+fonono*filno)*sizeof(ts_uint));
    long *int_vector=(long *)malloc((vlist->n+monono*polyno+fonono*filno)*sizeof(long));
// sizes are as expected 4 bytes for int and 1 byte for char
//    printf("size of ts_uint %ld, of int %ld, of char %ld",sizeof(ts_uint), sizeof(int), sizeof(char));
    int offset=0;
       for(i=0;i<vlist->n;i++){
    //    fprintf(fh,"%u ",vtx[i]->idx);
        int_vector[i+offset]=vtx[i]->idx;
    }
    offset=offset+i;
    //polymeres
    if(poly){
        poly_idx=vlist->n;
        offset=offset+i;
        for(i=0;i<vesicle->poly_list->n;i++){
            for(j=0;j<vesicle->poly_list->poly[i]->vlist->n;j++,poly_idx++){
                //fprintf(fh,"%u ", poly_idx);
@@ -285,7 +287,8 @@
            offset=offset+j;
        }
    }
    char *printout=ts_compress_intlist(int_vector,(vlist->n+monono*polyno+fonono*filno)*sizeof(ts_uint));
    printf("Offset in the end is %d, should be %d",offset,(vlist->n+monono*polyno+fonono*filno) );
    char *printout=ts_compress((char *)int_vector,offset*sizeof(long), offset);
    fprintf(fh,"%s",printout);
    free(printout);
src/snapshot.c
@@ -156,7 +156,8 @@
    char *compr=(char *)malloc(data_len*sizeof(char));
    defstream.avail_out = data_len+1;
    defstream.next_out = (unsigned char *)compr;
    deflateInit(&defstream, Z_BEST_COMPRESSION);
    deflateInit(&defstream, 6);
//    deflateInit(&defstream, Z_BEST_COMPRESSION);
        deflate(&defstream, Z_FINISH);
        deflateEnd(&defstream);
    *compressed=compr;
@@ -172,19 +173,22 @@
    return nbase;
}
char *ts_compress_intlist(int *data, ts_uint data_len){
char *ts_compress(char *data, ts_uint data_len, ts_uint original_len){
    size_t nbase1, nbase2;
    char *compr;
    size_t number_of_compressed_bytes=ts_compress_data((char *)data, data_len*sizeof(int), &compr);
    size_t number_of_compressed_bytes=ts_compress_data(data, data_len, &compr);
    char *encoded_compressed=base64_encode((unsigned char *)compr,number_of_compressed_bytes,&nbase1);
    free(compr);
    ts_uint header[4]={1, data_len, data_len, nbase1};
    ts_uint header[4]={1, original_len, original_len, number_of_compressed_bytes};
    char *encoded_header=(char *)base64_encode((unsigned char *)header, 4*sizeof(ts_uint), &nbase2);
    encoded_header=realloc(encoded_header, nbase1+nbase2);
    encoded_header=strcat(encoded_header,encoded_compressed);
    fprintf(stderr,"WAS HERE %d\n", data_len);
    char *return_value=malloc((nbase1+nbase2+1)*sizeof(char));
    strncpy(return_value,encoded_header,nbase2);
    strncpy(return_value+nbase2,encoded_compressed,nbase1);
    *(return_value+nbase1+nbase2)=0;
    printf("Compressed size in bytes= %ld, size of encoded header= %ld, size of encoded compressed= %ld.\n",number_of_compressed_bytes, nbase2, nbase1);
    free(encoded_compressed);
    return encoded_header;
    free(encoded_header);
    return return_value;
}
ts_uint ts_decompress_string64(char *b64, ts_uint data_len, char **decompressed){
src/snapshot.h
@@ -26,5 +26,5 @@
void build_decoding_table();
void base64_cleanup();
ts_uint ts_compress_string64(char *data, ts_uint data_len, char **compressed);
char *ts_compress_intlist(int *data, ts_uint data_len);
char *ts_compress(char *data, ts_uint data_len, ts_uint original_len);
#endif
src/tape
@@ -30,7 +30,7 @@
####### Polymer (brush) definitions ###########
# npoly is a number of polymers attached to npoly distinct vertices on vesicle
npoly=10
npoly=0
# nmono is a number of monomers in each polymer
nmono=20
# Spring constant between monomers of the polymer