Cleaning but qp_ninja is now long...

This commit is contained in:
Thomas Applencourt 2015-06-04 16:40:00 +02:00
parent 21997f9463
commit 62ef20c607
19 changed files with 237 additions and 410 deletions

View File

@ -12,7 +12,7 @@ before_script:
script:
- ./setup_environment.sh --robot
- source ./quantum_package.rc
- ./scripts/compilation/create_ninja_build.py --production ./config/gfortran_example.cfg
- ./ninja/ninja
- qp_create_ninja.py --production ./config/gfortran_example.cfg
- ninja
- cd ocaml ; make ; cd -
- cd testing_no_regression ; ./unit_test.py

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Usage: create_ninja_build.py (--development | --production) CONFIG_FILE
Usage: qp_create_ninja.py (--development | --production) CONFIG_FILE
"""
import os
@ -12,7 +12,7 @@ from collections import namedtuple
from collections import defaultdict
try:
from module_handler import get_dict_module_boss, get_dict_genealogy_desc
from module_handler import ModuleHandler
from read_compilation_cfg import get_compilation_option
from docopt import docopt
except ImportError:
@ -307,26 +307,21 @@ def get_l_file_for_module(path_module_abs):
l_template = []
for f in os.listdir(path_module_abs):
if f.endswith(".template.f"):
if f.lower().endswith(tuple([".template.f", ".include.f"])):
l_template.append(join(path_module_abs, f))
elif f.endswith(".irp.f"):
l_irp.append(join(path_module_abs, f))
elif any(f.endswith("{0}".format(i)) for i in [".f",
".f90",
".c",
".cpp",
".cxx"]):
elif f.lower().endswith(tuple([".f", ".f90", ".c", ".cpp", ".cxx"])):
l_src.append(join(path_module_abs, f))
obj = '{0}.o'.format(os.path.splitext(f)[0])
l_obj.append(join(path_module_abs, obj))
elif f == "EZFIO.cfg":
l_irp.append(join(path_module_abs, "ezfio_interface.irp.f"))
d = dict()
d["l_irp"] = l_irp
d["l_src"] = l_src
d["l_obj"] = l_obj
d["l_template"] = l_template
d = {"l_irp": l_irp,
"l_src": l_src,
"l_obj": l_obj,
"l_template": l_template}
return d
@ -459,7 +454,7 @@ def ninja_readme_build(path_module):
# |_) o ._ _. ._
# |_) | | | (_| | \/
# /
def get_program(path_module):
def get_binaries(path_module):
"""
Return the list of binaries (Path= namedtuple('Path', ['abs', 'rel']) for a module
"""
@ -484,7 +479,7 @@ def get_program(path_module):
return []
def get_dict_binaries(mode="production"):
def get_dict_binaries(l_module, mode="production"):
"""
Return a dict [module] = list_binaries
If a the production mode is enable only header module
@ -497,20 +492,20 @@ def get_dict_binaries(mode="production"):
# Create d_binaries
# Ake module => binaries generated
for module in d_genealogy_path.keys():
l_binaries = get_program(module)
for module in l_module:
l_binaries = get_binaries(module)
if l_binaries:
d_binaries[module] += l_binaries
if mode == "production":
dict_boss = get_dict_module_boss()
dict_boss_path = dict_module_genelogy_path(dict_boss)
dict_root = ModuleHandler.dict_root
dict_root_path = dict_module_genelogy_path(dict_root)
d_binaries_condensed = defaultdict(list)
for module in d_binaries:
d_binaries_condensed[dict_boss_path[module]] += d_binaries[module]
d_binaries_condensed[dict_root_path[module]] += d_binaries[module]
d_binaries = d_binaries_condensed
@ -649,11 +644,14 @@ if __name__ == "__main__":
# G e n e a l o g y _ d i c t #
# ~#~#~#~#~#~#~#~#~#~#~#~#~#~ #
d_genealogy = get_dict_genealogy_desc()
d_genealogy = ModuleHandler.dict_descendant
d_genealogy_path = dict_module_genelogy_path(d_genealogy)
d_irp = get_file_dependency(d_genealogy_path)
d_binaries_production = get_dict_binaries(mode="production")
l_module = d_genealogy_path.keys()
d_binaries_production = get_dict_binaries(l_module,
mode="production")
# ~#~#~#~#~#~#~#~#~#~#~#~#~ #
# M o d u l e _ t o _ i r p #

View File

@ -1,18 +0,0 @@
#!/bin/bash
# Prepares the EZFIO library before running make
# Wed Mar 25 21:25:11 CET 2015
echo "Building EZFIO library"
echo "=-=-=-=-=-=-=-=-=-=-=-"
# Interpret all the EZFIO.cfg files
for dir in ${QPACKAGE_ROOT}/src/*/
do
cd $dir || exit -1
${QPACKAGE_ROOT}/scripts/ezfio_interface/ei_handler.py --ezfio_config --ezfio_default
done
# For old-style directories. Will be removed some day...
cp ${QPACKAGE_ROOT}/src{/*,}/*.ezfio_config ${QPACKAGE_ROOT}/EZFIO/config

View File

@ -1,37 +0,0 @@
#!/bin/bash
#
# This script should run from the directory $QPACKAGE_ROOT/src
# Check is we are in `QPACKAGE_ROOT_SRC` and all the dependency are correct
${QPACKAGE_ROOT}/scripts/module/check_src.sh
NPROC=$(cat /proc/cpuinfo | grep MHz | wc -l)
export IN_MAKE=1
for MODULE in $@
do
if [[ ! -d ${MODULE} ]]
then
error "Module ${MODULE} doesn't exist"
fi
cd ${MODULE}
echo ${MODULE}
if [[ $# -eq 1 ]]
then
env make -j ${NPROC} all
else
env make -j ${NPROC} all &> make.log
if [[ $? -ne 0 ]]
then
cat make.log
error "
Build failed for module $MODULE
"
fi
fi
cd ${OLDPWD}
done
${QPACKAGE_ROOT}/scripts/module/create_executables_list.sh

View File

@ -14,7 +14,7 @@ function do_clean()
{
rm -rf -- \
IRPF90_temp IRPF90_man Makefile.depend \
$(module_handler.py print_genealogy) include \
$(module_handler.py print_descendant) include \
ezfio_interface.irp.f irpf90.make irpf90_entities tags $(ls_exe) *.mod
touch -c EZFIO.cfg *.ezfio_config

View File

@ -6,44 +6,31 @@ Create the NEEDED_MODULE
of a NEEDED_CHILDREN_MODULES file
Usage:
module_handler.py print_genealogy [<NEEDED_CHILDREN_MODULES>]
module_handler.py print_descendant [<NEEDED_CHILDREN_MODULES>]
module_handler.py create_png [<NEEDED_CHILDREN_MODULES>]
module_handler.py head_module
Options:
print_genealogy Print the genealogy of the NEEDED_CHILDREN_MODULES
print_descendant Print the genealogy of the NEEDED_CHILDREN_MODULES
aka (children, subchildren, etc)
create_png Create a png of the file
NEEDED_CHILDREN_MODULES The path of NEEDED_CHILDREN_MODULES
by default try to open the file in the current path
"""
from docopt import docopt
import os
import sys
import os.path
from cache import cache
from collections import namedtuple
Dependency = namedtuple('Dependency', ['src', 'obj'])
Module_info = namedtuple('Module_info', ['l_children', 'l_dependency'])
def get_list_from_makefile(data, sep):
# Split for sep
dump = [l.split(sep)[1] for l in data if l.startswith(sep)]
# Delete the empy one
l_unique = [k for k in map(str.strip, dump) if k]
# Return the flat one (if multi in l_unique)
l_flat = [j for i in l_unique for j in i.split()]
return l_flat
try:
from docopt import docopt
from decorator import classproperty
except ImportError:
print "source .quantum_package.rc"
raise
# Canot cache for namedtuple are not hashable
def get_dict_genealogy():
def get_dict_child():
"""Loop over MODULE in QPACKAGE_ROOT/src, open all the NEEDED_CHILDREN_MODULES
and create a dict[MODULE] = [sub module needed, ...]
"""
@ -59,23 +46,14 @@ def get_dict_genealogy():
with open(path_file, "r") as f:
l_children = f.read().split()
except IOError:
continue
try:
path_file = os.path.join(dir_, o, "Makefile")
with open(os.path.join(dir_, o, "Makefile"), "r") as f:
data = f.readlines()
l_depend = Dependency(get_list_from_makefile(data, "SRC="),
get_list_from_makefile(data, "OBJ="))
except IOError:
l_depend = []
d_ref[o] = Module_info(l_children, l_depend)
pass
else:
d_ref[o] = l_children
return d_ref
def him_and_all_children(d_ref, l_module):
def l_module_generalogy_rec(d_chidlren, l_module):
"""
From a list of module return the module and all of the genealogy
"""
@ -85,7 +63,7 @@ def him_and_all_children(d_ref, l_module):
if module not in l:
l.append(module)
try:
l.extend(him_and_all_children(d_ref, d_ref[module].l_children))
l.extend(l_module_generalogy_rec(d_chidlren, d_chidlren[module]))
except KeyError:
print >> sys.stderr, "`{0}` not submodule".format(module)
print >> sys.stderr, "Check the corresponding NEEDED_CHILDREN_MODULES"
@ -94,116 +72,116 @@ def him_and_all_children(d_ref, l_module):
return list(set(l))
def get_dict_genealogy_desc():
"""
Get a dic of all the genealogy desc (children and all_children)
"""
d_ref = get_dict_genealogy()
class ModuleHandler:
d = {}
dict_child = get_dict_child()
for module_name in d_ref:
d[module_name] = him_and_all_children(d_ref,
d_ref[module_name].l_children)
@classproperty
def l_module(self):
return self.dict_child.keys()
return d
@classproperty
def dict_parent(self):
"""
Get a dic of the first parent
"""
d_child = self.dict_child
d = {}
def get_dict_parent():
"""
Get a dic of the first parent
"""
d_ref = get_dict_genealogy()
for module_name in d_child:
d[module_name] = [i for i in d_child.keys() if module_name in d_child[i]]
d = {}
return d
for module_name in d_ref:
d[module_name] = [i for i in d_ref.keys()
if module_name in d_ref[i].l_children]
@classproperty
def dict_descendant(self):
"""
Get a dic of all the genealogy desc (children and all_children)
"""
d = {}
return d
d_child = self.dict_child
for module_name in d_child:
d[module_name] = l_module_generalogy_rec(d_child,
d_child[module_name])
def get_dict_module_boss():
"""
Return a dict(module_name) = module_boss
Module boss is a module who have not parent (a edge) and have module_name
in is genealogy
"""
d_ref_asc = get_dict_parent()
d_ref_desc = get_dict_genealogy_desc()
return d
l_all_module = d_ref_asc.keys()
@classproperty
def dict_root(self):
"""
Return a dict(module_name) = module_boss
The top node in a tree.
"""
d_asc = self.dict_parent
d_desc = self.dict_descendant
d_module_boss = {}
l_all_module = self.l_module
for module in l_all_module:
d_module_boss[module] = [
p for p in l_all_module
if module in [p] + d_ref_desc[p] and not d_ref_asc[p]
][0]
dict_root = {}
return d_module_boss
for module in l_all_module:
dict_root[module] = [ p for p in l_all_module if module in [p] + d_desc[p] and not d_asc[p]][0]
return dict_root
def module_genealogy(module_name):
"""
Take a name of a NEEDED_CHILDREN_MODULES
and return a list of all the {sub, subsub, ...}children
"""
@classmethod
def l_descendant_unique(cls, l_module):
d_desc = cls.dict_descendant
d_ref = get_dict_genealogy()
return him_and_all_children(d_ref, d_ref[module_name].l_children)
d = {}
for module in l_module:
for e in d_desc[module]:
d[e] = 1
return d.keys()
def file_dependency(module_name):
@classmethod
def l_reduce_tree(cls, l_module):
d_ref = get_dict_genealogy()
l_src, l_obj = d_ref[module_name].l_dependency
l_d_u = cls.l_descendant_unique(l_module)
l_module_reduce = []
for module in l_module:
if module not in l_d_u:
l_module_reduce.append(module)
l_children_module = him_and_all_children(d_ref,
d_ref[module_name].l_children)
for module in l_children_module:
l_src_dump, l_obj_dump = d_ref[module].l_dependency
l_src.extend("{0}/{1}".format(module, i) for i in l_src_dump)
l_obj.extend("IRPF90_temp/{0}/{1}".format(module, os.path.basename(i))
for i in l_obj_dump)
return l_module_reduce
return Dependency(l_src, l_obj)
@classmethod
def create_png(cls, l_module):
"""Create the png of the dependency tree for a l_module"""
# Init
import pydot
all_ready_done = []
def create_png(l_module):
"""Create the png of the dependency tree for a l_module"""
def draw_module_edge(module, l_children):
"Draw all the module recursifly"
# Init
import pydot
all_ready_done = []
if module not in all_ready_done:
for children in l_children:
# Add Edge
edge = pydot.Edge(module, children)
graph.add_edge(edge)
# Recurs
draw_module_edge(children, d_ref[children])
all_ready_done.append(module)
def draw_module_edge(module, l_children):
"Draw all the module recursifly"
# Init
graph = pydot.Dot(graph_type='digraph')
d_ref = cls.dict_child
if module not in all_ready_done:
for children in l_children:
# Add Edge
edge = pydot.Edge(module, children)
graph.add_edge(edge)
# Recurs
draw_module_edge(children, d_ref[children].l_children)
all_ready_done.append(module)
# Create all the edge
for module in l_module:
node_a = pydot.Node(module, fontcolor="red")
graph.add_node(node_a)
draw_module_edge(module, d_ref[module])
# Init
graph = pydot.Dot(graph_type='digraph')
d_ref = get_dict_genealogy()
# Create all the edge
for module in l_module:
node_a = pydot.Node(module, fontcolor="red")
graph.add_node(node_a)
draw_module_edge(module, d_ref[module].l_children)
# Save
path = '{0}.png'.format("tree_dependency")
graph.write_png(path)
# Save
path = '{0}.png'.format("tree_dependency")
graph.write_png(path)
if __name__ == '__main__':
@ -220,13 +198,8 @@ if __name__ == '__main__':
path_file = os.path.basename(dir_)
if arguments['print_genealogy']:
l_all_needed_molule = module_genealogy(path_file)
print " ".join(sorted(l_all_needed_molule))
if arguments['print_descendant']:
print " ".join(sorted(ModuleHandler.l_module))
if arguments["create_png"]:
create_png([path_file])
if arguments["head_module"]:
for module, boss in get_dict_module_boss().iteritems():
print module, boss
ModuleHandler.create_png([path_file])

View File

@ -0,0 +1,82 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Usage: qp_create_module.py list
qp_create_module.py create -n <name> [<children_module>...]
"""
import sys
import os
try:
from docopt import docopt
from module_handler import ModuleHandler
from update_README import Doc_key, Needed_key
except ImportError:
print "source .quantum_package.rc"
raise
def save_new_module(path, l_child):
# ~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~ #
# N E E D E D _ C H I L D R E N _ M O D U L E S #
# ~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~ #
try:
os.makedirs(path)
except OSError:
print "The module ({0}) already exist...".format(path)
sys.exit(1)
with open(os.path.join(path, "NEEDED_CHILDREN_MODULES"), "w") as f:
f.write(" ".join(l_child))
f.write("\n")
# ~#~#~#~#~#~#~ #
# R E A D _ M E #
# ~#~#~#~#~#~#~ #
module_name = os.path.basename(path)
header = "{0}\n{1}\n{0}\n".format("=" * len(module_name), module_name)
with open(os.path.join(path, "README.rst"), "w") as f:
f.write(header + "\n")
f.write(Doc_key + "\n")
f.write(Needed_key + "\n")
if __name__ == '__main__':
arguments = docopt(__doc__)
if arguments["list"]:
for module in ModuleHandler.l_module:
print module
elif arguments["create"]:
l_children = arguments["<children_module>"]
qpackage_root = os.environ['QPACKAGE_ROOT']
path = os.path.join(qpackage_root, "src", arguments["<name>"])
print "You will create the module:"
print path
for children in l_children:
if children not in ModuleHandler.dict_descendant:
print "This module ({0}) is not a valide module.".format(children)
print "Run `list` flag for the list of module avalaible"
print "Aborting..."
sys.exit(1)
print "You ask for this submodule:"
print l_children
print "You can use all the routine in this module"
print l_children + ModuleHandler.l_descendant_unique(l_children)
print "This can be reduce to:"
l_child_reduce = ModuleHandler.l_reduce_tree(l_children)
print l_child_reduce
save_new_module(path, l_child_reduce)

View File

@ -1,140 +0,0 @@
#!/bin/bash
#
# usage:
# create_module.sh MOs AOs Electrons
# Prepares all the files for the creation of a new module.
# The first argument is the name of the module
# All remaining aruments are dependencies.
# Thu Apr 3 01:44:58 CEST 2014
if [[ -z ${QPACKAGE_ROOT} ]]
then
print "The QPACKAGE_ROOT environment variable is not set."
print "Please reload the quantum_package.rc file."
exit -1
fi
source ${QPACKAGE_ROOT}/scripts/qp_include.sh
check_current_dir_is_src
DEBUG=0
# If DEBUG=1, the print debug info.
function debug()
{
if [[ $DEBUG -eq 1 ]]
then
function debug()
{
echo "$@"
}
else
function debug()
{
:
}
fi
debug $@
}
function fail()
{
echo "Error: $@"
cd "${QPACKAGE_ROOT}/src"
rm -rf -- "${MODULE}"
exit 1
}
MODULE=$1
# Check command line
if [[ -z $MODULE ]]
then
echo "usage: $(basename $0) <NewModuleName>"
exit 1
fi
shift
# Check if module already exists
if [ -d ${MODULE} ]
then
echo "Error: Module $MODULE already exists"
exit 1
fi
debug "Module does not already exist: OK"
# Set up dependencies
ALL_MODULES="$(cat NEEDED_MODULES)"
echo "Select which modules you are sure you will need: (press q to quit)"
NEEDED_MODULES=""
select M in ${ALL_MODULES}
do
if [[ -z $M ]]
then
break
fi
NEEDED_MODULES+=" $M"
echo "$NEEDED_MODULES"
done
# Create module directory and go into it
mkdir "${QPACKAGE_ROOT}/src/${MODULE}"
if [[ $? != 0 ]]
then
echo "Error: Unable to create module directory."
exit 1
fi
if [[ ! -d "${QPACKAGE_ROOT}/src/${MODULE}" ]]
then
echo "Something strange happened: the"
echo "${QPACKAGE_ROOT}/src/${MODULE}"
echo "directory was not created."
exit 1
fi
cd "${QPACKAGE_ROOT}/src/${MODULE}"
if [[ "${PWD}" != "${QPACKAGE_ROOT}/src/${MODULE}" ]]
then
echo "Something strange happened: we should be in"
echo "${QPACKAGE_ROOT}/src/${MODULE}"
echo "but we are in"
echo "${PWD}"
exit 1
fi
debug "Module directory is created."
# Create the Makefile
"${QPACKAGE_ROOT}/scripts/module/create_Makefile.sh" || fail "Unable to create Makefile"
if [[ ! -f Makefile ]]
then
fail "Makefile was not created"
fi
debug "Makefile created"
# Create the NEEDED_MODULES file
echo "$NEEDED_MODULES" > NEEDED_CHILDREN_MODULES
debug "NEEDED_MODULES created"
# Create rst templates
"${QPACKAGE_ROOT}/scripts/module/create_rst_templates.sh" || fail "Unable to create rst templates"
# Update module list in main NEEDED_MODULES
ALL_MODULES+=" ${MODULE}"
echo "${ALL_MODULES}" > "${QPACKAGE_ROOT}/src/NEEDED_MODULES"
debug "Updated NEEDED_MODULES"

View File

@ -23,19 +23,15 @@ header = """
def fetch_splitted_data():
"""Read the README.rst file and split it in strings:
* The description
* The assumptions
* The documentation
* The needed modules
The result is given as a list of strings
"""
file = open(README, 'r')
data = file.read()
file.close()
with open(README, 'r') as f:
data = f.read()
# Place sentinels
data = data.replace(Assum_key, Sentinel + Assum_key)
data = data.replace(Doc_key, Sentinel + Doc_key)
data = data.replace(Needed_key, Sentinel + Needed_key)

View File

@ -1,17 +0,0 @@
from functools import wraps
def cache(func):
"""
A decorator for lazy evaluation off true function
"""
saved = {}
@wraps(func)
def newfunc(*args):
if args in saved:
return saved[args]
result = func(*args)
saved[args] = result
return result
return newfunc

View File

@ -3,13 +3,13 @@
implicit none
integer :: n_pt_sup
integer :: prim_power_l_max
include 'Utils/constants.F'
include 'Utils/constants.include.F'
prim_power_l_max = maxval(ao_power)
n_pt_max_integrals = 24 * prim_power_l_max + 4
n_pt_max_i_x = 8 * prim_power_l_max
ASSERT (n_pt_max_i_x-1 <= max_dim)
if (n_pt_max_i_x-1 > max_dim) then
print *, 'Increase max_dim in Utils/constants.F to ', n_pt_max_i_x-1
print *, 'Increase max_dim in Utils/constants.include.F to ', n_pt_max_i_x-1
stop 1
endif
END_PROVIDER

View File

@ -8,7 +8,7 @@ double precision function aux_basis_four_overlap(i,j,k,l)
double precision :: I_center(3),J_center(3),K_center(3),L_center(3)
integer :: num_i,num_j,num_k,num_l,dim1,I_power(3),J_power(3),K_power(3),L_power(3)
double precision :: overlap_x,overlap_y,overlap_z, overlap
include 'Utils/constants.F'
include 'Utils/constants.include.F'
double precision :: P_new(0:max_dim,3),P_center(3),fact_p,pp
double precision :: Q_new(0:max_dim,3),Q_center(3),fact_q,qq
integer :: iorder_p(3), iorder_q(3)

View File

@ -9,7 +9,7 @@ double precision function ao_bielec_integral(i,j,k,l)
double precision :: I_center(3),J_center(3),K_center(3),L_center(3)
integer :: num_i,num_j,num_k,num_l,dim1,I_power(3),J_power(3),K_power(3),L_power(3)
double precision :: integral
include 'Utils/constants.F'
include 'Utils/constants.include.F'
double precision :: P_new(0:max_dim,3),P_center(3),fact_p,pp
double precision :: Q_new(0:max_dim,3),Q_center(3),fact_q,qq
integer :: iorder_p(3), iorder_q(3)
@ -115,7 +115,7 @@ double precision function ao_bielec_integral_schwartz_accel(i,j,k,l)
double precision :: I_center(3),J_center(3),K_center(3),L_center(3)
integer :: num_i,num_j,num_k,num_l,dim1,I_power(3),J_power(3),K_power(3),L_power(3)
double precision :: integral
include 'Utils/constants.F'
include 'Utils/constants.include.F'
double precision :: P_new(0:max_dim,3),P_center(3),fact_p,pp
double precision :: Q_new(0:max_dim,3),Q_center(3),fact_q,qq
integer :: iorder_p(3), iorder_q(3)
@ -519,7 +519,7 @@ double precision function general_primitive_integral(dim, &
! Computes the integral <pq|rs> where p,q,r,s are Gaussian primitives
END_DOC
integer,intent(in) :: dim
include 'Utils/constants.F'
include 'Utils/constants.include.F'
double precision, intent(in) :: P_new(0:max_dim,3),P_center(3),fact_p,p,p_inv
double precision, intent(in) :: Q_new(0:max_dim,3),Q_center(3),fact_q,q,q_inv
integer, intent(in) :: iorder_p(3)
@ -665,7 +665,7 @@ double precision function ERI(alpha,beta,delta,gama,a_x,b_x,c_x,d_x,a_y,b_y,c_y,
integer :: n_pt_sup
double precision :: p,q,denom,coeff
double precision :: I_f
include 'Utils/constants.F'
include 'Utils/constants.include.F'
if(iand(a_x+b_x+c_x+d_x,1).eq.1.or.iand(a_y+b_y+c_y+d_y,1).eq.1.or.iand(a_z+b_z+c_z+d_z,1).eq.1)then
ERI = 0.d0
return
@ -859,7 +859,7 @@ subroutine give_polynom_mult_center_x(P_center,Q_center,a_x,d_x,p,q,n_pt_in,pq_i
integer, intent(in) :: a_x,d_x
double precision, intent(in) :: P_center, Q_center
double precision, intent(in) :: p,q,pq_inv,p10_1,p01_1,p10_2,p01_2,pq_inv_2
include 'Utils/constants.F'
include 'Utils/constants.include.F'
double precision,intent(out) :: d(0:max_dim)
double precision :: accu
accu = 0.d0
@ -916,7 +916,7 @@ subroutine I_x1_pol_mult(a,c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in)
! recursive function involved in the bielectronic integral
END_DOC
integer , intent(in) :: n_pt_in
include 'Utils/constants.F'
include 'Utils/constants.include.F'
double precision,intent(inout) :: d(0:max_dim)
integer,intent(inout) :: nd
integer, intent(in) :: a,c
@ -950,7 +950,7 @@ recursive subroutine I_x1_pol_mult_recurs(a,c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt
! recursive function involved in the bielectronic integral
END_DOC
integer , intent(in) :: n_pt_in
include 'Utils/constants.F'
include 'Utils/constants.include.F'
double precision,intent(inout) :: d(0:max_dim)
integer,intent(inout) :: nd
integer, intent(in) :: a,c
@ -1036,7 +1036,7 @@ recursive subroutine I_x1_pol_mult_a1(c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in)
! recursive function involved in the bielectronic integral
END_DOC
integer , intent(in) :: n_pt_in
include 'Utils/constants.F'
include 'Utils/constants.include.F'
double precision,intent(inout) :: d(0:max_dim)
integer,intent(inout) :: nd
integer, intent(in) :: c
@ -1090,7 +1090,7 @@ recursive subroutine I_x1_pol_mult_a2(c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in)
! recursive function involved in the bielectronic integral
END_DOC
integer , intent(in) :: n_pt_in
include 'Utils/constants.F'
include 'Utils/constants.include.F'
double precision,intent(inout) :: d(0:max_dim)
integer,intent(inout) :: nd
integer, intent(in) :: c
@ -1152,7 +1152,7 @@ recursive subroutine I_x2_pol_mult(c,B_10,B_01,B_00,C_00,D_00,d,nd,dim)
! recursive function involved in the bielectronic integral
END_DOC
integer , intent(in) :: dim
include 'Utils/constants.F'
include 'Utils/constants.include.F'
double precision :: d(0:max_dim)
integer,intent(inout) :: nd
integer, intent(in) :: c

View File

@ -148,7 +148,7 @@ double precision :: P_center(3)
double precision :: d(0:n_pt_in),pouet,coeff,rho,dist,const,pouet_2,p,p_inv,factor
double precision :: I_n_special_exact,integrate_bourrin,I_n_bibi
double precision :: V_e_n,const_factor,dist_integral,tmp
include 'Utils/constants.F'
include 'Utils/constants.include.F'
if ( (A_center(1)/=B_center(1)).or. &
(A_center(2)/=B_center(2)).or. &
(A_center(3)/=B_center(3)).or. &
@ -351,7 +351,7 @@ recursive subroutine I_x1_pol_mult_mono_elec(a,c,R1x,R1xp,R2x,d,nd,n_pt_in)
integer,intent(inout) :: nd
integer, intent(in):: a,c
double precision, intent(in) :: R1x(0:2),R1xp(0:2),R2x(0:2)
include 'Utils/constants.F'
include 'Utils/constants.include.F'
double precision :: X(0:max_dim)
double precision :: Y(0:max_dim)
!DIR$ ATTRIBUTES ALIGN : $IRP_ALIGN :: X, Y
@ -417,7 +417,7 @@ end
recursive subroutine I_x2_pol_mult_mono_elec(c,R1x,R1xp,R2x,d,nd,dim)
implicit none
integer , intent(in) :: dim
include 'Utils/constants.F'
include 'Utils/constants.include.F'
double precision :: d(0:max_dim)
integer,intent(inout) :: nd
integer, intent(in):: c
@ -492,7 +492,7 @@ implicit none
double precision :: alpha
integer :: n
double precision :: dble_fact
include 'Utils/constants.F'
include 'Utils/constants.include.F'
!if(iand(n,1).eq.1)then
! int_gaus_pol= 0.d0
@ -521,7 +521,7 @@ double precision function V_r(n,alpha)
implicit none
double precision :: alpha, fact
integer :: n
include 'Utils/constants.F'
include 'Utils/constants.include.F'
if(iand(n,1).eq.1)then
V_r = 0.5d0 * fact(ishft(n,-1)) / (alpha ** (ishft(n,-1) + 1))
else
@ -549,7 +549,7 @@ implicit none
!! integral on "theta" with boundaries ( 0 ; pi) of [ cos(theta) **n sin(theta) **m ]
integer :: n,m,i
double precision :: Wallis, prod
include 'Utils/constants.F'
include 'Utils/constants.include.F'
V_theta = 0.d0
prod = 1.d0
do i = 0,ishft(n,-1)-1
@ -565,7 +565,7 @@ double precision function Wallis(n)
implicit none
double precision :: fact
integer :: n,p
include 'Utils/constants.F'
include 'Utils/constants.include.F'
if(iand(n,1).eq.0)then
Wallis = fact(ishft(n,-1))
Wallis = pi * fact(n) / (dble(ibset(0_8,n)) * (Wallis+Wallis)*Wallis)

View File

@ -1,10 +0,0 @@
integer, parameter :: max_dim = 255
integer, parameter :: SIMD_vector = 32
double precision, parameter :: pi = dacos(-1.d0)
double precision, parameter :: sqpi = dsqrt(dacos(-1.d0))
double precision, parameter :: pi_5_2 = 34.9868366552d0
double precision, parameter :: dfour_pi = 4.d0*dacos(-1.d0)
double precision, parameter :: dtwo_pi = 2.d0*dacos(-1.d0)
double precision, parameter :: inv_sq_pi = 1.d0/dsqrt(dacos(-1.d0))
double precision, parameter :: inv_sq_pi_2 = 0.5d0/dsqrt(dacos(-1.d0))

View File

@ -6,7 +6,7 @@ subroutine give_explicit_poly_and_gaussian_x(P_new,P_center,p,fact_k,iorder,alph
! fact_k (x-x_P)^iorder(1) (y-y_P)^iorder(2) (z-z_P)^iorder(3) exp(-p(r-P)^2)
END_DOC
implicit none
include 'constants.F'
include 'constants.include.F'
integer, intent(in) :: dim
integer, intent(in) :: a,b ! powers : (x-xa)**a_x = (x-A(1))**a(1)
double precision, intent(in) :: alpha, beta ! exponents
@ -53,7 +53,7 @@ subroutine give_explicit_poly_and_gaussian(P_new,P_center,p,fact_k,iorder,alpha,
! * [ sum (l_z = 0,i_order(3)) P_new(l_z,3) * (z-P_center(3))^l_z ] exp (- p (z-P_center(3))^2 )
END_DOC
implicit none
include 'constants.F'
include 'constants.include.F'
integer, intent(in) :: dim
integer, intent(in) :: a(3),b(3) ! powers : (x-xa)**a_x = (x-A(1))**a(1)
double precision, intent(in) :: alpha, beta ! exponents
@ -131,7 +131,7 @@ subroutine give_explicit_poly_and_gaussian_double(P_new,P_center,p,fact_k,iorder
! * [ sum (l_z = 0,i_order(3)) P_new(l_z,3) * (z-P_center(3))^l_z ] exp (- p (z-P_center(3))^2 )
END_DOC
implicit none
include 'constants.F'
include 'constants.include.F'
integer, intent(in) :: dim
integer, intent(in) :: a(3),b(3) ! powers : (x-xa)**a_x = (x-A(1))**a(1)
double precision, intent(in) :: alpha, beta, gama ! exponents
@ -415,7 +415,7 @@ double precision function F_integral(n,p)
double precision :: p
integer :: i,j
double precision :: accu,sqrt_p,fact_ratio,tmp,fact
include 'constants.F'
include 'constants.include.F'
if(n < 0)then
F_integral = 0.d0
endif
@ -441,7 +441,7 @@ double precision function rint(n,rho)
! \int_0^1 dx \exp(-p x^2) x^n
!
END_DOC
include 'constants.F'
include 'constants.include.F'
double precision :: rho,u,rint1,v,val0,rint_large_n,u_inv
integer :: n,k
double precision :: two_rho_inv
@ -486,7 +486,7 @@ double precision function rint_sum(n_pt_out,rho,d1)
BEGIN_DOC
! Needed for the calculation of two-electron integrals.
END_DOC
include 'constants.F'
include 'constants.include.F'
integer, intent(in) :: n_pt_out
double precision, intent(in) :: rho,d1(0:n_pt_out)
double precision :: u,rint1,v,val0,rint_large_n,u_inv

View File

@ -46,7 +46,7 @@
double precision function rinteg(n,u)
implicit double precision(a-h,o-z)
include 'constants.F'
include 'constants.include.F'
! pi=dacos(-1.d0)
ichange=1
factor=1.d0

View File

@ -6,7 +6,7 @@ double precision function overlap_gaussian_x(A_center,B_center,alpha,beta,power_
! \sum_{-infty}^{+infty} (x-A_x)^ax (x-B_x)^bx exp(-alpha(x-A_x)^2) exp(-beta(x-B_X)^2) dx
!
END_DOC
include 'constants.F'
include 'constants.include.F'
integer,intent(in) :: dim ! dimension maximum for the arrays representing the polynomials
double precision,intent(in) :: A_center,B_center ! center of the x1 functions
integer,intent(in) :: power_A, power_B ! power of the x1 functions
@ -34,7 +34,7 @@ end
subroutine overlap_A_B_C(dim,alpha,beta,gama,a,b,A_center,B_center,Nucl_center,overlap)
implicit none
include 'constants.F'
include 'constants.include.F'
integer, intent(in) :: dim
integer, intent(in) :: a(3),b(3) ! powers : (x-xa)**a_x = (x-A(1))**a(1)
double precision, intent(in) :: alpha, beta, gama ! exponents
@ -120,7 +120,7 @@ subroutine overlap_gaussian_xyz(A_center,B_center,alpha,beta,power_A,&
! S = S_x S_y S_z
!
END_DOC
include 'constants.F'
include 'constants.include.F'
integer,intent(in) :: dim ! dimension maximum for the arrays representing the polynomials
double precision,intent(in) :: A_center(3),B_center(3) ! center of the x1 functions
double precision, intent(in) :: alpha,beta

View File

@ -51,7 +51,7 @@ integer function align_double(n)
! Compute 1st dimension such that it is aligned for vectorization.
END_DOC
integer :: n
include 'constants.F'
include 'constants.include.F'
if (mod(n,SIMD_vector/4) /= 0) then
align_double= n + SIMD_vector/4 - mod(n,SIMD_vector/4)
else