diff --git a/GridDxFormat/grid_reader.c b/GridDxFormat/grid_reader.c index ef11ba833c05ea713b15d8dc2ff9d9fdf5f6b9b8..551b4734a5c82dcd83d04bf6096fd3022e3e718e 100644 --- a/GridDxFormat/grid_reader.c +++ b/GridDxFormat/grid_reader.c @@ -610,6 +610,14 @@ void sub_grids(void* dest, void* s1, void* s2) for(size_t idx = 0; idx < out->size; idx++) out->data[idx] = src1->data[idx]-src2->data[idx]; } + +void multiply_constant(void* dest, double a) +{ + grid* out = (grid*)dest; + for(size_t idx = 0; idx < out->size; idx++) + out->data[idx] *= a; +} + void pad_grid(void** g, int nx, int ny, int nz) { grid* src = (grid*)(*g); diff --git a/Makefile b/Makefile index 14519783b60aa5caa0c82a0ae05863774f5a1ebe..782c700996dbef860c1bd2252a5d8c0a5c838466 100644 --- a/Makefile +++ b/Makefile @@ -8,25 +8,25 @@ 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 Kernel/tabulated_pot_kernel.o Kernel/onc_elec_kernel.o Kernel/gaussian_kernel.o \ -Kernel/lenard_jones_kernel1.o +Kernel/lenard_jones_kernel1.o ifeq ($(dbg),1) EXE=gen_pot-dbg else EXE=gen_pot endif -EXE_SUM=sum_grid slice_grid sub_grid +EXE_SUM=sum_grid slice_grid sub_grid mult_grid all: ${EXE} ${EXE_SUM} ${EXE}:${OBJ} ${CC} ${CFLAGS} ${INC} ${OBJ} -o ${EXE} ${CLIB} -${EXE_SUM}: grid_tools/sum.o GridDxFormat/grid_reader.o grid_tools/slice.o grid_tools/sub.o +${EXE_SUM}: grid_tools/sum.o GridDxFormat/grid_reader.o grid_tools/slice.o grid_tools/sub.o grid_tools/multiply.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 - + ${CC} ${CFLAGS} ${INC} grid_tools/multiply.o GridDxFormat/grid_reader.o -o mult_grid main.o: main.c ${CC} ${CFLAGS} ${INC} -c main.c -o main.o @@ -36,6 +36,9 @@ grid_tools/sub.o: grid_tools/sub.c grid_tools/sum.o: grid_tools/sum.c ${CC} ${CFLAGS} ${INC} -c grid_tools/sum.c -o grid_tools/sum.o +grid_tools/multiply.o: grid_tools/multiply.c + ${CC} ${CFLAGS} ${INC} -c grid_tools/multiply.c -o grid_tools/multiply.o + grid_tools/slice.o: grid_tools/slice.c ${CC} ${CFLAGS} ${INC} -c grid_tools/slice.c -o grid_tools/slice.o diff --git a/grid_tools/multiply.c b/grid_tools/multiply.c new file mode 100644 index 0000000000000000000000000000000000000000..8655d4b69121fce9ae60139935cc464365c9b563 --- /dev/null +++ b/grid_tools/multiply.c @@ -0,0 +1,17 @@ +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <unistd.h> +#include "grid_reader.h" + +int main(int argc, char** argv) +{ + double a = (double)atof(argv[3]); + void* grid; + grid = gridformat_reader(argv[1]); + multiply_constant(grid, a); + + gridformat_writer(argv[2], grid); + grid_destroy(grid); + return 0; +} diff --git a/inc/grid_reader.h b/inc/grid_reader.h index b3f5f694d03b3af694d2b3f887258f8a000054b9..3817a669659f34d7a59b26b84f4162af3ae8139d 100644 --- a/inc/grid_reader.h +++ b/inc/grid_reader.h @@ -22,4 +22,5 @@ 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); +void multiply_constant(void* dest, double a); #endif