mirror of
https://github.com/LCPQ/DEHam
synced 2024-12-21 11:53:39 +01:00
now compiles but bug in the calculation of s2
This commit is contained in:
parent
62dba9a3c5
commit
55e106f53d
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
*bin/*
|
||||||
|
*/obj/*
|
||||||
|
*mod.mod*
|
||||||
|
irpf90.a
|
22
Makefile
22
Makefile
@ -1,6 +1,7 @@
|
|||||||
include ${SLEPC_DIR}/lib/slepc/conf/slepc_common
|
include ${SLEPC_DIR}/lib/slepc/conf/slepc_common
|
||||||
#CC=gcc
|
#CC=gcc
|
||||||
#FC = ifort
|
#FC = ifort
|
||||||
|
CLINKER = mpicc -fPIC #-wd1572 -O3 -axAVX,SSE4.2 -fno-alias -no-prec-div -no-prec-sqrt -ip
|
||||||
MAKE = /usr/bin/make
|
MAKE = /usr/bin/make
|
||||||
MKDIR_P = /bin/mkdir -p
|
MKDIR_P = /bin/mkdir -p
|
||||||
OBJ_DIR := obj
|
OBJ_DIR := obj
|
||||||
@ -24,14 +25,29 @@ ${BIN_DIR}:
|
|||||||
directories: ${OBJ_DIR} ${LIB_DIR} ${BIN_DIR}
|
directories: ${OBJ_DIR} ${LIB_DIR} ${BIN_DIR}
|
||||||
|
|
||||||
${LIB_DIR}/irpf90.a: directories
|
${LIB_DIR}/irpf90.a: directories
|
||||||
cd ${SRC_DIR} && irpf90 init && $(MAKE) irpf90.a && cp IRPF90_temp/irpf90.a ../${LIB_DIR}
|
cd ${SRC_DIR} && irpf90 init && $(MAKE) irpf90.a && cp irpf90.a ../${LIB_DIR}
|
||||||
|
|
||||||
${OBJ_DIR}/read2.o: ${SRC_DIR}/read2.c directories chkopts
|
${OBJ_DIR}/read2.o: ${SRC_DIR}/read2.c directories chkopts
|
||||||
${CC} ${SLEPC_INCLUDE} ${PETSC_CC_INCLUDES} -c -o $@ $< ${SLEPC_EPS_LIB}
|
${CC} ${SLEPC_INCLUDE} ${PETSC_CC_INCLUDES} -c -o $@ $< ${SLEPC_EPS_LIB}
|
||||||
|
|
||||||
|
${OBJ_DIR}/get_s2.o: ${SRC_DIR}/get_s2.c directories chkopts
|
||||||
|
${CC} ${SLEPC_INCLUDE} ${PETSC_CC_INCLUDES} -c -o $@ $< ${SLEPC_EPS_LIB}
|
||||||
|
|
||||||
|
${OBJ_DIR}/get_s2_cyclic.o: ${SRC_DIR}/get_s2_cyclic.c directories chkopts
|
||||||
|
${CC} ${SLEPC_INCLUDE} ${PETSC_CC_INCLUDES} -c -o $@ $< ${SLEPC_EPS_LIB}
|
||||||
|
|
||||||
|
${OBJ_DIR}/get_s2_mov.o: ${SRC_DIR}/get_s2_mov.c directories chkopts
|
||||||
|
${CC} ${SLEPC_INCLUDE} ${PETSC_CC_INCLUDES} -c -o $@ $< ${SLEPC_EPS_LIB}
|
||||||
|
|
||||||
|
${OBJ_DIR}/get_dmat.o: ${SRC_DIR}/get_dmat.c directories chkopts
|
||||||
|
${CC} ${SLEPC_INCLUDE} ${PETSC_CC_INCLUDES} -c -o $@ $< ${SLEPC_EPS_LIB}
|
||||||
|
|
||||||
|
${OBJ_DIR}/get_val_iaa2.o: ${SRC_DIR}/get_val_iaa2.c directories chkopts
|
||||||
|
${CC} ${SLEPC_INCLUDE} ${PETSC_CC_INCLUDES} -c -o $@ $< ${SLEPC_EPS_LIB}
|
||||||
|
|
||||||
${OBJ_DIR}/ex1.o: ${SRC_DIR}/ex1.c
|
${OBJ_DIR}/ex1.o: ${SRC_DIR}/ex1.c
|
||||||
-${CC} ${SLEPC_INCLUDE} ${PETSC_CC_INCLUDES} -c -o $@ $< ${SLEPC_EPS_LIB}
|
-${CC} ${SLEPC_INCLUDE} ${PETSC_CC_INCLUDES} -c -o $@ $< ${SLEPC_EPS_LIB}
|
||||||
|
|
||||||
${BIN_DIR}/ex1: ${OBJ_DIR}/read2.o ${LIB_DIR}/irpf90.a ${OBJ_DIR}/ex1.o ${SRC_DIR}/read2.h ${SRC_DIR}/stimsyr.h chkopts
|
${BIN_DIR}/ex1: ${OBJ_DIR}/read2.o ${OBJ_DIR}/get_s2_mov.o ${OBJ_DIR}/get_s2_cyclic.o ${OBJ_DIR}/get_s2.o ${OBJ_DIR}/get_dmat.o ${OBJ_DIR}/get_val_iaa2.o ${LIB_DIR}/irpf90.a ${OBJ_DIR}/ex1.o ${SRC_DIR}/read2.h ${SRC_DIR}/stimsyr.h chkopts
|
||||||
-${CLINKER} ${SLEPC_INCLUDE} ${PETSC_CC_INCLUDES} -o ${BIN_DIR}/ex1 ${OBJ_DIR}/ex1.o ${OBJ_DIR}/read2.o ${LIB_DIR}/irpf90.a ${SLEPC_EPS_LIB}# -lifcore -lirc -lcomposerxe_gen_helpers_core_2.3
|
-${CLINKER} ${SLEPC_INCLUDE} ${PETSC_CC_INCLUDES} -o ${BIN_DIR}/ex1 ${OBJ_DIR}/ex1.o ${OBJ_DIR}/read2.o ${OBJ_DIR}/get_s2.o ${OBJ_DIR}/get_s2_mov.o ${OBJ_DIR}/get_s2_cyclic.o ${OBJ_DIR}/get_dmat.o ${OBJ_DIR}/get_val_iaa2.o ${LIB_DIR}/irpf90.a ${SLEPC_EPS_LIB}# -lifcore -lirc -lcomposerxe_gen_helpers_core_2.3
|
||||||
# ${RM} ex1.o read2.o
|
# ${RM} ex1.o read2.o
|
||||||
|
5
src/.gitignore
vendored
Normal file
5
src/.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
IRPF90_temp/
|
||||||
|
IRPF90_man/
|
||||||
|
irpf90.make
|
||||||
|
irpf90_entities
|
||||||
|
tags
|
@ -6,4 +6,4 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
void get_1rdm(PetscScalar *, PetscInt *, PetscInt *, int *, PetscReal *);
|
void get_1rdm(PetscScalar *, PetscInt *, PetscInt *, int *, PetscReal *);
|
||||||
void get_2rdm(PetscScalar *, PetscInt *, PetscInt *, int *, PetscReal *, double ****);
|
void get_2rdm(PetscScalar *valxr, PetscInt *Istart, PetscInt *Iend, int *natom, PetscReal *trace2rdm, double densmat2[*natom][*natom][*natom][*natom]);
|
||||||
|
@ -676,7 +676,7 @@ void get_s2(Vec xr, PetscInt *Istart, PetscInt *Iend, PetscScalar *valxr, int *n
|
|||||||
// if(mpiid==3)printf(" ii = %d norm = %18f %18f 3 = %18f 4 = %18f\n", ii, *norm2, *norm3, *xymat2, *xymat3);
|
// if(mpiid==3)printf(" ii = %d norm = %18f %18f 3 = %18f 4 = %18f\n", ii, *norm2, *norm3, *xymat2, *xymat3);
|
||||||
}
|
}
|
||||||
|
|
||||||
ierr = PetscTime(&tt2);CHKERRQ(ierr);
|
ierr = PetscTime(&tt2);
|
||||||
//printf(" norm = %18f weight = %18f weight/N = %18f tmpwe = %18f\n", *norm2, *weight3, *weight3/(*norm2),tmpwe);
|
//printf(" norm = %18f weight = %18f weight/N = %18f tmpwe = %18f\n", *norm2, *weight3, *weight3/(*norm2),tmpwe);
|
||||||
//printf(" norm = %18f %18f xymat = %18f %18f\n", *norm2, *norm3, *xymat2, *xymat3);
|
//printf(" norm = %18f %18f xymat = %18f %18f\n", *norm2, *norm3, *xymat2, *xymat3);
|
||||||
//ierr = PetscPrintf(PETSC_COMM_WORLD," Time used for the s2 loop: %f\n",tt2-tt1);CHKERRQ(ierr);
|
//ierr = PetscPrintf(PETSC_COMM_WORLD," Time used for the s2 loop: %f\n",tt2-tt1);CHKERRQ(ierr);
|
||||||
|
@ -778,7 +778,7 @@ void get_s2_cyclic(Vec xr, PetscInt *Istart, PetscInt *Iend, PetscScalar *valxr,
|
|||||||
// if(mpiid==0)printf(" ii = %d xmat3 = %18f xmat4 = %18f diff = %18f\n", ii, xmat3, xmat4, (xmat3-xmat4));
|
// if(mpiid==0)printf(" ii = %d xmat3 = %18f xmat4 = %18f diff = %18f\n", ii, xmat3, xmat4, (xmat3-xmat4));
|
||||||
}
|
}
|
||||||
|
|
||||||
ierr = PetscTime(&tt2);CHKERRQ(ierr);
|
ierr = PetscTime(&tt2);
|
||||||
//if(mpiid==0)printf(" norm3 = %18f norm4 = %18f xymat3= %18f xymat4= %18f\n", *norm3, *norm4, *xymat3, *xymat4);
|
//if(mpiid==0)printf(" norm3 = %18f norm4 = %18f xymat3= %18f xymat4= %18f\n", *norm3, *norm4, *xymat3, *xymat4);
|
||||||
//ierr = PetscPrintf(PETSC_COMM_WORLD," Time used for the s2 loop: %f\n",tt2-tt1);CHKERRQ(ierr);
|
//ierr = PetscPrintf(PETSC_COMM_WORLD," Time used for the s2 loop: %f\n",tt2-tt1);CHKERRQ(ierr);
|
||||||
}
|
}
|
||||||
|
@ -676,7 +676,7 @@ void get_s2_mov(Vec xr, PetscInt *Istart, PetscInt *Iend, PetscScalar *valxr, in
|
|||||||
// if(mpiid==3)printf(" ii = %d norm = %18f %18f 3 = %18f 4 = %18f\n", ii, *norm2, *norm3, *xymat2, *xymat3);
|
// if(mpiid==3)printf(" ii = %d norm = %18f %18f 3 = %18f 4 = %18f\n", ii, *norm2, *norm3, *xymat2, *xymat3);
|
||||||
}
|
}
|
||||||
|
|
||||||
ierr = PetscTime(&tt2);CHKERRQ(ierr);
|
ierr = PetscTime(&tt2);
|
||||||
//printf(" norm = %18f weight = %18f weight/N = %18f tmpwe = %18f\n", *norm2, *weight3, *weight3/(*norm2),tmpwe);
|
//printf(" norm = %18f weight = %18f weight/N = %18f tmpwe = %18f\n", *norm2, *weight3, *weight3/(*norm2),tmpwe);
|
||||||
//printf(" norm = %18f %18f xymat = %18f %18f\n", *norm2, *norm3, *xymat2, *xymat3);
|
//printf(" norm = %18f %18f xymat = %18f %18f\n", *norm2, *norm3, *xymat2, *xymat3);
|
||||||
//ierr = PetscPrintf(PETSC_COMM_WORLD," Time used for the s2 loop: %f\n",tt2-tt1);CHKERRQ(ierr);
|
//ierr = PetscPrintf(PETSC_COMM_WORLD," Time used for the s2 loop: %f\n",tt2-tt1);CHKERRQ(ierr);
|
||||||
|
34
src/get_val_iaa2.c
Normal file
34
src/get_val_iaa2.c
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <petsctime.h>
|
||||||
|
#include <slepceps.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include "get_val_iaa2.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This function gets vector from a different processor
|
||||||
|
* xr the full vector
|
||||||
|
* iaa2 adresse to get value from
|
||||||
|
* getvaliaa2 the value
|
||||||
|
*/
|
||||||
|
|
||||||
|
void get_val_iaa2(Vec xr,long int *iaa2,double *getvaliaa2){
|
||||||
|
Vec x; /* initial vector, destination vector */
|
||||||
|
VecScatter scatter; /* scatter context */
|
||||||
|
IS from, to; /* index sets that define the scatter */
|
||||||
|
PetscScalar *values;
|
||||||
|
int idx_from[] = {*iaa2}, idx_to[] = {0};
|
||||||
|
VecCreateSeq( PETSC_COMM_SELF,1,&x);
|
||||||
|
ISCreateGeneral(PETSC_COMM_SELF,1,idx_from,PETSC_COPY_VALUES,&from);
|
||||||
|
ISCreateGeneral(PETSC_COMM_SELF,1,idx_to, PETSC_COPY_VALUES,&to);
|
||||||
|
printf("in get_val");
|
||||||
|
VecScatterCreate(xr,from,x,to,&scatter);
|
||||||
|
VecScatterBegin(scatter,xr,x,INSERT_VALUES,SCATTER_FORWARD);
|
||||||
|
VecScatterEnd(scatter,xr,x, INSERT_VALUES,SCATTER_FORWARD);
|
||||||
|
VecGetArray(x,&values);
|
||||||
|
*getvaliaa2 = values[0];
|
||||||
|
ISDestroy(&from);
|
||||||
|
ISDestroy(&to);
|
||||||
|
VecScatterDestroy(&scatter);
|
||||||
|
}
|
8
src/get_val_iaa2.h
Normal file
8
src/get_val_iaa2.h
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <petsctime.h>
|
||||||
|
#include <slepceps.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
void get_val_iaa2(Vec, long int *, double *);
|
@ -1,3 +1,5 @@
|
|||||||
|
#include <petscsys.h>
|
||||||
|
|
||||||
void unit_l1_(
|
void unit_l1_(
|
||||||
long int *,
|
long int *,
|
||||||
long int *,
|
long int *,
|
||||||
@ -11,5 +13,8 @@ void unit_l1_(
|
|||||||
long int *,
|
long int *,
|
||||||
long int *,
|
long int *,
|
||||||
long int *,
|
long int *,
|
||||||
|
long int *,
|
||||||
|
_Bool *,
|
||||||
|
long int *,
|
||||||
double *);
|
double *);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user