From adc7581acc6fb797b449f02567f97d90c7693504 Mon Sep 17 00:00:00 2001 From: Han-Yi Chou <hchou10@illinois.edu> Date: Wed, 17 Apr 2019 11:21:32 -0500 Subject: [PATCH] Push to the remote; fix some places where I forgot to close the file. --- GridDxFormat/grid_reader.c | 26 ++++++++++++++--- Kernel/debye_huckel_kernel.c | 18 ++++++++---- Kernel/lenard_jones_kernel.c | 1 + Kernel/lenard_jones_repulsion_kernel.c | 1 + Kernel/lenard_jones_trunc_kernel.c | 1 + Makefile | 40 ++++++++++++++++++++------ inc/grid_reader.h | 2 ++ inc/kernel.h | 4 +++ 8 files changed, 75 insertions(+), 18 deletions(-) diff --git a/GridDxFormat/grid_reader.c b/GridDxFormat/grid_reader.c index e90d902..ef11ba8 100644 --- a/GridDxFormat/grid_reader.c +++ b/GridDxFormat/grid_reader.c @@ -405,7 +405,7 @@ void set_grid_data(void* src, compute_type compute, void* kernel) } } -static void* create_new_grid(size_t nx, size_t ny, size_t nz, double* origin, double** basis) +void* create_new_grid(size_t nx, size_t ny, size_t nz, double* origin, double** basis) { void* g = malloc(sizeof(grid)); ((grid*)g)->nx = nx; @@ -602,6 +602,14 @@ void sum_grids(void* dest, int num, void** src) } } +void sub_grids(void* dest, void* s1, void* s2) +{ + grid* src1 = (grid*)s1; + grid* src2 = (grid*)s2; + grid* out = (grid*)dest; + for(size_t idx = 0; idx < out->size; idx++) + out->data[idx] = src1->data[idx]-src2->data[idx]; +} void pad_grid(void** g, int nx, int ny, int nz) { grid* src = (grid*)(*g); @@ -628,7 +636,12 @@ void pad_grid(void** g, int nx, int ny, int nz) } } grid_destroy(src); - *g = dest; + *g = dest; + double* o = get_grid_origin(*g); + double** b= get_grid_basis(*g); + o[0] -= (nx-old_nx)/2*b[0][0]; + o[1] -= (ny-old_ny)/2*b[1][1]; + o[2] -= (nz-old_nz)/2*b[2][2]; } void slice_grid(void** g, int nx, int ny, int nz) @@ -659,12 +672,17 @@ void slice_grid(void** g, int nx, int ny, int nz) for(int k = k0; k < k1; ++k) { int old = k + old_nz * ( j + old_ny * i); - int new = k+(nz-old_nz)/2 + nz * ( j + (ny-old_ny)/2 + ny * (i +(nx-old_nx)/2)); + int new = (k-k0) + nz * ( j - j0 + ny * (i - i0)); (get_grid_data(dest))[new] = (get_grid_data(src))[old]; } } } grid_destroy(src); - *g = dest; + *g = dest; + double* o = get_grid_origin(*g); + double** b = get_grid_basis(*g); + o[0] -= (nx-old_nx)/2*b[0][0]; + o[1] -= (ny-old_ny)/2*b[1][1]; + o[2] -= (nz-old_nz)/2*b[2][2]; } diff --git a/Kernel/debye_huckel_kernel.c b/Kernel/debye_huckel_kernel.c index b7f840f..04df750 100644 --- a/Kernel/debye_huckel_kernel.c +++ b/Kernel/debye_huckel_kernel.c @@ -6,7 +6,7 @@ struct debye_huckel_kernel { double screen_length; - double shift; + double epsilon; }; void* debye_huckel_create(char* name) @@ -35,11 +35,11 @@ void* debye_huckel_create(char* name) return NULL; } } - else if(strcmp(tmp, "Shift") == 0) + else if(strcmp(tmp, "Dielectric") == 0) { tmp = strtok(NULL, " "); if(tmp != NULL) - ((debye_huckel_kernel*)src)->shift = atof(tmp); + ((debye_huckel_kernel*)src)->epsilon = atof(tmp); else { printf("Error formating\n"); @@ -54,6 +54,7 @@ void* debye_huckel_create(char* name) return NULL; } } + fclose(infile); return src; } @@ -63,9 +64,14 @@ double debye_huckel_compute(size_t i, size_t j, size_t k, double* origin, double double pos[3]; for(size_t dim = 0; dim < 3; ++dim) pos[dim] = basis[dim][0]*i + basis[dim][1]*j + basis[dim][2]*k + origin[dim]; - double d = sqrt(pos[0] * pos[0] + pos[1] * pos[1] + pos[2] * pos[2]); - double e = exp(-d/kernel->screen_length)/(d+kernel->shift); - return (e > 100) ? 100: e; + double d = sqrt(pos[0] * pos[0] + pos[1] * pos[1] + pos[2] * pos[2]); + if(d > 0.) + { + double e = exp(-d/kernel->screen_length)/d/kernel->epsilon; + return (e > 20.) ? 20.: e; + } + else + return 20.; } void debye_huckel_destroy(void* src) diff --git a/Kernel/lenard_jones_kernel.c b/Kernel/lenard_jones_kernel.c index 12a7e48..a1f31df 100644 --- a/Kernel/lenard_jones_kernel.c +++ b/Kernel/lenard_jones_kernel.c @@ -54,6 +54,7 @@ void* lenard_jones_create(char* name) return NULL; } } + fclose(infile); return src; } diff --git a/Kernel/lenard_jones_repulsion_kernel.c b/Kernel/lenard_jones_repulsion_kernel.c index 735c45e..c2c1505 100644 --- a/Kernel/lenard_jones_repulsion_kernel.c +++ b/Kernel/lenard_jones_repulsion_kernel.c @@ -54,6 +54,7 @@ void* lenard_jones_repulsion_create(char* name) return NULL; } } + fclose(infile); return src; } diff --git a/Kernel/lenard_jones_trunc_kernel.c b/Kernel/lenard_jones_trunc_kernel.c index e5dad1c..e7e0f82 100644 --- a/Kernel/lenard_jones_trunc_kernel.c +++ b/Kernel/lenard_jones_trunc_kernel.c @@ -72,6 +72,7 @@ void* lenard_jones_trunc_create(char* name) } ((lenard_jones_trunc_kernel*)src)->c6 /= ((lenard_jones_trunc_kernel*)src)->scaling; ((lenard_jones_trunc_kernel*)src)->c12 /= ((lenard_jones_trunc_kernel*)src)->scaling; + fclose(infile); return src; } diff --git a/Makefile b/Makefile index c9d44be..1451978 100644 --- a/Makefile +++ b/Makefile @@ -1,31 +1,43 @@ CC=gcc -INC=-I/usr/include -I./inc +INC=-I/usr/include -I/home/hchou10/GenerateGridPotential/inc ifeq ($(dbg),1) CFLAGS= -std=c99 -D_GNU_SOURCE -g -Og -Wall -Wextra -lm else CFLAGS= -std=c99 -D_GNU_SOURCE -O3 -Wall -Wextra -lm endif CLIB=-lfftw3 -OBJ=main.o GridDxFormat/grid_reader.o Kernel/debye_huckel_kernel.o Kernel/lenard_jones_repulsion_kernel.o Kernel/lenard_jones_trunc_kernel.o LinkList/link_list.o fftw/fftw.o Kernel/lenard_jones_kernel.o +OBJ=main.o GridDxFormat/grid_reader.o Kernel/debye_huckel_kernel.o Kernel/lenard_jones_repulsion_kernel.o Kernel/lenard_jones_trunc_kernel.o \ +LinkList/link_list.o fftw/fftw.o Kernel/lenard_jones_kernel.o Kernel/tabulated_pot_kernel.o Kernel/onc_elec_kernel.o Kernel/gaussian_kernel.o \ +Kernel/lenard_jones_kernel1.o + ifeq ($(dbg),1) EXE=gen_pot-dbg else EXE=gen_pot endif -EXE_SUM=sum_grid +EXE_SUM=sum_grid slice_grid sub_grid + all: ${EXE} ${EXE_SUM} ${EXE}:${OBJ} ${CC} ${CFLAGS} ${INC} ${OBJ} -o ${EXE} ${CLIB} -${EXE_SUM}: sum.o GridDxFormat/grid_reader.o - ${CC} ${CFLAGS} ${INC} sum.o GridDxFormat/grid_reader.o -o ${EXE_SUM} +${EXE_SUM}: grid_tools/sum.o GridDxFormat/grid_reader.o grid_tools/slice.o grid_tools/sub.o + ${CC} ${CFLAGS} ${INC} grid_tools/sum.o GridDxFormat/grid_reader.o -o sum_grid + ${CC} ${CFLAGS} ${INC} grid_tools/slice.o GridDxFormat/grid_reader.o -o slice_grid + ${CC} ${CFLAGS} ${INC} grid_tools/sub.o GridDxFormat/grid_reader.o -o sub_grid main.o: main.c ${CC} ${CFLAGS} ${INC} -c main.c -o main.o -sum.o: sum.c - ${CC} ${CFLAGS} ${INC} -c sum.c -o sum.o +grid_tools/sub.o: grid_tools/sub.c + ${CC} ${CFLAGS} ${INC} -c grid_tools/sub.c -o grid_tools/sub.o + +grid_tools/sum.o: grid_tools/sum.c + ${CC} ${CFLAGS} ${INC} -c grid_tools/sum.c -o grid_tools/sum.o + +grid_tools/slice.o: grid_tools/slice.c + ${CC} ${CFLAGS} ${INC} -c grid_tools/slice.c -o grid_tools/slice.o GridDxFormat/grid_reader.o: GridDxFormat/grid_reader.c ${CC} ${CFLAGS} ${INC} -c GridDxFormat/grid_reader.c -o GridDxFormat/grid_reader.o @@ -36,12 +48,24 @@ Kernel/debye_huckel_kernel.o:Kernel/debye_huckel_kernel.c Kernel/lenard_jones_kernel.o:Kernel/lenard_jones_kernel.c ${CC} ${CFLAGS} ${INC} -c Kernel/lenard_jones_kernel.c -o Kernel/lenard_jones_kernel.o +Kernel/lenard_jones_kernel1.o:Kernel/lenard_jones_kernel1.c + ${CC} ${CFLAGS} ${INC} -c Kernel/lenard_jones_kernel1.c -o Kernel/lenard_jones_kernel1.o + Kernel/lenard_jones_trunc_kernel.o:Kernel/lenard_jones_trunc_kernel.c ${CC} ${CFLAGS} ${INC} -c Kernel/lenard_jones_trunc_kernel.c -o Kernel/lenard_jones_trunc_kernel.o Kernel/lenard_jones_repulsion_kernel.o:Kernel/lenard_jones_repulsion_kernel.c ${CC} ${CFLAGS} ${INC} -c Kernel/lenard_jones_repulsion_kernel.c -o Kernel/lenard_jones_repulsion_kernel.o +Kernel/tabulated_pot_kernel.o:Kernel/tabulated_pot_kernel.c + ${CC} ${CFLAGS} ${INC} -c Kernel/tabulated_pot_kernel.c -o Kernel/tabulated_pot_kernel.o + +Kernel/onc_elec_kernel.o:Kernel/onc_elec_kernel.c + ${CC} ${CFLAGS} ${INC} -c Kernel/onc_elec_kernel.c -o Kernel/onc_elec_kernel.o + +Kernel/gaussian_kernel.o:Kernel/gaussian_kernel.c + ${CC} ${CFLAGS} ${INC} -c Kernel/gaussian_kernel.c -o Kernel/gaussian_kernel.o + LinkList/link_list.o:LinkList/link_list.c ${CC} ${CFLAGS} ${INC} -c LinkList/link_list.c -o LinkList/link_list.o @@ -49,4 +73,4 @@ fftw/fftw.o:fftw/fftw.c ${CC} ${CFLAGS} ${INC} -c fftw/fftw.c -o fftw/fftw.o clean: - rm -f ${OBJ} ${EXE} ${EXE_SUM} + rm -f ${OBJ} ${EXE} ${EXE_SUM} grid_tools/*.o diff --git a/inc/grid_reader.h b/inc/grid_reader.h index 7b6c6d7..b3f5f69 100644 --- a/inc/grid_reader.h +++ b/inc/grid_reader.h @@ -18,6 +18,8 @@ typedef double (*compute_type)(size_t,size_t,size_t,double*,double**, void*); void set_grid_data(void* src, compute_type compute, void* kernel); void* resample_grid_data(void* src); void sum_grids(void* dest, int num, void** src); +void sub_grids(void* dest, void* s1, void* s2); void pad_grid(void** g, int nx, int ny, int nz); void slice_grid(void** g, int nx, int ny, int nz); +void* create_new_grid(size_t nx, size_t ny, size_t nz, double* origin, double** basis); #endif diff --git a/inc/kernel.h b/inc/kernel.h index 971a74e..51936b6 100644 --- a/inc/kernel.h +++ b/inc/kernel.h @@ -7,3 +7,7 @@ typedef void (*destroy_type)(char*); #include "lenard_jones_kernel.h" #include "lenard_jones_trunc_kernel.h" #include "lenard_jones_repulsion_kernel.h" +#include "tabulated_pot_kernel.h" +#include "onc_elec_kernel.h" +#include "gaussian_kernel.h" +#include "lenard_jones_kernel1.h" -- GitLab