diff --git a/fftma_module/gen/lib_src/chunk_array.c b/fftma_module/gen/lib_src/chunk_array.c index 58d0c74..607bdbf 100644 --- a/fftma_module/gen/lib_src/chunk_array.c +++ b/fftma_module/gen/lib_src/chunk_array.c @@ -7,14 +7,20 @@ void chunk_array_free(chunk_array_t* chunk_array) { free(chunk_array); } -bool chunk_array_update_read(chunk_array_t* chunk_array) { +bool chunk_array_update_read(chunk_array_t* chunk_array, size_t pos) { + + int init_pos = pos/chunk_array->chunk_size; + + fseek(chunk_array->fp, init_pos * chunk_array->chunk_size * sizeof(double), SEEK_SET); + size_t newLen = fread(chunk_array->data, sizeof(double), chunk_array->chunk_size, chunk_array->fp); chunk_array->init_pos += newLen; } +/* bool chunk_array_get(chunk_array_t* chunk_array, size_t pos, double *valor) { if (pos>((chunk_array->init_pos + chunk_array->chunk_size)-1)) { - chunk_array_update_read(chunk_array); + chunk_array_update_read(chunk_array, pos); } *valor=chunk_array->data[pos%chunk_array->chunk_size]; return true; @@ -27,6 +33,7 @@ bool chunk_array_save(chunk_array_t* chunk_array, size_t pos, double valor) { chunk_array->data[pos%chunk_array->chunk_size]=valor; return true; } +*/ chunk_array_t* chunk_array_create(char* filename, size_t total_size, size_t chunk_size) { chunk_array_t* chunk_array = (chunk_array_t*)malloc(sizeof(chunk_array_t)); @@ -56,6 +63,7 @@ void chunk_array_read(chunk_array_t* chunk_array) { size_t newLen = fread(chunk_array->data, sizeof(double), chunk_array->chunk_size, chunk_array->fp); } +/* void chunk_array_write(chunk_array_t* chunk_array, char* filename) { chunk_array->fp = fopen(filename, "w"); if (chunk_array->fp == NULL) { @@ -63,9 +71,22 @@ void chunk_array_write(chunk_array_t* chunk_array, char* filename) { chunk_array->fp = fopen(filename, "w"); } chunk_array->init_pos = 0; -} +}*/ void chunk_array_flush(chunk_array_t* chunk_array) { size_t newLen = fwrite(chunk_array->data, sizeof(double), chunk_array->chunk_size, chunk_array->fp); chunk_array->init_pos += newLen; } + + +bool chunk_array_get(chunk_array_t* chunk_array, size_t pos, double *valor) { + fseek(chunk_array->fp, pos * sizeof(double), SEEK_SET); + fread(valor, sizeof(double), 1, chunk_array->fp); + return true; +} + +bool chunk_array_save(chunk_array_t* chunk_array, size_t pos, double valor) { + fseek(chunk_array->fp, pos * sizeof(double), SEEK_SET); + fwrite(&valor, sizeof(double), 1, chunk_array->fp); + return true; +} \ No newline at end of file diff --git a/fftma_module/gen/lib_src/fftma2.c b/fftma_module/gen/lib_src/fftma2.c index 9ead660..dcca2ff 100644 --- a/fftma_module/gen/lib_src/fftma2.c +++ b/fftma_module/gen/lib_src/fftma2.c @@ -66,7 +66,6 @@ void FFTMA2(struct vario_mod variogram, struct grid_mod grid, int n[3], struct r covariance(covar, variogram, grid, n, cores); /*power spectrum*/ - printf("Running with covar and ireal\n"); fourt(covar, ireal, n, NDIM, 1, 0, workr, worki, cores); /*organization of the input Gaussian white noise*/ @@ -74,17 +73,15 @@ void FFTMA2(struct vario_mod variogram, struct grid_mod grid, int n[3], struct r prebuild_gwn(grid, n, realin, realization, solver, cores, seed); /*forward fourier transform of the GWN*/ - printf("Running with realization and ireal\n"); fourt(realization, ireal, n, NDIM, 1, 0, workr, worki, cores); /* build realization in spectral domain */ build_real(n, NTOT, covar, realization, ireal, cores); chunk_array_free(covar); - //remove("covar.txt"); + remove("covar.txt"); /*backward fourier transform*/ - printf("Running with realization and ireal\n"); fourt(realization, ireal, n, NDIM, 0, 1, workr, worki, cores); chunk_array_free(ireal); diff --git a/fftma_module/gen/lib_src/prebuild_gwn.c b/fftma_module/gen/lib_src/prebuild_gwn.c index a6382cf..e228890 100644 --- a/fftma_module/gen/lib_src/prebuild_gwn.c +++ b/fftma_module/gen/lib_src/prebuild_gwn.c @@ -34,14 +34,10 @@ void prebuild_gwn(struct grid_mod grid, int n[3], struct realization_mod* realin ntot = n[0] * n[1] * n[2]; chunk_array_save(realization, 0, 0.); - /*printf("Antes de llamar a chunkarray read\n"); - chunk_array_read((*realin).vector_2); - printf("Despues de llamar a chunkarray read\n");*/ if (solver == 1) { for (i = 0; i < ntot; i++) { double value = gasdev(seed, &idum2, &iy, iv, cores); chunk_array_save(realization, i+1, value); - //chunk_array_get((*realin).vector_2, i, &realization[i + 1]); } } else { for (k = 1; k <= n[2]; k++) { @@ -49,11 +45,8 @@ void prebuild_gwn(struct grid_mod grid, int n[3], struct realization_mod* realin for (i = 1; i <= n[0]; i++) { maille1 = i + (j - 1 + (k - 1) * n[1]) * n[0]; if (i <= grid.NX && j <= grid.NY && k <= grid.NZ) { - //maille0 = i - 1 + (j - 1 + (k - 1) * grid.NY) * grid.NX; - //printf("Maille0 es %d", maille0); double value = gasdev(seed, &idum2, &iy, iv, cores); chunk_array_save(realization, maille1, value); - //chunk_array_get((*realin).vector_2, maille0, &realization[maille1]); } else { chunk_array_save(realization, maille1, 0.); } diff --git a/fftma_module/gen/test.py b/fftma_module/gen/test.py index 660a103..7b23a40 100644 --- a/fftma_module/gen/test.py +++ b/fftma_module/gen/test.py @@ -29,9 +29,9 @@ variance=3.5682389 typ=3 k=gen(nx, ny, nz, dx, dy, dz, seed, variograms, mean, variance, typ, 8) +k2 = np.load("out_2_16.npy") -#np.save(f"out_{N}.npy",k) -#k2 = np.load("out_2_16.npy") +print(k - k2) del k gc.collect() \ No newline at end of file