binary io
This commit is contained in:
parent
c00c311528
commit
d5d5c15b7e
@ -88,6 +88,6 @@ int init_file (
|
|||||||
int K2,
|
int K2,
|
||||||
FILE* initfile
|
FILE* initfile
|
||||||
){
|
){
|
||||||
read_u(u0, K1, K2, initfile);
|
read_u_bin(u0, K1, K2, initfile);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
54
src/io.c
54
src/io.c
@ -115,6 +115,60 @@ int read_u(_Complex double* u, int K1, int K2, FILE* file){
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// write final entry to file in binary format
|
||||||
|
int write_u_bin(_Complex double* u, int K1, int K2, FILE* file){
|
||||||
|
// do nothing if there is no file
|
||||||
|
if(file==NULL){
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
fwrite(u, sizeof(_Complex double), (K1+1)*(2*K2+1), file);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// read u from file in binary format
|
||||||
|
int read_u_bin(_Complex double* u, int K1, int K2, FILE* file){
|
||||||
|
char c;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
// do nothing if there is no file
|
||||||
|
if(file==NULL){
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// seek past initial comments
|
||||||
|
while(true){
|
||||||
|
ret=fscanf(file, "%c", &c);
|
||||||
|
if (ret==1 && c=='#'){
|
||||||
|
// find endline
|
||||||
|
while(true){
|
||||||
|
ret=fscanf(file, "%c", &c);
|
||||||
|
// end of file
|
||||||
|
if (ret==0) {
|
||||||
|
// no data
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (c=='\n'){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (ret==1){
|
||||||
|
// backtrack
|
||||||
|
fseek(file, -sizeof(char), SEEK_CUR);
|
||||||
|
}
|
||||||
|
// past comments
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fread(u, sizeof(_Complex double), (K1+1)*(2*K2+1), file);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// remove an entry from params string (inplace)
|
// remove an entry from params string (inplace)
|
||||||
int remove_entry(
|
int remove_entry(
|
||||||
char* param_str,
|
char* param_str,
|
||||||
|
2
src/io.h
2
src/io.h
@ -5,9 +5,11 @@
|
|||||||
|
|
||||||
// write u to file
|
// write u to file
|
||||||
int write_u(_Complex double* u, int K1, int K2, FILE* file);
|
int write_u(_Complex double* u, int K1, int K2, FILE* file);
|
||||||
|
int write_u_bin(_Complex double* u, int K1, int K2, FILE* file);
|
||||||
|
|
||||||
// read u from file
|
// read u from file
|
||||||
int read_u(_Complex double* u, int K1, int K2, FILE* file);
|
int read_u(_Complex double* u, int K1, int K2, FILE* file);
|
||||||
|
int read_u_bin(_Complex double* u, int K1, int K2, FILE* file);
|
||||||
|
|
||||||
// remove an entry from params string (inplace)
|
// remove an entry from params string (inplace)
|
||||||
int remove_entry(char* param_str, char* entry);
|
int remove_entry(char* param_str, char* entry);
|
||||||
|
@ -71,7 +71,7 @@ int uk(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// save final entry to savefile
|
// save final entry to savefile
|
||||||
write_u(u, K1, K2, savefile);
|
write_u_bin(u, K1, K2, savefile);
|
||||||
|
|
||||||
ns_free_tmps(u, tmp1, tmp2, tmp3, fft1, fft2, ifft);
|
ns_free_tmps(u, tmp1, tmp2, tmp3, fft1, fft2, ifft);
|
||||||
return(0);
|
return(0);
|
||||||
@ -242,6 +242,7 @@ int eea(
|
|||||||
if (savefile==NULL){
|
if (savefile==NULL){
|
||||||
savefile=stderr;
|
savefile=stderr;
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(savefile,"# Interrupted computation. Resume with\n");
|
fprintf(savefile,"# Interrupted computation. Resume with\n");
|
||||||
// command to resume
|
// command to resume
|
||||||
fprintf(savefile,"#! ");
|
fprintf(savefile,"#! ");
|
||||||
@ -265,7 +266,11 @@ int eea(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// save final entry to savefile
|
// save final entry to savefile
|
||||||
write_u(u, K1, K2, savefile);
|
if(savefile==stderr || savefile==stdout){
|
||||||
|
write_u(u, K1, K2, savefile);
|
||||||
|
} else {
|
||||||
|
write_u_bin(u, K1, K2, savefile);
|
||||||
|
}
|
||||||
|
|
||||||
if(running_avg_window!=0){
|
if(running_avg_window!=0){
|
||||||
free(save_print_e);
|
free(save_print_e);
|
||||||
|
Loading…
Reference in New Issue
Block a user