diff --git a/ocaml/.gitignore b/ocaml/.gitignore index eea16a59..20613b5f 100644 --- a/ocaml/.gitignore +++ b/ocaml/.gitignore @@ -5,6 +5,7 @@ qptypes_generator.byte _build qp_basis_clean.native qp_create_ezfio_from_xyz.native +qp_edit.native qp_print.native qp_run.native qp_set_ddci.native @@ -32,6 +33,7 @@ test_molecule test_point3d qp_basis_clean qp_create_ezfio_from_xyz +qp_edit qp_print qp_run qp_set_ddci diff --git a/plugins/CAS_SD/EZFIO.cfg b/plugins/CAS_SD/EZFIO.cfg index 6fb8c8a0..7425c8ba 100644 --- a/plugins/CAS_SD/EZFIO.cfg +++ b/plugins/CAS_SD/EZFIO.cfg @@ -1,10 +1,10 @@ [energy] type: double precision doc: "Calculated CAS-SD energy" -interface: output +interface: ezfio [energy_pt2] type: double precision doc: "Calculated selected CAS-SD energy with PT2 correction" -interface: output +interface: ezfio diff --git a/plugins/CISD_SC2_selected/EZFIO.cfg b/plugins/CISD_SC2_selected/EZFIO.cfg index 3b49c52b..79e3e90c 100644 --- a/plugins/CISD_SC2_selected/EZFIO.cfg +++ b/plugins/CISD_SC2_selected/EZFIO.cfg @@ -1,10 +1,10 @@ [energy] type: double precision doc: Calculated CISD_SC2 energy of ground_state -interface: output +interface: ezfio [energy_pt2] type: double precision doc: Calculated CISD_SC2 energy+pt2 of ground_state -interface: output +interface: ezfio diff --git a/plugins/DDCI_selected/EZFIO.cfg b/plugins/DDCI_selected/EZFIO.cfg index c9d53993..01a40af2 100644 --- a/plugins/DDCI_selected/EZFIO.cfg +++ b/plugins/DDCI_selected/EZFIO.cfg @@ -1,4 +1,4 @@ [energy] type: double precision doc: "Calculated CAS-SD energy" -interface: output \ No newline at end of file +interface: ezfio \ No newline at end of file diff --git a/plugins/Full_CI/EZFIO.cfg b/plugins/Full_CI/EZFIO.cfg index 37f25eda..9a552cd0 100644 --- a/plugins/Full_CI/EZFIO.cfg +++ b/plugins/Full_CI/EZFIO.cfg @@ -1,10 +1,10 @@ [energy] type: double precision doc: Calculated Selected FCI energy -interface: output +interface: ezfio [energy_pt2] type: double precision doc: Calculated FCI energy + PT2 -interface: output +interface: ezfio diff --git a/plugins/Hartree_Fock/EZFIO.cfg b/plugins/Hartree_Fock/EZFIO.cfg index e2b0ea5a..c39c3483 100644 --- a/plugins/Hartree_Fock/EZFIO.cfg +++ b/plugins/Hartree_Fock/EZFIO.cfg @@ -1,22 +1,22 @@ [thresh_scf] type: Threshold doc: Threshold on the convergence of the Hartree Fock energy -interface: input +interface: ezfio,provider,ocaml default: 1.e-10 [n_it_scf_max] type: Strictly_positive_int doc: Maximum number of SCF iterations -interface: input +interface: ezfio,provider,ocaml default: 200 [mo_guess_type] type: MO_guess doc: Initial MO guess. Can be [ Huckel | HCore ] -interface: input +interface: ezfio,provider,ocaml default: Huckel [energy] type: double precision doc: Calculated HF energy -interface: output +interface: ezfio diff --git a/plugins/MRCC/EZFIO.cfg b/plugins/MRCC/EZFIO.cfg index ff586985..789f30ef 100644 --- a/plugins/MRCC/EZFIO.cfg +++ b/plugins/MRCC/EZFIO.cfg @@ -1,4 +1,4 @@ [energy] type: double precision doc: Calculated MRCC energy -interface: output \ No newline at end of file +interface: ezfio \ No newline at end of file diff --git a/plugins/Perturbation/EZFIO.cfg b/plugins/Perturbation/EZFIO.cfg index 28629104..ad26cfe5 100644 --- a/plugins/Perturbation/EZFIO.cfg +++ b/plugins/Perturbation/EZFIO.cfg @@ -1,19 +1,19 @@ [do_pt2_end] type: logical doc: If true, compute the PT2 at the end of the selection -interface: input +interface: ezfio,provider,ocaml default: True [PT2_max] type: PT2_energy doc: The selection process stops when the largest PT2 (for all the state) is lower than pt2_max in absolute value -interface: input +interface: ezfio,provider,ocaml default: 0.0001 [var_pt2_ratio] type: Normalized_float doc: The selection process stops when the energy ratio variational/(variational+PT2) is equal to var_pt2_ratio -interface: input +interface: ezfio,provider,ocaml default: 0.75 \ No newline at end of file diff --git a/plugins/Properties/EZFIO.cfg b/plugins/Properties/EZFIO.cfg index d230011d..02f42ad8 100644 --- a/plugins/Properties/EZFIO.cfg +++ b/plugins/Properties/EZFIO.cfg @@ -1,5 +1,5 @@ [z_one_point] type: double precision doc: z point on which the integrated delta rho is calculated -interface: input +interface: ezfio,provider,ocaml default: 3.9 \ No newline at end of file diff --git a/scripts/ezfio_interface/ei_handler.py b/scripts/ezfio_interface/ei_handler.py index 9645c69c..08646688 100755 --- a/scripts/ezfio_interface/ei_handler.py +++ b/scripts/ezfio_interface/ei_handler.py @@ -35,8 +35,13 @@ Format specification : Type:{str} | Is a fancy_type supported by the ocaml ezfio_name:{str} | Will be the name of the file for the ezfio (optional by default is the name of the provider) - interface:{str} | The provider is a imput or a output - default:{str} | The default value if interface == input: + interface:{str} | The provider is string sepeared by "," who can containt + ezfio (if you only whant the ezfiolib) + provider (if you want the provider) + ocaml (if you want the ocaml gestion) + So for example: + interface: provider,ezfio,ocaml + default:{str} | The default value if 'ocam' in interface: size:{str} | the size information (like 1 or =sum(ao_num) or (ao_num,3) ) @@ -46,13 +51,13 @@ Example of EZFIO.cfg: doc: Threshold on the convergence of the Hartree Fock energy type: Threshold default: 1.e-10 -interface: input +interface: provider,ezfio,ocaml size: 1 [energy] type: double precision doc: Calculated HF energy -interface: output +interface: ezfio ``` """ from docopt import docopt @@ -201,7 +206,7 @@ def get_dict_config_file(module_obj): - ezfio_dir : Will be the folder who containt the ezfio_name * /ezfio_dir/ezfio_name * equal to MODULE_lower name by default. - - interface : The provider is a imput or a output + - interface : The provider is lit of [provider,ezfio,ocaml] - default : The default value /!\ stored in a Type named type! if interface == input - size : Is the string read in ezfio.cgf who containt the size information @@ -211,7 +216,6 @@ def get_dict_config_file(module_obj): # I n i t # # ~#~#~#~ # d = defaultdict(dict) - l_info_required = ["doc", "interface"] l_info_optional = ["ezfio_dir", "ezfio_name", "size"] # ~#~#~#~#~#~#~#~#~#~#~ # @@ -238,8 +242,13 @@ def get_dict_config_file(module_obj): "ezfio_dir": module_obj.lower, "size": "1"} - # Check if type if avalaible - type_ = config_file.get(section, "type") + # Check if type is avalaible + try: + type_ = config_file.get(section, "type") + except ConfigParser.NoOptionError: + error("type", pvd, module_obj.path) + sys.exit(1) + if type_ not in type_dict: print "{0} not avalaible. Choose in:".format(type_) print ", ".join(sorted([i for i in type_dict])) @@ -248,12 +257,23 @@ def get_dict_config_file(module_obj): d[pvd]["type"] = type_dict[type_] # Fill the dict with REQUIRED information - for option in l_info_required: - try: - d[pvd][option] = config_file.get(section, option) - except ConfigParser.NoOptionError: - error(option, pvd, module_obj.path) + try: + d[pvd]["doc"] = config_file.get(section, "doc") + except ConfigParser.NoOptionError: + error("doc", pvd, module_obj.path) + sys.exit(1) + + try: + interface = map(str.lower, config_file.get(section, "interface").split(",")) + except ConfigParser.NoOptionError: + error("doc", pvd, module_obj.path) + sys.exit(1) + else: + if not any(i in ["ezfio", "provider", "ocaml"] for i in interface): + print "Bad keyword for interface for {0}".format(pvd) sys.exit(1) + else: + d[pvd]["interface"] = interface # Fill the dict with OPTIONAL information for option in l_info_optional: @@ -264,7 +284,7 @@ def get_dict_config_file(module_obj): d[pvd][option] = d_default[option] # If interface is input we need a default value information - if d[pvd]["interface"].lower() == "input": + if "ocaml" in d[pvd]["interface"]: try: default_raw = config_file.get(section, "default") except ConfigParser.NoOptionError: @@ -300,7 +320,7 @@ def create_ezfio_provider(dict_ezfio_cfg): ez_p = EZFIO_Provider() for provider_name, dict_info in dict_ezfio_cfg.iteritems(): - if "input" in dict_info["interface"]: + if "provider" in dict_info["interface"]: ez_p.set_type(dict_info['type'].fortran) ez_p.set_name(provider_name) ez_p.set_doc(dict_info['doc']) @@ -492,7 +512,7 @@ def create_ocaml_input(dict_ezfio_cfg, module_lower): l_doc = [] for k, v in dict_ezfio_cfg.iteritems(): - if v['interface'] == "input": + if "ocaml" in v['interface']: l_ezfio_name.append(v['ezfio_name']) l_type.append(v["type"]) l_doc.append(v["doc"]) diff --git a/src/Determinants/EZFIO.cfg b/src/Determinants/EZFIO.cfg index 4a2270c7..a124f030 100644 --- a/src/Determinants/EZFIO.cfg +++ b/src/Determinants/EZFIO.cfg @@ -1,112 +1,112 @@ [N_det_max] type: Det_number_max doc: Max number of determinants in the wave function -interface: input +interface: ezfio,provider,ocaml default: 10000 [N_det_max_property] type: Det_number_max doc: Max number of determinants in the wave function when you select for a given property -interface: input +interface: ezfio,provider,ocaml default: 10000 [N_det_max_jacobi] type: Det_number_max doc: Maximum number of determinants diagonalized by Jacobi -interface: input +interface: ezfio,provider,ocaml default: 1000 [N_states] type: States_number doc: Number of states to consider -interface: input +interface: ezfio,provider,ocaml default: 1 [read_wf] type: logical doc: If true, read the wave function from the EZFIO file -interface: input +interface: ezfio,provider,ocaml default: False [only_single_double_dm] type: logical doc: If true, The One body DM is calculated with ignoring the Double<->Doubles extra diag elements -interface: input +interface: ezfio,provider,ocaml default: False [s2_eig] type: logical doc: Force the wave function to be an eigenfunction of S^2 -interface: input +interface: ezfio,provider,ocaml default: False [threshold_generators] type: Threshold doc: Thresholds on generators (fraction of the norm) -interface: input +interface: ezfio,provider,ocaml default: 0.99 [threshold_selectors] type: Threshold doc: Thresholds on selectors (fraction of the norm) -interface: input +interface: ezfio,provider,ocaml default: 0.999 [n_states_diag] type: integer doc: n_states_diag -interface: Ocaml +interface: ezfio, provider [n_int] -interface: OCaml +interface: ezfio, provider doc: n_int type: N_int_number [bit_kind] -interface: OCaml +interface: ezfio, provider doc: bit_kind type: Bit_kind [mo_label] -interface: OCaml +interface: ezfio, provider doc: o_label type: character*(64) [n_det] -interface: OCaml +interface: ezfio, provider doc: n_det type: integer [psi_coef] -interface: OCaml +interface: ezfio, provider doc: psi_coef type: double precision size: (determinants.n_det,determinants.n_states) [psi_det] -interface: OCaml +interface: ezfio, provider doc: psi_det type: integer*8 size: (determinants.n_int*determinants.bit_kind/8,2,determinants.n_det) [det_num] -interface: OCaml +interface: ezfio, provider doc: det_num type: integer [det_occ] -interface: OCaml +interface: ezfio, provider doc: det_occ type: integer size: (electrons.elec_alpha_num,determinants.det_num,2) [det_coef] -interface: OCaml +interface: ezfio, provider doc: det_coef type: double precision size: (determinants.det_num) [expected_s2] -interface: OCaml +interface: ezfio, provider doc: expcted_s2 type: double precision diff --git a/src/Integrals_Bielec/EZFIO.cfg b/src/Integrals_Bielec/EZFIO.cfg index eaada232..3834b121 100644 --- a/src/Integrals_Bielec/EZFIO.cfg +++ b/src/Integrals_Bielec/EZFIO.cfg @@ -1,32 +1,32 @@ [do_direct_integrals] type: logical doc: Compute integrals on the fly -interface: input +interface: ezfio,provider,ocaml default: False ezfio_name: direct [disk_access_mo_integrals] type: Disk_access doc: Read/Write MO integrals from/to disk [ Write | Read | None ] -interface: input +interface: ezfio,provider,ocaml default: None [disk_access_ao_integrals] type: Disk_access doc: Read/Write AO integrals from/to disk [ Write | Read | None ] -interface: input +interface: ezfio,provider,ocaml default: None [ao_integrals_threshold] type: Threshold doc: If || < ao_integrals_threshold then is zero -interface: input +interface: ezfio,provider,ocaml default: 1.e-15 ezfio_name: threshold_ao [mo_integrals_threshold] type: Threshold doc: If || < ao_integrals_threshold then is zero -interface: input +interface: ezfio,provider,ocaml default: 1.e-15 ezfio_name: threshold_mo diff --git a/src/Pseudo/EZFIO.cfg b/src/Pseudo/EZFIO.cfg index 9804c807..ae27bd7c 100644 --- a/src/Pseudo/EZFIO.cfg +++ b/src/Pseudo/EZFIO.cfg @@ -1,88 +1,88 @@ [pseudo_klocmax] doc: test type:integer -interface: input_without_default +interface: ezfio,provider [pseudo_n_k] doc: test type: integer -interface: input_without_default +interface: ezfio,provider size: (nuclei.nucl_num,pseudo.pseudo_klocmax) [pseudo_v_k] doc: test type: double precision -interface: input_without_default +interface: ezfio,provider size: (nuclei.nucl_num,pseudo.pseudo_klocmax) [pseudo_dz_k] doc: test type: double precision -interface: input_without_default +interface: ezfio,provider size: (nuclei.nucl_num,pseudo.pseudo_klocmax) [pseudo_lmax] doc: test type:integer -interface: input_without_default +interface: ezfio,provider [pseudo_kmax] doc: test type:integer -interface: input_without_default +interface: ezfio,provider [pseudo_n_kl] doc: test type: integer -interface: input_without_default +interface: ezfio,provider size: (nuclei.nucl_num,pseudo.pseudo_kmax,0:pseudo.pseudo_lmax) [pseudo_v_kl] doc: test type: double precision -interface: input_without_default +interface: ezfio,provider size: (nuclei.nucl_num,pseudo.pseudo_kmax,0:pseudo.pseudo_lmax) [pseudo_dz_kl] doc: test type: double precision -interface: input_without_default +interface: ezfio,provider size: (nuclei.nucl_num,pseudo.pseudo_kmax,0:pseudo.pseudo_lmax) [do_pseudo] type: logical doc: Using pseudo potential integral of not -interface: input +interface: ezfio,provider,ocaml default: False [pseudo_grid_size] type: integer doc: Nb of points of the QMC grid -interface: input +interface: ezfio,provider,ocaml default: 1000 [pseudo_grid_rmax] type: double precision doc: R_maxof the QMC grid -interface: input +interface: ezfio,provider,ocaml default: 10.0 [ao_pseudo_grid] type: double precision doc: QMC grid -interface: output +interface: ezfio size: (ao_basis.ao_num,-pseudo.pseudo_lmax:pseudo.pseudo_lmax,0:pseudo.pseudo_lmax,nuclei.nucl_num,pseudo.pseudo_grid_size) [mo_pseudo_grid] type: double precision doc: QMC grid -interface: output +interface: ezfio size: (ao_basis.ao_num,-pseudo.pseudo_lmax:pseudo.pseudo_lmax,0:pseudo.pseudo_lmax,nuclei.nucl_num,pseudo.pseudo_grid_size) [pseudo_matrix] type: double precision doc: QMC grid -interface: output +interface: ezfio size: (aux_basis.aux_basis_num_sqrt,aux_basis.aux_basis_num_sqrt)