Put importing the dataset into a module.

This commit is contained in:
François Coppens 2021-02-12 19:31:31 +01:00
parent 6b699143b5
commit 90469df3c2
3 changed files with 24 additions and 42 deletions

View File

@ -17,8 +17,8 @@ fMaponiA3_testOBJ = SM_MaponiA3.o SM_MaponiA3_mod.o fMaponiA3_test.o
fMaponiA3_testLIB = -lstdc++
## Deps & objs for Fortran QMCChem_dataset_test
QMCChem_dataset_testDEP = QMCChem_dataset_test.f90 SM_MaponiA3_mod.f90
QMCChem_dataset_testOBJ = SM_MaponiA3.o SM_MaponiA3_mod.o QMCChem_dataset_test.o
QMCChem_dataset_testDEP = QMCChem_dataset_test.f90 SM_MaponiA3_mod.f90 Utils_mod.f90
QMCChem_dataset_testOBJ = SM_MaponiA3.o Utils_mod.o SM_MaponiA3_mod.o QMCChem_dataset_test.o
QMCChem_dataset_testLIB = -lstdc++
## Compile recipes for C++ cMaponiA3_test

View File

@ -1,5 +1,6 @@
program QMCChem_dataset_test
use Sherman_Morrison, only : MaponiA3
use Utils, only : Read_dataset
use, intrinsic :: iso_c_binding, only : c_int, c_double
implicit none
@ -7,37 +8,15 @@ program QMCChem_dataset_test
integer :: cycle_id, dim, n_updates
integer(c_int), dimension(:), allocatable :: Updates_index
real(c_double), dimension(:,:), allocatable :: S, S_inv, Updates
character (len = 32) :: ignore
!! Start of reading the dataset from file
open(unit = 1000, file = "test.dataset.dat")
read(1000,*)
read(1000,*) ignore, cycle_id
read(1000,*) ignore, dim
read(1000,*) ignore,n_updates
allocate(Updates_index(n_updates), S(dim,dim), &
S_inv(dim,dim), Updates(dim,n_updates))
!! Read S and S_inv
read(1000,*)
do i=1,dim
do j=1,dim
read(1000,*) ignore, ignore, S(i,j), S_inv(i,j)
end do
end do
!! Read the updates Updates and Updates_index
do j=1,n_updates
read(1000,*) ignore, Updates_index(j)
do i=1,dim
read(1000,*) ignore, Updates(i,j)
end do
end do
read(1000,*) ignore
close(1000)
!! End of reading the dataset from file
call Read_dataset("test.dataset.dat", &
cycle_id, &
dim, &
n_updates, &
S, &
S_inv, &
Updates_index, &
Updates)
!! Write current S and S_inv to file for check in Octave
open(unit = 2000, file = "Slater_old.dat")

View File

@ -1,15 +1,21 @@
module Utils
implicit none
contains
subroutine Read_dataset(filename, cycle_id, dim, n_updates &
subroutine Read_dataset(filename, cycle_id, dim, n_updates, &
S, S_inv, Updates_index, Updates)
use, intrinsic :: iso_c_binding, only : c_int, c_double
implicit none
character (len = 64), intent(in) :: filename
character (len = *), intent(in) :: filename
integer, intent(inout) :: cycle_id, dim, n_updates
integer(c_int), allocatable, intent(inout) :: Updates_index(:)
real(c_double), allocatable, intent(inout) :: S(:,:), S_inv(:,:)
real(c_double), allocatable, intent(inout) :: Updates(:,:)
integer :: i, j
character (len = 32) :: ignore
!! Start of reading the dataset from file
open(unit = 1000, file = "test.dataset.dat")
open(unit = 1000, file = filename)
read(1000,*)
read(1000,*) ignore, cycle_id
read(1000,*) ignore, dim
@ -38,7 +44,4 @@ module Utils
close(1000)
!! End of reading the dataset from file
end subroutine Read_dataset
end module Utils
end module Sherman_Morrison
end module Utils