#include "Py_py-api.h" #include "genlib.h" #include "geostat.h" #include "simpio.h" #include "toolsFFTMA.h" #include "toolsIO.h" #include "log.h" #include "memory.h" #include #include #include #include #include #include #include #include /* kgeneration */ /* Z is the GWN with 0-mean and 1-variance */ /* Y is the realization with mean and variance wanted */ void Py_kgeneration(long seed, struct grid_mod grid, struct statistic_mod stat, struct vario_mod variogram, struct realization_mod* Z, struct realization_mod* Y, int n[3]) { clock_t t = clock(); int i, N; int typelog; /*generate Gaussian white noise*/ N = grid.NX * grid.NY * grid.NZ; n[0] = 0; n[1] = 0; n[2] = 0; log_info("RESULT = in progress, N = %d", N); struct cpustat st0_0, st0_1; get_stats(&st0_0, -1); generate(&seed, N, Z); /*FFTMA*/ FFTMA2(variogram, grid, n, Z, Y); double* total_ram = malloc(sizeof(double)); getTotalVirtualMem(total_ram); double* used_ram = malloc(sizeof(double)); getVirtualMemUsed(used_ram); log_info("TOTAL VIRTUAL MEM = %5.1f MB, USED VIRTUAL MEM = %5.1f MB, USED VIRTUAL MEM BY CURRENT PROCESS = %d MB", *total_ram, *used_ram, getVirtualMemUsedByCurrentProcess()); get_stats(&st0_1, -1); log_info("CPU: %lf%%\n", calculate_load(&st0_0, &st0_1)); /* make a log normal realization */ if (stat.type == 1 || stat.type == 2) { typelog = stat.type + 2; nor2log(Y, typelog, Y); } t = clock() - t; double time_taken = ((double)t)/CLOCKS_PER_SEC; // calculate the elapsed time log_info("RESULT = success, ELAPSED = %f seconds", time_taken); }