Working for 16

milestone_5
chortas 3 years ago
parent 6b4bb901e2
commit 83affab77b

@ -7,14 +7,20 @@ void chunk_array_free(chunk_array_t* chunk_array) {
free(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); size_t newLen = fread(chunk_array->data, sizeof(double), chunk_array->chunk_size, chunk_array->fp);
chunk_array->init_pos += newLen; chunk_array->init_pos += newLen;
} }
/*
bool chunk_array_get(chunk_array_t* chunk_array, size_t pos, double *valor) { 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)) { 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]; *valor=chunk_array->data[pos%chunk_array->chunk_size];
return true; 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; chunk_array->data[pos%chunk_array->chunk_size]=valor;
return true; return true;
} }
*/
chunk_array_t* chunk_array_create(char* filename, size_t total_size, size_t chunk_size) { 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)); 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); 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) { void chunk_array_write(chunk_array_t* chunk_array, char* filename) {
chunk_array->fp = fopen(filename, "w"); chunk_array->fp = fopen(filename, "w");
if (chunk_array->fp == NULL) { 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->fp = fopen(filename, "w");
} }
chunk_array->init_pos = 0; chunk_array->init_pos = 0;
} }*/
void chunk_array_flush(chunk_array_t* chunk_array) { 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); size_t newLen = fwrite(chunk_array->data, sizeof(double), chunk_array->chunk_size, chunk_array->fp);
chunk_array->init_pos += newLen; 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;
}

@ -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); covariance(covar, variogram, grid, n, cores);
/*power spectrum*/ /*power spectrum*/
printf("Running with covar and ireal\n");
fourt(covar, ireal, n, NDIM, 1, 0, workr, worki, cores); fourt(covar, ireal, n, NDIM, 1, 0, workr, worki, cores);
/*organization of the input Gaussian white noise*/ /*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); prebuild_gwn(grid, n, realin, realization, solver, cores, seed);
/*forward fourier transform of the GWN*/ /*forward fourier transform of the GWN*/
printf("Running with realization and ireal\n");
fourt(realization, ireal, n, NDIM, 1, 0, workr, worki, cores); fourt(realization, ireal, n, NDIM, 1, 0, workr, worki, cores);
/* build realization in spectral domain */ /* build realization in spectral domain */
build_real(n, NTOT, covar, realization, ireal, cores); build_real(n, NTOT, covar, realization, ireal, cores);
chunk_array_free(covar); chunk_array_free(covar);
//remove("covar.txt"); remove("covar.txt");
/*backward fourier transform*/ /*backward fourier transform*/
printf("Running with realization and ireal\n");
fourt(realization, ireal, n, NDIM, 0, 1, workr, worki, cores); fourt(realization, ireal, n, NDIM, 0, 1, workr, worki, cores);
chunk_array_free(ireal); chunk_array_free(ireal);

@ -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]; ntot = n[0] * n[1] * n[2];
chunk_array_save(realization, 0, 0.); 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) { if (solver == 1) {
for (i = 0; i < ntot; i++) { for (i = 0; i < ntot; i++) {
double value = gasdev(seed, &idum2, &iy, iv, cores); double value = gasdev(seed, &idum2, &iy, iv, cores);
chunk_array_save(realization, i+1, value); chunk_array_save(realization, i+1, value);
//chunk_array_get((*realin).vector_2, i, &realization[i + 1]);
} }
} else { } else {
for (k = 1; k <= n[2]; k++) { 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++) { for (i = 1; i <= n[0]; i++) {
maille1 = i + (j - 1 + (k - 1) * n[1]) * n[0]; maille1 = i + (j - 1 + (k - 1) * n[1]) * n[0];
if (i <= grid.NX && j <= grid.NY && k <= grid.NZ) { 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); double value = gasdev(seed, &idum2, &iy, iv, cores);
chunk_array_save(realization, maille1, value); chunk_array_save(realization, maille1, value);
//chunk_array_get((*realin).vector_2, maille0, &realization[maille1]);
} else { } else {
chunk_array_save(realization, maille1, 0.); chunk_array_save(realization, maille1, 0.);
} }

@ -29,9 +29,9 @@ variance=3.5682389
typ=3 typ=3
k=gen(nx, ny, nz, dx, dy, dz, seed, variograms, mean, variance, typ, 8) 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) print(k - k2)
#k2 = np.load("out_2_16.npy")
del k del k
gc.collect() gc.collect()
Loading…
Cancel
Save