From 1311d3552b62ba4945b1eb5188ebf701f5974e91 Mon Sep 17 00:00:00 2001 From: Otto Kohulak Date: Fri, 19 Jan 2024 10:54:21 +0100 Subject: [PATCH] Add makefun constructor --- devel_tools/makefun_factory/construct.py | 25 ++ .../makefun_factory/makefun_footer.f90 | 10 + .../makefun_factory/makefun_header.f90 | 40 +++ devel_tools/makefun_factory/orb_1.f90 | 36 +++ devel_tools/makefun_factory/orb_10.f90 | 40 +++ devel_tools/makefun_factory/orb_100.f90 | 37 +++ .../makefun_factory/orb_10000:11000.f90 | 2 + devel_tools/makefun_factory/orb_1000:1099.f90 | 43 +++ devel_tools/makefun_factory/orb_101.f90 | 39 +++ devel_tools/makefun_factory/orb_102.f90 | 52 ++++ devel_tools/makefun_factory/orb_103.f90 | 49 ++++ devel_tools/makefun_factory/orb_104.f90 | 56 ++++ devel_tools/makefun_factory/orb_105.f90 | 51 ++++ devel_tools/makefun_factory/orb_106.f90 | 38 +++ devel_tools/makefun_factory/orb_107.f90 | 50 ++++ devel_tools/makefun_factory/orb_108.f90 | 48 +++ devel_tools/makefun_factory/orb_109.f90 | 58 ++++ devel_tools/makefun_factory/orb_11.f90 | 52 ++++ devel_tools/makefun_factory/orb_110.f90 | 38 +++ devel_tools/makefun_factory/orb_1100:1199.f90 | 53 ++++ devel_tools/makefun_factory/orb_111.f90 | 49 ++++ devel_tools/makefun_factory/orb_112.f90 | 51 ++++ devel_tools/makefun_factory/orb_113.f90 | 38 +++ devel_tools/makefun_factory/orb_114.f90 | 38 +++ devel_tools/makefun_factory/orb_115.f90 | 52 ++++ devel_tools/makefun_factory/orb_116.f90 | 66 +++++ devel_tools/makefun_factory/orb_117.f90 | 48 +++ devel_tools/makefun_factory/orb_118.f90 | 52 ++++ devel_tools/makefun_factory/orb_119.f90 | 52 ++++ devel_tools/makefun_factory/orb_12.f90 | 50 ++++ devel_tools/makefun_factory/orb_120.f90 | 63 ++++ devel_tools/makefun_factory/orb_1200:1299.f90 | 107 +++++++ devel_tools/makefun_factory/orb_121.f90 | 52 ++++ devel_tools/makefun_factory/orb_122.f90 | 34 +++ devel_tools/makefun_factory/orb_123.f90 | 57 ++++ devel_tools/makefun_factory/orb_124.f90 | 49 ++++ devel_tools/makefun_factory/orb_125.f90 | 41 +++ devel_tools/makefun_factory/orb_126.f90 | 48 +++ devel_tools/makefun_factory/orb_127.f90 | 101 +++++++ devel_tools/makefun_factory/orb_128.f90 | 36 +++ devel_tools/makefun_factory/orb_129.f90 | 46 +++ devel_tools/makefun_factory/orb_13.f90 | 54 ++++ devel_tools/makefun_factory/orb_130.f90 | 46 +++ devel_tools/makefun_factory/orb_131.f90 | 38 +++ devel_tools/makefun_factory/orb_132.f90 | 37 +++ devel_tools/makefun_factory/orb_133.f90 | 100 +++++++ devel_tools/makefun_factory/orb_134.f90 | 49 ++++ devel_tools/makefun_factory/orb_135.f90 | 47 +++ devel_tools/makefun_factory/orb_136.f90 | 46 +++ devel_tools/makefun_factory/orb_137.f90 | 43 +++ devel_tools/makefun_factory/orb_138.f90 | 36 +++ devel_tools/makefun_factory/orb_139.f90 | 37 +++ devel_tools/makefun_factory/orb_14.f90 | 42 +++ devel_tools/makefun_factory/orb_140.f90 | 46 +++ devel_tools/makefun_factory/orb_141.f90 | 47 +++ devel_tools/makefun_factory/orb_142.f90 | 101 +++++++ devel_tools/makefun_factory/orb_143.f90 | 100 +++++++ devel_tools/makefun_factory/orb_144.f90 | 48 +++ devel_tools/makefun_factory/orb_145.f90 | 38 +++ devel_tools/makefun_factory/orb_146.f90 | 46 +++ devel_tools/makefun_factory/orb_147.f90 | 103 +++++++ devel_tools/makefun_factory/orb_148.f90 | 102 +++++++ devel_tools/makefun_factory/orb_149.f90 | 39 +++ devel_tools/makefun_factory/orb_15.f90 | 44 +++ devel_tools/makefun_factory/orb_150.f90 | 47 +++ devel_tools/makefun_factory/orb_151.f90 | 49 ++++ devel_tools/makefun_factory/orb_152.f90 | 27 ++ devel_tools/makefun_factory/orb_153.f90 | 29 ++ devel_tools/makefun_factory/orb_154.f90 | 128 ++++++++ devel_tools/makefun_factory/orb_155.f90 | 151 ++++++++++ devel_tools/makefun_factory/orb_16.f90 | 68 +++++ devel_tools/makefun_factory/orb_17.f90 | 43 +++ devel_tools/makefun_factory/orb_18.f90 | 49 ++++ devel_tools/makefun_factory/orb_19.f90 | 56 ++++ devel_tools/makefun_factory/orb_199.f90 | 22 ++ devel_tools/makefun_factory/orb_2.f90 | 51 ++++ devel_tools/makefun_factory/orb_20.f90 | 51 ++++ devel_tools/makefun_factory/orb_200.f90 | 24 ++ devel_tools/makefun_factory/orb_2000:2099.f90 | 46 +++ devel_tools/makefun_factory/orb_21.f90 | 57 ++++ devel_tools/makefun_factory/orb_2100:2199.f90 | 53 ++++ devel_tools/makefun_factory/orb_22.f90 | 57 ++++ devel_tools/makefun_factory/orb_2200:2299.f90 | 105 +++++++ devel_tools/makefun_factory/orb_23.f90 | 68 +++++ devel_tools/makefun_factory/orb_24.f90 | 56 ++++ devel_tools/makefun_factory/orb_25.f90 | 61 ++++ devel_tools/makefun_factory/orb_26.f90 | 59 ++++ devel_tools/makefun_factory/orb_27.f90 | 73 +++++ devel_tools/makefun_factory/orb_28.f90 | 56 ++++ devel_tools/makefun_factory/orb_29.f90 | 73 +++++ devel_tools/makefun_factory/orb_3.f90 | 51 ++++ devel_tools/makefun_factory/orb_30.f90 | 109 +++++++ devel_tools/makefun_factory/orb_31.f90 | 115 ++++++++ devel_tools/makefun_factory/orb_32.f90 | 120 ++++++++ devel_tools/makefun_factory/orb_33.f90 | 112 +++++++ devel_tools/makefun_factory/orb_34.f90 | 52 ++++ devel_tools/makefun_factory/orb_35.f90 | 48 +++ devel_tools/makefun_factory/orb_36.f90 | 42 +++ devel_tools/makefun_factory/orb_37,68.f90 | 86 ++++++ devel_tools/makefun_factory/orb_38.f90 | 51 ++++ devel_tools/makefun_factory/orb_39.f90 | 61 ++++ devel_tools/makefun_factory/orb_4.f90 | 48 +++ devel_tools/makefun_factory/orb_40.f90 | 63 ++++ devel_tools/makefun_factory/orb_41.f90 | 61 ++++ devel_tools/makefun_factory/orb_42.f90 | 115 ++++++++ devel_tools/makefun_factory/orb_43.f90 | 114 ++++++++ devel_tools/makefun_factory/orb_44.f90 | 54 ++++ devel_tools/makefun_factory/orb_45,69.f90 | 122 ++++++++ devel_tools/makefun_factory/orb_46.f90 | 45 +++ devel_tools/makefun_factory/orb_47.f90 | 111 +++++++ devel_tools/makefun_factory/orb_48.f90 | 118 ++++++++ devel_tools/makefun_factory/orb_49.f90 | 157 ++++++++++ devel_tools/makefun_factory/orb_5.f90 | 43 +++ devel_tools/makefun_factory/orb_50.f90 | 55 ++++ devel_tools/makefun_factory/orb_51.f90 | 189 ++++++++++++ devel_tools/makefun_factory/orb_52.f90 | 193 +++++++++++++ devel_tools/makefun_factory/orb_55.f90 | 191 ++++++++++++ devel_tools/makefun_factory/orb_56.f90 | 191 ++++++++++++ devel_tools/makefun_factory/orb_57.f90 | 72 +++++ devel_tools/makefun_factory/orb_6.f90 | 52 ++++ devel_tools/makefun_factory/orb_60.f90 | 44 +++ devel_tools/makefun_factory/orb_61.f90 | 49 ++++ devel_tools/makefun_factory/orb_62.f90 | 54 ++++ devel_tools/makefun_factory/orb_63.f90 | 62 ++++ devel_tools/makefun_factory/orb_64.f90 | 121 ++++++++ devel_tools/makefun_factory/orb_65.f90 | 135 +++++++++ devel_tools/makefun_factory/orb_66.f90 | 101 +++++++ devel_tools/makefun_factory/orb_7.f90 | 48 +++ devel_tools/makefun_factory/orb_70.f90 | 158 ++++++++++ devel_tools/makefun_factory/orb_71.f90 | 160 ++++++++++ devel_tools/makefun_factory/orb_72.f90 | 186 ++++++++++++ devel_tools/makefun_factory/orb_73.f90 | 235 +++++++++++++++ devel_tools/makefun_factory/orb_8.f90 | 48 +++ devel_tools/makefun_factory/orb_80.f90 | 45 +++ devel_tools/makefun_factory/orb_81.f90 | 50 ++++ devel_tools/makefun_factory/orb_82.f90 | 52 ++++ devel_tools/makefun_factory/orb_83.f90 | 56 ++++ devel_tools/makefun_factory/orb_84.f90 | 131 +++++++++ devel_tools/makefun_factory/orb_85.f90 | 130 +++++++++ devel_tools/makefun_factory/orb_86.f90 | 161 +++++++++++ devel_tools/makefun_factory/orb_87.f90 | 165 +++++++++++ devel_tools/makefun_factory/orb_88.f90 | 197 +++++++++++++ devel_tools/makefun_factory/orb_89.f90 | 206 +++++++++++++ devel_tools/makefun_factory/orb_90:99.f90 | 273 ++++++++++++++++++ 144 files changed, 10503 insertions(+) create mode 100644 devel_tools/makefun_factory/construct.py create mode 100644 devel_tools/makefun_factory/makefun_footer.f90 create mode 100644 devel_tools/makefun_factory/makefun_header.f90 create mode 100644 devel_tools/makefun_factory/orb_1.f90 create mode 100644 devel_tools/makefun_factory/orb_10.f90 create mode 100644 devel_tools/makefun_factory/orb_100.f90 create mode 100644 devel_tools/makefun_factory/orb_10000:11000.f90 create mode 100644 devel_tools/makefun_factory/orb_1000:1099.f90 create mode 100644 devel_tools/makefun_factory/orb_101.f90 create mode 100644 devel_tools/makefun_factory/orb_102.f90 create mode 100644 devel_tools/makefun_factory/orb_103.f90 create mode 100644 devel_tools/makefun_factory/orb_104.f90 create mode 100644 devel_tools/makefun_factory/orb_105.f90 create mode 100644 devel_tools/makefun_factory/orb_106.f90 create mode 100644 devel_tools/makefun_factory/orb_107.f90 create mode 100644 devel_tools/makefun_factory/orb_108.f90 create mode 100644 devel_tools/makefun_factory/orb_109.f90 create mode 100644 devel_tools/makefun_factory/orb_11.f90 create mode 100644 devel_tools/makefun_factory/orb_110.f90 create mode 100644 devel_tools/makefun_factory/orb_1100:1199.f90 create mode 100644 devel_tools/makefun_factory/orb_111.f90 create mode 100644 devel_tools/makefun_factory/orb_112.f90 create mode 100644 devel_tools/makefun_factory/orb_113.f90 create mode 100644 devel_tools/makefun_factory/orb_114.f90 create mode 100644 devel_tools/makefun_factory/orb_115.f90 create mode 100644 devel_tools/makefun_factory/orb_116.f90 create mode 100644 devel_tools/makefun_factory/orb_117.f90 create mode 100644 devel_tools/makefun_factory/orb_118.f90 create mode 100644 devel_tools/makefun_factory/orb_119.f90 create mode 100644 devel_tools/makefun_factory/orb_12.f90 create mode 100644 devel_tools/makefun_factory/orb_120.f90 create mode 100644 devel_tools/makefun_factory/orb_1200:1299.f90 create mode 100644 devel_tools/makefun_factory/orb_121.f90 create mode 100644 devel_tools/makefun_factory/orb_122.f90 create mode 100644 devel_tools/makefun_factory/orb_123.f90 create mode 100644 devel_tools/makefun_factory/orb_124.f90 create mode 100644 devel_tools/makefun_factory/orb_125.f90 create mode 100644 devel_tools/makefun_factory/orb_126.f90 create mode 100644 devel_tools/makefun_factory/orb_127.f90 create mode 100644 devel_tools/makefun_factory/orb_128.f90 create mode 100644 devel_tools/makefun_factory/orb_129.f90 create mode 100644 devel_tools/makefun_factory/orb_13.f90 create mode 100644 devel_tools/makefun_factory/orb_130.f90 create mode 100644 devel_tools/makefun_factory/orb_131.f90 create mode 100644 devel_tools/makefun_factory/orb_132.f90 create mode 100644 devel_tools/makefun_factory/orb_133.f90 create mode 100644 devel_tools/makefun_factory/orb_134.f90 create mode 100644 devel_tools/makefun_factory/orb_135.f90 create mode 100644 devel_tools/makefun_factory/orb_136.f90 create mode 100644 devel_tools/makefun_factory/orb_137.f90 create mode 100644 devel_tools/makefun_factory/orb_138.f90 create mode 100644 devel_tools/makefun_factory/orb_139.f90 create mode 100644 devel_tools/makefun_factory/orb_14.f90 create mode 100644 devel_tools/makefun_factory/orb_140.f90 create mode 100644 devel_tools/makefun_factory/orb_141.f90 create mode 100644 devel_tools/makefun_factory/orb_142.f90 create mode 100644 devel_tools/makefun_factory/orb_143.f90 create mode 100644 devel_tools/makefun_factory/orb_144.f90 create mode 100644 devel_tools/makefun_factory/orb_145.f90 create mode 100644 devel_tools/makefun_factory/orb_146.f90 create mode 100644 devel_tools/makefun_factory/orb_147.f90 create mode 100644 devel_tools/makefun_factory/orb_148.f90 create mode 100644 devel_tools/makefun_factory/orb_149.f90 create mode 100644 devel_tools/makefun_factory/orb_15.f90 create mode 100644 devel_tools/makefun_factory/orb_150.f90 create mode 100644 devel_tools/makefun_factory/orb_151.f90 create mode 100644 devel_tools/makefun_factory/orb_152.f90 create mode 100644 devel_tools/makefun_factory/orb_153.f90 create mode 100644 devel_tools/makefun_factory/orb_154.f90 create mode 100644 devel_tools/makefun_factory/orb_155.f90 create mode 100644 devel_tools/makefun_factory/orb_16.f90 create mode 100644 devel_tools/makefun_factory/orb_17.f90 create mode 100644 devel_tools/makefun_factory/orb_18.f90 create mode 100644 devel_tools/makefun_factory/orb_19.f90 create mode 100644 devel_tools/makefun_factory/orb_199.f90 create mode 100644 devel_tools/makefun_factory/orb_2.f90 create mode 100644 devel_tools/makefun_factory/orb_20.f90 create mode 100644 devel_tools/makefun_factory/orb_200.f90 create mode 100644 devel_tools/makefun_factory/orb_2000:2099.f90 create mode 100644 devel_tools/makefun_factory/orb_21.f90 create mode 100644 devel_tools/makefun_factory/orb_2100:2199.f90 create mode 100644 devel_tools/makefun_factory/orb_22.f90 create mode 100644 devel_tools/makefun_factory/orb_2200:2299.f90 create mode 100644 devel_tools/makefun_factory/orb_23.f90 create mode 100644 devel_tools/makefun_factory/orb_24.f90 create mode 100644 devel_tools/makefun_factory/orb_25.f90 create mode 100644 devel_tools/makefun_factory/orb_26.f90 create mode 100644 devel_tools/makefun_factory/orb_27.f90 create mode 100644 devel_tools/makefun_factory/orb_28.f90 create mode 100644 devel_tools/makefun_factory/orb_29.f90 create mode 100644 devel_tools/makefun_factory/orb_3.f90 create mode 100644 devel_tools/makefun_factory/orb_30.f90 create mode 100644 devel_tools/makefun_factory/orb_31.f90 create mode 100644 devel_tools/makefun_factory/orb_32.f90 create mode 100644 devel_tools/makefun_factory/orb_33.f90 create mode 100644 devel_tools/makefun_factory/orb_34.f90 create mode 100644 devel_tools/makefun_factory/orb_35.f90 create mode 100644 devel_tools/makefun_factory/orb_36.f90 create mode 100644 devel_tools/makefun_factory/orb_37,68.f90 create mode 100644 devel_tools/makefun_factory/orb_38.f90 create mode 100644 devel_tools/makefun_factory/orb_39.f90 create mode 100644 devel_tools/makefun_factory/orb_4.f90 create mode 100644 devel_tools/makefun_factory/orb_40.f90 create mode 100644 devel_tools/makefun_factory/orb_41.f90 create mode 100644 devel_tools/makefun_factory/orb_42.f90 create mode 100644 devel_tools/makefun_factory/orb_43.f90 create mode 100644 devel_tools/makefun_factory/orb_44.f90 create mode 100644 devel_tools/makefun_factory/orb_45,69.f90 create mode 100644 devel_tools/makefun_factory/orb_46.f90 create mode 100644 devel_tools/makefun_factory/orb_47.f90 create mode 100644 devel_tools/makefun_factory/orb_48.f90 create mode 100644 devel_tools/makefun_factory/orb_49.f90 create mode 100644 devel_tools/makefun_factory/orb_5.f90 create mode 100644 devel_tools/makefun_factory/orb_50.f90 create mode 100644 devel_tools/makefun_factory/orb_51.f90 create mode 100644 devel_tools/makefun_factory/orb_52.f90 create mode 100644 devel_tools/makefun_factory/orb_55.f90 create mode 100644 devel_tools/makefun_factory/orb_56.f90 create mode 100644 devel_tools/makefun_factory/orb_57.f90 create mode 100644 devel_tools/makefun_factory/orb_6.f90 create mode 100644 devel_tools/makefun_factory/orb_60.f90 create mode 100644 devel_tools/makefun_factory/orb_61.f90 create mode 100644 devel_tools/makefun_factory/orb_62.f90 create mode 100644 devel_tools/makefun_factory/orb_63.f90 create mode 100644 devel_tools/makefun_factory/orb_64.f90 create mode 100644 devel_tools/makefun_factory/orb_65.f90 create mode 100644 devel_tools/makefun_factory/orb_66.f90 create mode 100644 devel_tools/makefun_factory/orb_7.f90 create mode 100644 devel_tools/makefun_factory/orb_70.f90 create mode 100644 devel_tools/makefun_factory/orb_71.f90 create mode 100644 devel_tools/makefun_factory/orb_72.f90 create mode 100644 devel_tools/makefun_factory/orb_73.f90 create mode 100644 devel_tools/makefun_factory/orb_8.f90 create mode 100644 devel_tools/makefun_factory/orb_80.f90 create mode 100644 devel_tools/makefun_factory/orb_81.f90 create mode 100644 devel_tools/makefun_factory/orb_82.f90 create mode 100644 devel_tools/makefun_factory/orb_83.f90 create mode 100644 devel_tools/makefun_factory/orb_84.f90 create mode 100644 devel_tools/makefun_factory/orb_85.f90 create mode 100644 devel_tools/makefun_factory/orb_86.f90 create mode 100644 devel_tools/makefun_factory/orb_87.f90 create mode 100644 devel_tools/makefun_factory/orb_88.f90 create mode 100644 devel_tools/makefun_factory/orb_89.f90 create mode 100644 devel_tools/makefun_factory/orb_90:99.f90 diff --git a/devel_tools/makefun_factory/construct.py b/devel_tools/makefun_factory/construct.py new file mode 100644 index 0000000..2477ef4 --- /dev/null +++ b/devel_tools/makefun_factory/construct.py @@ -0,0 +1,25 @@ +import glob + +# Load header +with open('makefun_header.f90', 'r') as f: + header = f.read() + +# Load footer +with open('makefun_footer.f90', 'r') as f: + footer = f.read() + +# Load orbitals +# search for all file that fits name pattern orb_*.f90 +orb_files = glob.glob('orb_*.f90') +# read files +orbitals = {f.replace("orb_", "").replace(".f90",""): open(f, 'r').read() for f in orb_files} + +# Ensamlble makefun.f90 +with open('makefun_out.f90', 'w') as f: + f.write(header) + f.write('select case (iopt)\n') + for k, v in orbitals.items(): + f.write(f'case ({k})\n') + f.write(v) + f.write(footer) + diff --git a/devel_tools/makefun_factory/makefun_footer.f90 b/devel_tools/makefun_factory/makefun_footer.f90 new file mode 100644 index 0000000..42672b6 --- /dev/null +++ b/devel_tools/makefun_factory/makefun_footer.f90 @@ -0,0 +1,10 @@ +case default +write(6,*) 'WARNING makefun: orbital',iopt,'not found' + +iflagerr=1 + +end select +! ** ** ** ** ** ** ** END OF JASTROW ORBITALS ** ** ** ** ** ** ** ** * + +return +end diff --git a/devel_tools/makefun_factory/makefun_header.f90 b/devel_tools/makefun_factory/makefun_header.f90 new file mode 100644 index 0000000..8c677f5 --- /dev/null +++ b/devel_tools/makefun_factory/makefun_header.f90 @@ -0,0 +1,40 @@ +!TL off +subroutine makefun(iopt,indt,i0,indtmin,indtm,typec,indpar & + &,indorb,indshell,nelskip,z,dd,zeta,r,rmu,distp & + &,iflagnorm_unused,cr) + use constants + implicit none + integer iopt,indt,i,k,nelskip,indpar,indorbp & + &,indorb,indshell,indshellp,ic,indtmin,i0 & + &,iflagnorm_unused,indparp,indtm,npower,typec & + &,ii,jj,kk + real*8 z(nelskip,i0:*),dd(*),zeta(*),rmu(3,0:indtm) & + &,r(0:indtm) & + &,distp(0:indtm,20),peff,fun,fun0,fun2 & + &,rp1,rp2,rp3,rp4,rp5,rp6,rp7,rp8 & + &,dd1,dd2,dd3,dd4,dd5,c,cr,funp,fun2p,funb & + &,peff2,arg,c0,c1,cost,zv(6),yv(6),xv(6),r2,r4,r6 ! up to i + + integer :: count, multiplicity + integer, parameter :: max_power = 20 + real*8 :: powers(3,0:max_power,0:indtm) + ! + ! indorb are the number of orbitals occupied before calling + ! this subroutine + ! + ! indpar is the number of variational parameters used + ! before calling this subroutine + ! + ! indshell is the index of the last occupied orbital + ! in the shell, characterized by occupation number iocc(indshell) + ! + ! z(i,indt+4) contains the laplacian of the orbital i + ! z(i,indt+mu) contains the gradient of the orbital i (mu=1,2,3) + ! In the following given a radial part of the orbital f(r) + ! fun=1/r d f(r)/d r + + !print *,__FILE__ + !print *,'makefun: iopt=',iopt + !print *,'makefun: i=',i0,' a=',indtmin,' b=',indtm + !print *,'makefun: indpar=',indpar,' indorb=',indorb,' indshell=',indshell + !print *,'makefun: nelskip=',nelskip diff --git a/devel_tools/makefun_factory/orb_1.f90 b/devel_tools/makefun_factory/orb_1.f90 new file mode 100644 index 0000000..129eb03 --- /dev/null +++ b/devel_tools/makefun_factory/orb_1.f90 @@ -0,0 +1,36 @@ + ! s orbital + ! + ! - angmom = 0 + ! - type = Slater + ! - normalized = yes + ! - angtype = spherical + ! - npar = 1 + ! - multiplicity = 1 + ! + + indshellp=indshell+1 + dd1=dd(indpar+1) + c=dd1*dsqrt(dd1)*0.56418958354775628695d0 + + indorbp=indorb+1 + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + end do + + do i=i0,indtm + z(indorbp,i)=distp(i,1) + end do + + if(typec.ne.1) then + fun=-dd1*distp(0,1) + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0)/r(0) + end do + + z(indorbp,indt+4)=(-2.d0*dd1/r(0)+dd1**2)*distp(0,1) + end if + + indorb=indorbp + indpar=indpar+1 + indshell=indshellp diff --git a/devel_tools/makefun_factory/orb_10.f90 b/devel_tools/makefun_factory/orb_10.f90 new file mode 100644 index 0000000..6f31982 --- /dev/null +++ b/devel_tools/makefun_factory/orb_10.f90 @@ -0,0 +1,40 @@ + ! R(r)=r**2*exp(-z1*r) + + + + indshellp=indshell+1 + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + dd1=dd(indpar+1) + ! if(iflagnorm.gt.2) then + ! c=dsqrt((2*dd1)**7/720.d0/pi)/2.d0 + c=dd1**3.5d0*0.11894160774351807429d0 + ! endif + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + end do + + do i=i0,indtm + z(indorbp,i)=distp(i,1)*r(i)**2 + end do + + if(typec.ne.1) then + fun=(2.d0-dd1*r(0))*distp(0,1) + fun2=(2.d0-4*dd1*r(0)+(dd1*r(0))**2)*distp(0,1) + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + z(indorbp,indt+4)=2.d0*fun+fun2 + end if + + indorb=indorbp + + ! endif + indpar=indpar+1 + indshell=indshellp + + + ! 3s double zeta diff --git a/devel_tools/makefun_factory/orb_100.f90 b/devel_tools/makefun_factory/orb_100.f90 new file mode 100644 index 0000000..d8a6ccc --- /dev/null +++ b/devel_tools/makefun_factory/orb_100.f90 @@ -0,0 +1,37 @@ + ! 2s single gaussian + ! exp(-dd2*r^2) + + + dd2=dd(indpar+1) + + + indorbp=indorb+1 + indshellp=indshell+1 + do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)*r(k)) + end do + + ! if(iocc(indshellp).eq.1) then + do i=i0,indtm + z(indorbp,i)=distp(i,1) + end do + ! endif + + + if(typec.ne.1) then + fun=-dd2*distp(0,1)*2.d0 + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*dd2*(-3.d0+2.d0*dd2*r(0)**2)* & + distp(0,1) + !endif for indt + end if + + indpar=indpar+1 + indshell=indshellp + indorb=indorbp + + + diff --git a/devel_tools/makefun_factory/orb_10000:11000.f90 b/devel_tools/makefun_factory/orb_10000:11000.f90 new file mode 100644 index 0000000..f899e5f --- /dev/null +++ b/devel_tools/makefun_factory/orb_10000:11000.f90 @@ -0,0 +1,2 @@ + ! Reserved for dummy orbitals + diff --git a/devel_tools/makefun_factory/orb_1000:1099.f90 b/devel_tools/makefun_factory/orb_1000:1099.f90 new file mode 100644 index 0000000..273c253 --- /dev/null +++ b/devel_tools/makefun_factory/orb_1000:1099.f90 @@ -0,0 +1,43 @@ +! s gaussian r**(2*npower)*exp(-alpha*r**2) + +npower=iopt-1000 + +indorbp=indorb+1 +indshellp=indshell+1 + +dd2=dd(indpar+1) +do k=indtmin,indtm + distp(k,1)=r(k)**(2*npower)*dexp(-dd2*r(k)**2) +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=distp(i,1) +end do +! endif + + +if(typec.ne.1) then + + + rp1=r(0)**2 + fun=(npower-dd2*rp1)*distp(0,1)*2.d0/rp1 + fun2=(npower*(2.d0*npower-1.d0)- & + (1.d0+4.d0*npower)*dd2*rp1+2.d0*(dd2*rp1)**2)* & + distp(0,1)*2.d0/rp1 + + ! if(iocc(indshellp).eq.1) then + do i=1,3 + z(indorbp,indt+i)=rmu(i,0)*fun + end do + z(indorbp,indt+4)=2.d0*fun+fun2 + ! endif + + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshell+1 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_101.f90 b/devel_tools/makefun_factory/orb_101.f90 new file mode 100644 index 0000000..e61872b --- /dev/null +++ b/devel_tools/makefun_factory/orb_101.f90 @@ -0,0 +1,39 @@ + ! 2s without cusp condition + ! dd1*( dd3 +exp(-dd2*r^2)) + + + dd2=dd(indpar+1) + dd3=dd(indpar+2) + + indorbp=indorb+1 + indshellp=indshell+1 + do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)*r(k)) + end do + + ! if(iocc(indshellp).eq.1) then + do i=i0,indtm + z(indorbp,i)=distp(i,1)+dd3 + end do + ! endif + + + if(typec.ne.1) then + fun=-dd2*distp(0,1)*2.d0 + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*dd2*(-3.d0+2.d0*dd2*r(0)**2)* & + distp(0,1) + + + !endif for indt + end if + + indpar=indpar+2 + indshell=indshellp + indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_102.f90 b/devel_tools/makefun_factory/orb_102.f90 new file mode 100644 index 0000000..c0f72dd --- /dev/null +++ b/devel_tools/makefun_factory/orb_102.f90 @@ -0,0 +1,52 @@ + ! 2s double gaussian with constant + ! (dd3+ exp (-dd2 r^2)+dd4*exp(-dd5*r^2)) + + + + dd2=dd(indpar+1) + dd3=dd(indpar+2) + dd4=dd(indpar+3) + dd5=dd(indpar+4) + + indorbp=indorb+1 + indshellp=indshell+1 + do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)*r(k)) + distp(k,2)=dexp(-dd5*r(k)*r(k)) + end do + + ! if(iocc(indshellp).eq.1) then + do i=i0,indtm + z(indorbp,i)=(distp(i,1)+dd3+dd4*distp(i,2)) +! write(6,*) ' function inside = ',z(indorbp,i) +end do +! endif + + +if(typec.ne.1) then + fun=-2.d0*(dd2*distp(0,1)+dd5*dd4*distp(0,2)) + fun2=r(0)**2 + + ! write(6,*) ' fun inside = ',fun,fun2 + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*(dd2*(-3.d0+2.d0*dd2*fun2)* & + distp(0,1)+dd5*dd4*(-3.d0+2.d0*dd5*fun2)*distp(0,2)) + + ! write(6,*) ' lap 106 =',z(indorbp,indt+4) + + + ! stop + + !endif for indt +end if + +indpar=indpar+4 +indshell=indshellp +indorb=indorbp + + + diff --git a/devel_tools/makefun_factory/orb_103.f90 b/devel_tools/makefun_factory/orb_103.f90 new file mode 100644 index 0000000..6c91ea8 --- /dev/null +++ b/devel_tools/makefun_factory/orb_103.f90 @@ -0,0 +1,49 @@ +! 2p single gaussian + + + +dd2=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)**2) +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1) + end do + ! endif +end do + + +if(typec.ne.1) then + fun0=distp(0,1) + fun=-dd2*distp(0,1)*2.d0 + fun2=2.d0*dd2*(-1.d0+2.d0*dd2*r(0)**2)* & + distp(0,1) + + ! indorbp=indorb + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + end do + z(indorbp,indt+ic)=z(indorbp,indt+ic)+fun0 + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshell+3 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_104.f90 b/devel_tools/makefun_factory/orb_104.f90 new file mode 100644 index 0000000..f80b61e --- /dev/null +++ b/devel_tools/makefun_factory/orb_104.f90 @@ -0,0 +1,56 @@ +! 2p double gaussian +! dd1 * x_mu (exp(-dd2 r^2)+dd3 * exp(-dd4*r^2)) + + +dd2=dd(indpar+1) +dd3=dd(indpar+2) +dd4=dd(indpar+3) + + +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)**2) + distp(k,2)=dexp(-dd4*r(k)**2) +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*(distp(i,1)+dd3*distp(i,2)) + end do + ! endif +end do + + +if(typec.ne.1) then + fun0=(distp(0,1)+dd3*distp(0,2)) + fun=2.d0*(-dd2*distp(0,1) & + -dd4*dd3*distp(0,2)) + fun2=2.d0*(dd2*(-1.d0+2.d0*dd2*r(0)**2)*distp(0,1) & + +dd4*dd3*(-1.d0+2.d0*dd4*r(0)**2)*distp(0,2)) + + + ! indorbp=indorb + + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + + !endif for indt +end if + +indpar=indpar+3 +indshell=indshell+3 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_105.f90 b/devel_tools/makefun_factory/orb_105.f90 new file mode 100644 index 0000000..011a2fc --- /dev/null +++ b/devel_tools/makefun_factory/orb_105.f90 @@ -0,0 +1,51 @@ +! 2s double gaussian without constant +! (exp (-dd2 r^2)+dd4*exp(-dd5*r^2)) + + + +! dd1=1.d0 +dd2=dd(indpar+1) +! dd3=dd(indpar+2) +! dd4=dd(indpar+3) +! dd5=dd(indpar+4) +dd4=dd(indpar+2) +dd5=dd(indpar+3) + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)*r(k)) + distp(k,2)=dexp(-dd5*r(k)*r(k)) +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=distp(i,1)+dd4*distp(i,2) +! write(6,*) ' function inside = ',z(indorbp,i) +end do +! endif + + +if(typec.ne.1) then + fun=-2.d0*(dd2*distp(0,1)+dd5*dd4*distp(0,2)) + fun2=r(0)**2 + + ! write(6,*) ' fun inside = ',fun,fun2 + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*(dd2*(-3.d0+2.d0*dd2*fun2)* & + distp(0,1)+dd5*dd4*(-3.d0+2.d0*dd5*fun2)*distp(0,2)) + + + + + !endif for indt +end if + +indpar=indpar+3 +indshell=indshellp +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_106.f90 b/devel_tools/makefun_factory/orb_106.f90 new file mode 100644 index 0000000..b2668ea --- /dev/null +++ b/devel_tools/makefun_factory/orb_106.f90 @@ -0,0 +1,38 @@ +! 2s without cusp condition +! dd1*( dd3 +1/(1+dd2*r^2)) + + +dd2=dd(indpar+1) +dd3=dd(indpar+2) + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=1.d0/(1.d0+dd2*r(k)*r(k)) +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=distp(i,1)+dd3 +end do +! endif + + +if(typec.ne.1) then + fun=-dd2*distp(0,1)**2*2.d0 + fun2=fun*distp(0,1)*(1.-3.d0*dd2*r(0)**2) + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=fun2+2.d0*fun + + + !endif for indt +end if + +indpar=indpar+2 +indshell=indshellp +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_107.f90 b/devel_tools/makefun_factory/orb_107.f90 new file mode 100644 index 0000000..0aa0349 --- /dev/null +++ b/devel_tools/makefun_factory/orb_107.f90 @@ -0,0 +1,50 @@ +! 2p single lorentian parent of 103 + + + +dd2=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=1.d0/(1.d0+dd2*r(k)**2) +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1) + end do + ! endif +end do + + +if(typec.ne.1) then + fun0=distp(0,1) + fun=-dd2*distp(0,1)**2*2.d0 + fun2=fun*distp(0,1)*(1.d0-3.d0*dd2*r(0)**2) + + ! indorbp=indorb + + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshell+3 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_108.f90 b/devel_tools/makefun_factory/orb_108.f90 new file mode 100644 index 0000000..9e902ea --- /dev/null +++ b/devel_tools/makefun_factory/orb_108.f90 @@ -0,0 +1,48 @@ +! 2s double lorentian with constant parent of 102 +! (dd3+ L(dd2 r^2)+dd4*L(dd5*r^2)) ; L(x)=1/1+x^2 + + + +dd2=dd(indpar+1) +dd3=dd(indpar+2) +dd4=dd(indpar+3) +dd5=dd(indpar+4) + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=1.d0/(1.d0+dd2*r(k)*r(k)) + distp(k,2)=1.d0/(1.d0+dd5*r(k)*r(k)) +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=(distp(i,1)+dd3+dd4*distp(i,2)) +! write(6,*) ' function inside = ',z(indorbp,i) +end do +! endif + + +if(typec.ne.1) then + fun=-2.d0*(dd2*distp(0,1)**2+dd5*dd4*distp(0,2)**2) + fun2=2.d0*dd2*distp(0,1)**3*(-1.d0+3.d0*dd2*r(0)**2) & + +2.d0*dd5*dd4*distp(0,2)**3*(-1.d0+3.d0*dd5*r(0)**2) + + ! write(6,*) ' fun inside = ',fun,fun2 + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=fun2+2.d0*fun + + ! write(6,*) ' lap 106 =',z(indorbp,indt+4) + + !endif for indt +end if + +indpar=indpar+4 +indshell=indshellp +indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_109.f90 b/devel_tools/makefun_factory/orb_109.f90 new file mode 100644 index 0000000..88ce950 --- /dev/null +++ b/devel_tools/makefun_factory/orb_109.f90 @@ -0,0 +1,58 @@ +! 2p double Lorentian +! dd1 * x_mu (L(dd2 r^2)+dd3 * L(dd4*r^2)) ; L(x)=1/(1+x^2) + + + +dd2=dd(indpar+1) +dd3=dd(indpar+2) +dd4=dd(indpar+3) + +do k=indtmin,indtm + distp(k,1)=1.d0/(1.d0+dd2*r(k)**2) + distp(k,2)=1.d0/(1.d0+dd4*r(k)**2) +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*(distp(i,1)+dd3*distp(i,2)) + end do + ! endif +end do + + +if(typec.ne.1) then + fun0=distp(0,1)+dd3*distp(0,2) + + fun=2.d0*(-dd2*distp(0,1)**2-dd4*dd3*distp(0,2)**2) + ! fun2=2.d0*(dd2*(-1.d0+2.d0*dd2*r(0)**2)*distp(0,1) + ! 1+dd4*dd3*(-1.d0+2.d0*dd4*r(0)**2)*distp(0,2)) + + fun2=2*dd2*distp(0,1)**3*(-1.d0+3.d0*dd2*r(0)**2) & + +2*dd3*dd4*distp(0,2)**3*(-1.d0+3.d0*dd4*r(0)**2) + + ! indorbp=indorb + + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + + !endif for indt +end if + +indpar=indpar+3 +indshell=indshell+3 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_11.f90 b/devel_tools/makefun_factory/orb_11.f90 new file mode 100644 index 0000000..2889c99 --- /dev/null +++ b/devel_tools/makefun_factory/orb_11.f90 @@ -0,0 +1,52 @@ + ! R(r)=r**2*(exp(-z1*r)+p*exp(-z2*r)) + + + + indshellp=indshell+1 + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + dd1=dd(indpar+1) + dd2=dd(indpar+2) + peff=dd(indpar+3) + ! if(iflagnorm.gt.2) then + c=1.d0/2.d0/dsqrt(pi*720.d0*(1.d0/(2.d0*dd1)**7+ & + 2.d0*peff/(dd1+dd2)**7+peff**2/(2.d0*dd2)**7)) + ! endif + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + distp(k,2)=c*dexp(-dd2*r(k)) + end do + + do i=i0,indtm + z(indorbp,i)=(distp(i,1)+peff*distp(i,2))*r(i)**2 + end do + + if(typec.ne.1) then + rp1=r(0)**2 + ! the first derivative + fun=distp(0,1)*(2.d0*r(0)-dd1*rp1) & + +peff*distp(0,2)*(2.d0*r(0)-dd2*rp1) + ! + ! the second derivative + fun2=distp(0,1)*(2.d0-4.d0*dd1*r(0)+dd1**2*rp1) & + +peff*distp(0,2)*(2.d0-4.d0*dd2*r(0)+dd2**2*rp1) + ! + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0)/r(0) + end do + + z(indorbp,indt+4)=2.d0*fun/r(0)+fun2 + + end if + + indorb=indorbp + + ! endif + indpar=indpar+3 + indshell=indshellp + + + ! 4s single zeta diff --git a/devel_tools/makefun_factory/orb_110.f90 b/devel_tools/makefun_factory/orb_110.f90 new file mode 100644 index 0000000..b037462 --- /dev/null +++ b/devel_tools/makefun_factory/orb_110.f90 @@ -0,0 +1,38 @@ +! 2s without cusp condition +! dd1*( dd3 +1/(1+dd2*r^3)) + + +dd2=dd(indpar+1) +dd3=dd(indpar+2) + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=1.d0/(1.d0+dd2*r(k)**3) +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=distp(i,1)+dd3 +end do +! endif + + +if(typec.ne.1) then + fun=-dd2*distp(0,1)**2*3.d0*r(0) + fun2=fun*distp(0,1)*(2.d0-4.d0*dd2*r(0)**3) + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=fun2+2.d0*fun + + + !endif for indt +end if + +indpar=indpar+2 +indshell=indshellp +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_1100:1199.f90 b/devel_tools/makefun_factory/orb_1100:1199.f90 new file mode 100644 index 0000000..d5525e8 --- /dev/null +++ b/devel_tools/makefun_factory/orb_1100:1199.f90 @@ -0,0 +1,53 @@ +! p gaussian r**(2*npower)*exp(-alpha*r**2) + +npower=iopt-1100 + +! indorbp=indorb + +dd2=dd(indpar+1) +do k=indtmin,indtm + distp(k,1)=r(k)**(2*npower)*dexp(-dd2*r(k)**2) +end do + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1) + end do + ! endif +end do + + +if(typec.ne.1) then + + + rp1=r(0)**2 + fun0=distp(0,1) + fun=(npower-dd2*rp1)*distp(0,1)*2.d0/rp1 + fun2=(npower*(2.d0*npower-1.d0)- & + (1.d0+4.d0*npower)*dd2*rp1+2.d0*(dd2*rp1)**2)* & + distp(0,1)*2.d0/rp1 + + ! indorbp=indorb + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)*fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0)*(4.d0*fun+fun2) + ! endif + end do + + + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshell+3 +indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_111.f90 b/devel_tools/makefun_factory/orb_111.f90 new file mode 100644 index 0000000..f8b4ef7 --- /dev/null +++ b/devel_tools/makefun_factory/orb_111.f90 @@ -0,0 +1,49 @@ +! 2p single r_mu/(1+b r^3) parent of 103 + + + +dd2=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=1.d0/(1.d0+dd2*r(k)**3) +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1) + end do + ! endif +end do + + +if(typec.ne.1) then + fun0=distp(0,1) + fun=-dd2*distp(0,1)**2*3.d0*r(0) + fun2=fun*distp(0,1)*(2.d0-4.d0*dd2*r(0)**3) + + ! indorbp=indorb + + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshell+3 +indorb=indorbp diff --git a/devel_tools/makefun_factory/orb_112.f90 b/devel_tools/makefun_factory/orb_112.f90 new file mode 100644 index 0000000..2764585 --- /dev/null +++ b/devel_tools/makefun_factory/orb_112.f90 @@ -0,0 +1,51 @@ +! 2p single r_mu/(1+b r)^3 parent of 103 + + + +dd2=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=1.d0/(1.d0+dd2*r(k))**3 +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1) + end do + ! endif +end do + + + +if(typec.ne.1) then + + fun0=distp(0,1) + fun=-3.d0*dd2*distp(0,1)/(r(0)*(1.d0+dd2*r(0))) + fun2=12.d0*dd2**2/(1.+dd2*r(0))**5 + + ! indorbp=indorb + + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshell+3 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_113.f90 b/devel_tools/makefun_factory/orb_113.f90 new file mode 100644 index 0000000..d756d5b --- /dev/null +++ b/devel_tools/makefun_factory/orb_113.f90 @@ -0,0 +1,38 @@ +! 2s without cusp condition +! dd1*( dd3 +r^2/(1+dd2*r)^4) + + +dd2=dd(indpar+1) +dd3=dd(indpar+2) + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=r(k)**2/(1.d0+dd2*r(k))**4 +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=distp(i,1)+dd3 +end do +! endif + + +if(typec.ne.1) then + fun= (2.d0-2.d0*dd2*r(0))/(1+dd2*r(0))**5 + fun2=2.d0*(1.d0-6.d0*dd2*r(0)+3.d0*(dd2*r(0))**2) & + /(1+dd2*r(0))**6 + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=fun2+2.d0*fun + + + !endif for indt +end if + +indpar=indpar+2 +indshell=indshellp +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_114.f90 b/devel_tools/makefun_factory/orb_114.f90 new file mode 100644 index 0000000..afcd2ba --- /dev/null +++ b/devel_tools/makefun_factory/orb_114.f90 @@ -0,0 +1,38 @@ +! 2s without cusp condition +! dd1*( dd3 +r^2/(1+dd2*r)^3) + + +dd2=dd(indpar+1) +dd3=dd(indpar+2) + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=r(k)**2/(1.d0+dd2*r(k))**3 +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=distp(i,1)+dd3 +end do +! endif + + +if(typec.ne.1) then + fun= (2.d0-dd2*r(0))/(1+dd2*r(0))**4 + fun2=2.d0*(1.d0-4.d0*dd2*r(0)+(dd2*r(0))**2) & + /(1+dd2*r(0))**5 + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=fun2+2.d0*fun + + + !endif for indt +end if + +indpar=indpar+2 +indshell=indshellp +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_115.f90 b/devel_tools/makefun_factory/orb_115.f90 new file mode 100644 index 0000000..0c00200 --- /dev/null +++ b/devel_tools/makefun_factory/orb_115.f90 @@ -0,0 +1,52 @@ +! 2s double lorentian with constant parent of 102 +! (dd3+ r^2/(1+dd2*r)^3+dd4*r^3/(1+dd5*r)^4; + + + +dd2=dd(indpar+1) +dd3=dd(indpar+2) +dd4=dd(indpar+3) +dd5=dd(indpar+4) + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=r(k)**2/(1.d0+dd2*r(k))**3 + distp(k,2)=r(k)**3/(1.d0+dd5*r(k))**4 +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=(distp(i,1)+dd3+dd4*distp(i,2)) +! write(6,*) ' function inside = ',z(indorbp,i) +end do +! endif + + +if(typec.ne.1) then + + fun= (2.d0-dd2*r(0))/(1+dd2*r(0))**4 & + -dd4*r(0)*(-3.d0+dd5*r(0))/(1.d0+dd5*r(0))**5 + fun2=2.d0*(1.d0-4.d0*dd2*r(0)+(dd2*r(0))**2) & + /(1+dd2*r(0))**5 & + +dd4*2.d0*r(0)*(3.d0-6.d0*dd5*r(0)+(dd5*r(0))**2) & + /(1.d0+dd5*r(0))**6 + + + ! write(6,*) ' fun inside = ',fun,fun2 + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=fun2+2.d0*fun + + ! write(6,*) ' lap 106 =',z(indorbp,indt+4) + + !endif for indt +end if + +indpar=indpar+4 +indshell=indshellp +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_116.f90 b/devel_tools/makefun_factory/orb_116.f90 new file mode 100644 index 0000000..e5f3f4a --- /dev/null +++ b/devel_tools/makefun_factory/orb_116.f90 @@ -0,0 +1,66 @@ +! 2p double Lorentian +! dd1 * x_mu (L^3(dd2 r)+dd3 r * L(dd4*r)^4) ; L(x)=1/(1+x) + + + +dd2=dd(indpar+1) +dd3=dd(indpar+2) +dd4=dd(indpar+3) + +do k=indtmin,indtm + distp(k,1)=1.d0/(1.d0+dd2*r(k))**3 + distp(k,2)=r(k)/(1.d0+dd4*r(k))**4 +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*(distp(i,1)+dd3*distp(i,2)) + end do + ! endif +end do + + +if(typec.ne.1) then + + + fun0=distp(0,1)+dd3*distp(0,2) + fun=-3.d0*dd2*distp(0,1)/(r(0)*(1.d0+dd2*r(0))) & + +dd3*distp(0,2)/r(0)**2*(1.d0-3*dd4*r(0)) & + /(1.d0+dd4*r(0)) + fun2=12.d0*dd2**2/(1.+dd2*r(0))**5 & + +dd3*4.d0*dd4*(-2.d0+3.d0*dd4*r(0))/(1.+dd4*r(0))**6 + + ! fun0=distp(0,1)+dd3*distp(0,2) + ! fun=2.d0*(-dd2*distp(0,1)**2-dd4*dd3*distp(0,2)**2) + + ! fun2=2*dd2*distp(0,1)**3*(-1.d0+3.d0*dd2*r(0)**2) + ! 1+2*dd3*dd4*distp(0,2)**3*(-1.d0+3.d0*dd4*r(0)**2) + + ! indorbp=indorb + + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + + + + !endif for indt +end if + +indpar=indpar+3 +indshell=indshell+3 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_117.f90 b/devel_tools/makefun_factory/orb_117.f90 new file mode 100644 index 0000000..7b06b8c --- /dev/null +++ b/devel_tools/makefun_factory/orb_117.f90 @@ -0,0 +1,48 @@ +! 2s double lorentian with constant parent of 102 +! (dd3+r^3/(1+dd5*r)^4; + + + +dd3=dd(indpar+1) +dd5=dd(indpar+2) + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=r(k)**3/(1.d0+dd5*r(k))**4 +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=dd3+distp(i,1) +! write(6,*) ' function inside = ',z(indorbp,i) +end do +! endif + + +if(typec.ne.1) then + + fun= & + -r(0)*(-3.d0+dd5*r(0))/(1.d0+dd5*r(0))**5 + fun2= & + +2.d0*r(0)*(3.d0-6.d0*dd5*r(0)+(dd5*r(0))**2) & + /(1.d0+dd5*r(0))**6 + + + ! write(6,*) ' fun inside = ',fun,fun2 + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=fun2+2.d0*fun + + ! write(6,*) ' lap 106 =',z(indorbp,indt+4) + + !endif for indt +end if + +indpar=indpar+2 +indshell=indshellp +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_118.f90 b/devel_tools/makefun_factory/orb_118.f90 new file mode 100644 index 0000000..544453b --- /dev/null +++ b/devel_tools/makefun_factory/orb_118.f90 @@ -0,0 +1,52 @@ +! 2s double lorentian with constant parent of 102 +! (dd1+ 1/ (1 + Exp[ dd2 (r^2 - r_0^2) ] ) | dd3=r_0 +! Fermi distribution with r^2 + + +dd1=dd(indpar+1) +dd2=dd(indpar+2) +dd3=-dd2*dd(indpar+3)**2 + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + arg=dd2*r(k)**2+dd3 + if(arg.gt.200) then + distp(k,1)=dexp(200.d0) + else + distp(k,1)=dexp(arg) + end if +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=dd1+1.d0/(1.d0+distp(i,1)) +! write(6,*) ' function inside = ',z(indorbp,i) +end do +! endif + + +if(typec.ne.1) then + + fun= -2.d0*dd2*distp(0,1)/(1.d0+distp(0,1))**2 + fun2=-2.d0*dd2*(-distp(0,1)*(-1.d0-2.d0*dd2*r(0)**2) & + +distp(0,1)**2*(1.d0-2.d0*dd2*r(0)**2))/(1.d0+distp(0,1))**3 + + + ! write(6,*) ' fun inside = ',fun,fun2 + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=fun2+2.d0*fun + + ! write(6,*) ' lap 106 =',z(indorbp,indt+4) + + !endif for indt +end if + +indpar=indpar+3 +indshell=indshellp +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_119.f90 b/devel_tools/makefun_factory/orb_119.f90 new file mode 100644 index 0000000..133eb13 --- /dev/null +++ b/devel_tools/makefun_factory/orb_119.f90 @@ -0,0 +1,52 @@ +! 2p single r_mu/(1+b r^2)^(3/2) parent of 103 + + + +dd2=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=1.d0/(1.d0+dd2*r(k)**2)**1.5d0 +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1) + end do + ! endif +end do + + + +if(typec.ne.1) then + + fun0=distp(0,1) + fun=-3.d0*dd2*distp(0,1)/(1.d0+dd2*r(0)**2) + fun2=3.d0*dd2*(-1.d0+4.d0*dd2*r(0)**2) & + /(1.d0+dd2*r(0)**2)**3.5d0 + + ! indorbp=indorb + + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshell+3 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_12.f90 b/devel_tools/makefun_factory/orb_12.f90 new file mode 100644 index 0000000..bd4c737 --- /dev/null +++ b/devel_tools/makefun_factory/orb_12.f90 @@ -0,0 +1,50 @@ + ! R(r)=r**3*exp(-z1*r) + ! + indshellp=indshell+1 + + + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + dd1=dd(indpar+1) + ! if(iflagnorm.gt.2) then + ! c=dsqrt((2*dd1)**9/40320.d0/pi)/2.d0 + c=dd1**4.5d0*.03178848180059307346d0 + ! endif + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + end do + + do i=i0,indtm + z(indorbp,i)=distp(i,1)*r(i)**3 + end do + + if(typec.ne.1) then + rp1=r(0)**3 + rp2=r(0)**2 + ! + !c the first derivative + fun=distp(0,1)*(3.d0*rp2-dd1*rp1) + !c + !c the second derivative + fun2=distp(0,1)*(6.d0*r(0)-6.d0*dd1*rp2+dd1**2*rp1) + !c + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0)/r(0) + end do + + z(indorbp,indt+4)=2.d0*fun/r(0)+fun2 + + end if + ! + indorb=indorbp + ! + ! endif + indpar=indpar+1 + indshell=indshellp + ! + + + ! 4s double zeta diff --git a/devel_tools/makefun_factory/orb_120.f90 b/devel_tools/makefun_factory/orb_120.f90 new file mode 100644 index 0000000..fd62a42 --- /dev/null +++ b/devel_tools/makefun_factory/orb_120.f90 @@ -0,0 +1,63 @@ +! 2p double cubic +! dd1 * x_mu (L^3(dd2 r)+dd3 L(dd4*r)^3) ; L(x)=1/(1+x) + + + +dd2=dd(indpar+1) +dd3=dd(indpar+2) +dd4=dd(indpar+3) + +do k=indtmin,indtm + distp(k,1)=1.d0/(1.d0+dd2*r(k))**3 + distp(k,2)=1.d0/(1.d0+dd4*r(k))**3 +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*(distp(i,1)+dd3*distp(i,2)) + end do + ! endif +end do + + +if(typec.ne.1) then + + + fun0=distp(0,1)+dd3*distp(0,2) + fun=-3.d0*dd2*distp(0,1)/(r(0)*(1.d0+dd2*r(0))) & + -3.d0*dd4*dd3*distp(0,2)/(r(0)*(1.d0+dd4*r(0))) + fun2=12.d0*dd2**2/(1.+dd2*r(0))**5 & + +12.d0*dd3*dd4**2/(1.+dd4*r(0))**5 + + ! fun0=distp(0,1)+dd3*distp(0,2) + ! fun=2.d0*(-dd2*distp(0,1)**2-dd4*dd3*distp(0,2)**2) + + ! fun2=2*dd2*distp(0,1)**3*(-1.d0+3.d0*dd2*r(0)**2) + ! 1+2*dd3*dd4*distp(0,2)**3*(-1.d0+3.d0*dd4*r(0)**2) + + ! indorbp=indorb + + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + + !endif for indt +end if + +indpar=indpar+3 +indshell=indshell+3 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_1200:1299.f90 b/devel_tools/makefun_factory/orb_1200:1299.f90 new file mode 100644 index 0000000..592fa25 --- /dev/null +++ b/devel_tools/makefun_factory/orb_1200:1299.f90 @@ -0,0 +1,107 @@ +! d gaussian r**(2*npower)*exp(-alpha*r**2) + +npower=iopt-1200 + +! indorbp=indorb + +dd2=dd(indpar+1) +do k=indtmin,indtm + distp(k,1)=r(k)**(2*npower)*dexp(-dd2*r(k)**2) +end do + +do i=indtmin,indtm + distp(i,2)=(3.d0*rmu(3,i)**2-r(i)**2)*cost1d + distp(i,3)=(rmu(1,i)**2-rmu(2,i)**2)*cost2d + distp(i,4)=rmu(1,i)*rmu(2,i)*cost3d + distp(i,5)=rmu(2,i)*rmu(3,i)*cost3d + distp(i,6)=rmu(1,i)*rmu(3,i)*cost3d +end do + +do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=distp(i,1+ic)*distp(i,1) + end do + ! endif +end do + +if(typec.ne.1) then + + + rp1=r(0)**2 + fun0=distp(0,1) + fun=(npower-dd2*rp1)*distp(0,1)*2.d0/rp1 + fun2=(npower*(2.d0*npower-1.d0)- & + (1.d0+4.d0*npower)*dd2*rp1+2.d0*(dd2*rp1)**2)* & + distp(0,1)*2.d0/rp1 + + + ! indorbp=indorb + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0) & + *fun + if(ic.eq.1) then + if(i.ne.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost1d + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 4.d0*rmu(i,0)*fun0*cost1d + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*rmu(i,0)*fun0*cost2d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost2d + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + end if + elseif(ic.eq.4) then + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + !endif for i + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,1+ic)*(6.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshell+5 +indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_121.f90 b/devel_tools/makefun_factory/orb_121.f90 new file mode 100644 index 0000000..8c4a813 --- /dev/null +++ b/devel_tools/makefun_factory/orb_121.f90 @@ -0,0 +1,52 @@ +! 2p single exponential + + + +dd2=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)) +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1) + end do + ! endif +end do + + +if(typec.ne.1) then + + + fun0=distp(0,1) + fun=-dd2*distp(0,1)/r(0) + fun2=dd2**2*distp(0,1) + + ! indorbp=indorb + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + + + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshell+3 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_122.f90 b/devel_tools/makefun_factory/orb_122.f90 new file mode 100644 index 0000000..6b55e6e --- /dev/null +++ b/devel_tools/makefun_factory/orb_122.f90 @@ -0,0 +1,34 @@ +! 2s with cusp condition +! dd1*( dd3 +exp(-dd2*r)*(1+dd2*r)) + + +dd2=dd(indpar+1) +dd3=dd(indpar+2) + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)) +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=distp(i,1)*(1.d0+dd2*r(i))+dd3 +end do +! endif + + +if(typec.ne.1) then + fun=-dd2**2*distp(0,1) + fun2=fun*(1.d0-dd2*r(0)) + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + z(indorbp,indt+4)=2.d0*fun+fun2 + !endif for indt +end if + +indpar=indpar+2 +indshell=indshellp +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_123.f90 b/devel_tools/makefun_factory/orb_123.f90 new file mode 100644 index 0000000..ef0c1db --- /dev/null +++ b/devel_tools/makefun_factory/orb_123.f90 @@ -0,0 +1,57 @@ +! 2p double exp +! dd1 * x_mu (exp(-dd2 r)+dd3 * exp(-dd4*r)) + + +dd2=dd(indpar+1) +dd3=dd(indpar+2) +dd4=dd(indpar+3) + + +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)) + distp(k,2)=dexp(-dd4*r(k)) +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*(distp(i,1)+dd3*distp(i,2)) + end do + ! endif +end do + + +if(typec.ne.1) then + + fun0=distp(0,1)+dd3*distp(0,2) + fun=-(dd2*distp(0,1)+dd3*dd4*distp(0,2))/r(0) + fun2=dd2**2*distp(0,1)+dd3*dd4**2*distp(0,2) + + + ! indorbp=indorb + + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + + + + !endif for indt +end if + +indpar=indpar+3 +indshell=indshell+3 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_124.f90 b/devel_tools/makefun_factory/orb_124.f90 new file mode 100644 index 0000000..10894fa --- /dev/null +++ b/devel_tools/makefun_factory/orb_124.f90 @@ -0,0 +1,49 @@ +! 2s double exp with constant and cusp cond. +! (dd3+ exp (-dd2 r)*(1+dd2*r)+dd4*exp(-dd5*r)*(1+dd5*r)) + + + +dd2=dd(indpar+1) +dd3=dd(indpar+2) +dd4=dd(indpar+3) +dd5=dd(indpar+4) + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,3)=dexp(-dd2*r(k)) + distp(k,4)=dexp(-dd5*r(k)) + distp(k,1)=distp(k,3)*(1.d0+dd2*r(k)) + distp(k,2)=distp(k,4)*(1.d0+dd5*r(k)) +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=distp(i,1)+dd3+dd4*distp(i,2) +! write(6,*) ' function inside = ',z(indorbp,i) +end do +! endif + + +if(typec.ne.1) then + + fun=-dd2**2*distp(0,3)-dd5**2*dd4*distp(0,4) + fun2=-dd2**2*distp(0,3)*(1.d0-dd2*r(0)) & + -dd4*dd5**2*distp(0,4)*(1.d0-dd5*r(0)) + + + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*fun+fun2 + + + !endif for indt +end if + +indpar=indpar+4 +indshell=indshellp +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_125.f90 b/devel_tools/makefun_factory/orb_125.f90 new file mode 100644 index 0000000..af3d041 --- /dev/null +++ b/devel_tools/makefun_factory/orb_125.f90 @@ -0,0 +1,41 @@ +! 2s with cusp condition +! dd1*( dd3 +exp(-dd2*r)) ! with no cusp condition + + +dd2=dd(indpar+1) +dd3=dd(indpar+2) + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)) +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=distp(i,1)+dd3 +end do +! endif + + +if(typec.ne.1) then + fun=-dd2*distp(0,1)/r(0) + fun2=dd2**2*distp(0,1) + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*fun+fun2 + + + + + + !endif for indt +end if + +indpar=indpar+2 +indshell=indshellp +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_126.f90 b/devel_tools/makefun_factory/orb_126.f90 new file mode 100644 index 0000000..0c8c8fa --- /dev/null +++ b/devel_tools/makefun_factory/orb_126.f90 @@ -0,0 +1,48 @@ +! 2s double exp with constant +! (dd3+ exp (-dd2 r)+dd4*exp(-dd5*r)) + + + +dd2=dd(indpar+1) +dd3=dd(indpar+2) +dd4=dd(indpar+3) +dd5=dd(indpar+4) + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)) + distp(k,2)=dexp(-dd5*r(k)) +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=distp(i,1)+dd3+dd4*distp(i,2) +! write(6,*) ' function inside = ',z(indorbp,i) +end do +! endif + + +if(typec.ne.1) then + + + fun=-(dd2*distp(0,1)+dd5*dd4*distp(0,2))/r(0) + fun2=dd2**2*distp(0,1)+dd4*dd5**2*distp(0,2) + + + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*fun+fun2 + + + + !endif for indt +end if + +indpar=indpar+4 +indshell=indshellp +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_127.f90 b/devel_tools/makefun_factory/orb_127.f90 new file mode 100644 index 0000000..43632d9 --- /dev/null +++ b/devel_tools/makefun_factory/orb_127.f90 @@ -0,0 +1,101 @@ +! 3d without cusp and one parmater + + +dd1=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=dexp(-dd1*r(k)) +end do + +do i=indtmin,indtm + distp(i,3)=distp(i,1) + distp(i,4)=(3.d0*rmu(3,i)**2-r(i)**2)*cost1d + distp(i,5)=(rmu(1,i)**2-rmu(2,i)**2)*cost2d + distp(i,6)=rmu(1,i)*rmu(2,i)*cost3d + distp(i,7)=rmu(2,i)*rmu(3,i)*cost3d + distp(i,8)=rmu(1,i)*rmu(3,i)*cost3d +end do + +! indorbp=indorb + +do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=distp(i,3+ic)*distp(i,3) + end do + ! endif +end do + +if(typec.ne.1) then + fun0=distp(0,3) + fun=-dd1*distp(0,1) + fun2=dd1**2*distp(0,1) + + ! indorbp=indorb + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,3+ic)*rmu(i,0) & + *fun/r(0) + if(ic.eq.1) then + if(i.ne.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost1d + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 4.d0*rmu(i,0)*fun0*cost1d + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*rmu(i,0)*fun0*cost2d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost2d + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + end if + elseif(ic.eq.4) then + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + !endif for i + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,3+ic)*(6.d0*fun/r(0)+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + + !endif for indt +end if +! +indpar=indpar+1 +indshell=indshell+5 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_128.f90 b/devel_tools/makefun_factory/orb_128.f90 new file mode 100644 index 0000000..771da5f --- /dev/null +++ b/devel_tools/makefun_factory/orb_128.f90 @@ -0,0 +1,36 @@ +! 2s with cusp condition +! ( r^2*exp(-dd2*r)) ! with no cusp condition + + +dd2=dd(indpar+1) + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)) +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=distp(i,1)*r(i)**2 +end do +! endif + + +if(typec.ne.1) then + fun=(2.d0-dd2*r(0))*distp(0,1) + fun2=(2.d0-4*dd2*r(0)+(dd2*r(0))**2)*distp(0,1) + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*fun+fun2 + + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshellp +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_129.f90 b/devel_tools/makefun_factory/orb_129.f90 new file mode 100644 index 0000000..80583ef --- /dev/null +++ b/devel_tools/makefun_factory/orb_129.f90 @@ -0,0 +1,46 @@ +! 2p single exponential r e^{-z r} ! parent of 121 + + + +dd2=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)) +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1)*r(i) + end do + ! endif +end do + + +if(typec.ne.1) then + + fun0=distp(0,1)*r(0) + fun=distp(0,1)*(1.d0-dd2*r(0))/r(0) + fun2=dd2*(dd2*r(0)-2.d0)*distp(0,1) + ! indorbp=indorb + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + !endif for indt +end if +indpar=indpar+1 +indshell=indshell+3 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_13.f90 b/devel_tools/makefun_factory/orb_13.f90 new file mode 100644 index 0000000..0c4abb9 --- /dev/null +++ b/devel_tools/makefun_factory/orb_13.f90 @@ -0,0 +1,54 @@ + ! R(r)=r**3*(exp(-z1*r)+z3*exp(-z2*r)) + ! + indshellp=indshell+1 + + ! + ! + ! if(iocc(indshellp).eq.1) then + ! + indorbp=indorb+1 + dd1=dd(indpar+1) + dd2=dd(indpar+2) + dd3=dd(indpar+3) + ! if(iflagnorm.gt.2) then + c=1.d0/2.d0/dsqrt(pi*40320.d0*(1.d0/(2.d0*dd1)**9+ & + 2.d0*dd3/(dd1+dd2)**9+dd3**2/(2.d0*dd2)**9)) + ! endif + + ! + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + distp(k,2)=c*dexp(-dd2*r(k)) + end do + + do i=i0,indtm + z(indorbp,i)=(distp(i,1)+dd3*distp(i,2))*r(i)**3 + end do + ! + if(typec.ne.1) then + rp1=r(0)**3 + rp2=r(0)**2 + ! + !c the first derivative + fun=distp(0,1)*(3.d0*rp2-dd1*rp1) & + +dd3*distp(0,2)*(3.d0*rp2-dd2*rp1) + !c + ! the second derivative + fun2=distp(0,1)*(6.d0*r(0)-6.d0*dd1*rp2+dd1**2*rp1) & + +dd3*distp(0,2)*(6.d0*r(0)-6.d0*dd2*rp2+dd2**2*rp1) + !c + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0)/r(0) + end do + ! + z(indorbp,indt+4)=2.d0*fun/r(0)+fun2 + ! + end if + + indorb=indorbp + + ! endif + indpar=indpar+3 + indshell=indshellp + + ! 1s single Z pseudo diff --git a/devel_tools/makefun_factory/orb_130.f90 b/devel_tools/makefun_factory/orb_130.f90 new file mode 100644 index 0000000..23707fd --- /dev/null +++ b/devel_tools/makefun_factory/orb_130.f90 @@ -0,0 +1,46 @@ +! 2p single exponential r^2 e^{-z r} ! parent of 121 + + + +dd2=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)) +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1)*r(i)**2 + end do + ! endif +end do + + +if(typec.ne.1) then + + fun0=distp(0,1)*r(0)**2 + fun=distp(0,1)*(2.d0-dd2*r(0)) + fun2=(2.d0-4.d0*dd2*r(0)+(dd2*r(0))**2)*distp(0,1) + ! indorbp=indorb + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + !endif for indt +end if +indpar=indpar+1 +indshell=indshell+3 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_131.f90 b/devel_tools/makefun_factory/orb_131.f90 new file mode 100644 index 0000000..897da24 --- /dev/null +++ b/devel_tools/makefun_factory/orb_131.f90 @@ -0,0 +1,38 @@ +! 2s without cusp condition +! dd1*(r^2*exp(-dd2*r^2)) + + +dd2=dd(indpar+1) + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)*r(k)) +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=distp(i,1)*r(i)**2 +end do +! endif + + +if(typec.ne.1) then + fun0=dd2*r(0)**2 + fun=2.d0*distp(0,1)*(1.d0-fun0) + fun2=2.d0*distp(0,1)*(1.d0-5.d0*fun0+2.d0*fun0**2) + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*fun+fun2 + + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshellp +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_132.f90 b/devel_tools/makefun_factory/orb_132.f90 new file mode 100644 index 0000000..749ad5b --- /dev/null +++ b/devel_tools/makefun_factory/orb_132.f90 @@ -0,0 +1,37 @@ +! 2s with cusp condition +! ( r^3*exp(-dd2*r)) ! with no cusp condition + + +dd2=dd(indpar+1) + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k))*r(k) +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=distp(i,1)*r(i)**2 +end do +! endif + + +if(typec.ne.1) then + fun=(3.d0-dd2*r(0))*distp(0,1) + fun2=(6.d0-6*dd2*r(0)+(dd2*r(0))**2)*distp(0,1) + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*fun+fun2 + + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshellp +indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_133.f90 b/devel_tools/makefun_factory/orb_133.f90 new file mode 100644 index 0000000..8c55250 --- /dev/null +++ b/devel_tools/makefun_factory/orb_133.f90 @@ -0,0 +1,100 @@ +! 4d one parmater + + +dd1=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=dexp(-dd1*r(k)) +end do + +do i=indtmin,indtm + distp(i,3)=distp(i,1)*r(i) + distp(i,4)=(3.d0*rmu(3,i)**2-r(i)**2)*cost1d + distp(i,5)=(rmu(1,i)**2-rmu(2,i)**2)*cost2d + distp(i,6)=rmu(1,i)*rmu(2,i)*cost3d + distp(i,7)=rmu(2,i)*rmu(3,i)*cost3d + distp(i,8)=rmu(1,i)*rmu(3,i)*cost3d +end do + +! indorbp=indorb + +do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=distp(i,3+ic)*distp(i,3) + end do + ! endif +end do + +if(typec.ne.1) then + fun0=distp(0,3) + fun=(1.d0-dd1*r(0))*distp(0,1) + fun2=dd1*(dd1*r(0)-2.d0)*distp(0,1) + + ! indorbp=indorb + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,3+ic)*rmu(i,0) & + *fun/r(0) + if(ic.eq.1) then + if(i.ne.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost1d + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 4.d0*rmu(i,0)*fun0*cost1d + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*rmu(i,0)*fun0*cost2d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost2d + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + end if + elseif(ic.eq.4) then + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + !endif for i + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,3+ic)*(6.d0*fun/r(0)+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + !endif for indt +end if +! +indpar=indpar+1 +indshell=indshell+5 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_134.f90 b/devel_tools/makefun_factory/orb_134.f90 new file mode 100644 index 0000000..4fb2e24 --- /dev/null +++ b/devel_tools/makefun_factory/orb_134.f90 @@ -0,0 +1,49 @@ +! 2p single exponential r^3 e^{-z r} ! + + + +dd2=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)) +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1)*r(i)**3 + end do + ! endif +end do + +if(typec.ne.1) then + + fun0=distp(0,1)*r(0)**3 + fun=distp(0,1)*(3.d0-dd2*r(0))*r(0) + ! fun= derivative of fun0 respect to r divided dy r + fun2=distp(0,1)*(dd2**2*r(0)**3-6*dd2*r(0)**2 & + +6*r(0)) + ! fun2= second derivative of fun0 respect to r + ! indorbp=indorb + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + !endif for indt +end if +indpar=indpar+1 +indshell=indshell+3 +indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_135.f90 b/devel_tools/makefun_factory/orb_135.f90 new file mode 100644 index 0000000..e8fbca9 --- /dev/null +++ b/devel_tools/makefun_factory/orb_135.f90 @@ -0,0 +1,47 @@ +! 2p single exponential r^4 e^{-z r} ! + + + +dd2=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)) +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1)*r(i)**4 + end do + ! endif +end do + +if(typec.ne.1) then + + fun0=distp(0,1)*r(0)**4 + fun=distp(0,1)*(4.d0-dd2*r(0))*r(0)**2 + fun2=distp(0,1)*(12*r(0)**2-8*dd2*r(0)**3 & + +dd2**2*r(0)**4) + ! indorbp=indorb + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + !endif for indt +end if +indpar=indpar+1 +indshell=indshell+3 +indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_136.f90 b/devel_tools/makefun_factory/orb_136.f90 new file mode 100644 index 0000000..ba7a896 --- /dev/null +++ b/devel_tools/makefun_factory/orb_136.f90 @@ -0,0 +1,46 @@ +! 2p single exponential r^5 e^{-z r} ! + + + +dd2=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)) +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1)*r(i)**5 + end do + ! endif +end do + +if(typec.ne.1) then + + fun0=distp(0,1)*r(0)**5 + fun=distp(0,1)*(5.d0-dd2*r(0))*r(0)**3 + fun2=distp(0,1)*(20*r(0)**3-10*dd2*r(0)**4 & + +dd2**2*r(0)**5) + ! indorbp=indorb + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + !endif for indt +end if +indpar=indpar+1 +indshell=indshell+3 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_137.f90 b/devel_tools/makefun_factory/orb_137.f90 new file mode 100644 index 0000000..cf21f51 --- /dev/null +++ b/devel_tools/makefun_factory/orb_137.f90 @@ -0,0 +1,43 @@ +! 2s with cusp condition +! dd1*(exp(-dd2*r)*(1+dd2*r)) + + +dd2=dd(indpar+1) + +! if(iflagnorm.gt.2) then +! c=1.d0/dsqrt(1/4.d0/dd2**3+12*dd2/(2.d0*dd2)**4+ +! &3*dd2**2/4/dd2**5)/dsqrt(4.0*pi) + ! endif + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)) +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=distp(i,1)*(1.d0+dd2*r(i)) +end do +! endif + + +if(typec.ne.1) then + fun=-dd2**2*distp(0,1) + fun2=fun*(1.d0-dd2*r(0)) + + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*fun+fun2 + + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshellp +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_138.f90 b/devel_tools/makefun_factory/orb_138.f90 new file mode 100644 index 0000000..40de02a --- /dev/null +++ b/devel_tools/makefun_factory/orb_138.f90 @@ -0,0 +1,36 @@ +! 2s with cusp condition +! ( -dd2*r^2*exp(-dd2*r)) ! with no cusp condition der of 137 + + +dd2=dd(indpar+1) + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=-dd2*dexp(-dd2*r(k)) +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=distp(i,1)*r(i)**2 +end do +! endif + + +if(typec.ne.1) then + fun=(2.d0-dd2*r(0))*distp(0,1) + fun2=(2.d0-4*dd2*r(0)+(dd2*r(0))**2)*distp(0,1) + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*fun+fun2 + + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshellp +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_139.f90 b/devel_tools/makefun_factory/orb_139.f90 new file mode 100644 index 0000000..8ffc4b2 --- /dev/null +++ b/devel_tools/makefun_factory/orb_139.f90 @@ -0,0 +1,37 @@ +! 2s with cusp condition +! ( r^3*exp(-dd2*r)) ! der of 128 + + +dd2=dd(indpar+1) + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=-dexp(-dd2*r(k))*r(k) +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=distp(i,1)*r(i)**2 +end do +! endif + + +if(typec.ne.1) then + fun=(3.d0-dd2*r(0))*distp(0,1) + fun2=(6.d0-6*dd2*r(0)+(dd2*r(0))**2)*distp(0,1) + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*fun+fun2 + + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshellp +indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_14.f90 b/devel_tools/makefun_factory/orb_14.f90 new file mode 100644 index 0000000..23fb46c --- /dev/null +++ b/devel_tools/makefun_factory/orb_14.f90 @@ -0,0 +1,42 @@ + ! (1.d0 + dd1 r) * exp(-dd1 * r) ! normalized + + + indshellp=indshell+1 + + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + dd1=dd(indpar+1) + + do k=indtmin,indtm + distp(k,1)=dexp(-dd1*r(k)) + end do + + ! if(iflagnorm.gt.2) then + ! c=dsqrt(dd1**3.d0/7.d0/pi) + c=dd1**1.5d0*0.213243618622923d0 + ! endif + + do i=i0,indtm + z(indorbp,i)=c*(1.d0+dd1*r(i))*distp(i,1) + end do + + if(typec.ne.1) then + fun=-distp(0,1)*dd1**2*r(0) + fun2=-distp(0,1)*dd1**2*(1.d0-dd1*r(0)) + do i=1,3 + z(indorbp,indt+i)=c*fun*rmu(i,0)/r(0) + end do + z(indorbp,indt+4)=c*2.d0*fun/r(0)+c*fun2 + end if + + indorb=indorbp + + ! endif + indpar=indpar+1 + indshell=indshellp + + + + ! 1s single Z pseudo diff --git a/devel_tools/makefun_factory/orb_140.f90 b/devel_tools/makefun_factory/orb_140.f90 new file mode 100644 index 0000000..0da5a4b --- /dev/null +++ b/devel_tools/makefun_factory/orb_140.f90 @@ -0,0 +1,46 @@ +! 2p single exponential -r e^{-z r} ! der of 121 + + + +dd2=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=-dexp(-dd2*r(k)) +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1)*r(i) + end do + ! endif +end do + + +if(typec.ne.1) then + + fun0=distp(0,1)*r(0) + fun=distp(0,1)*(1.d0-dd2*r(0))/r(0) + fun2=dd2*(dd2*r(0)-2.d0)*distp(0,1) + ! indorbp=indorb + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + !endif for indt +end if +indpar=indpar+1 +indshell=indshell+3 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_141.f90 b/devel_tools/makefun_factory/orb_141.f90 new file mode 100644 index 0000000..c5181f1 --- /dev/null +++ b/devel_tools/makefun_factory/orb_141.f90 @@ -0,0 +1,47 @@ +! 2p single exponential r^2 e^{-z r} ! parent of 121 + + + +dd2=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=-dexp(-dd2*r(k)) +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1)*r(i)**2 + end do + ! endif +end do + + +if(typec.ne.1) then + + fun0=distp(0,1)*r(0)**2 + fun=distp(0,1)*(2.d0-dd2*r(0)) + fun2=(2.d0-4.d0*dd2*r(0)+(dd2*r(0))**2)*distp(0,1) + ! indorbp=indorb + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + !endif for indt +end if +indpar=indpar+1 +indshell=indshell+3 +indorb=indorbp + +! der of 127 diff --git a/devel_tools/makefun_factory/orb_142.f90 b/devel_tools/makefun_factory/orb_142.f90 new file mode 100644 index 0000000..9b3c822 --- /dev/null +++ b/devel_tools/makefun_factory/orb_142.f90 @@ -0,0 +1,101 @@ +! 4d one parmater + + +dd1=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=dexp(-dd1*r(k)) +end do + +do i=indtmin,indtm + distp(i,3)=distp(i,1)*r(i) + distp(i,4)=(3.d0*rmu(3,i)**2-r(i)**2)*cost1d + distp(i,5)=(rmu(1,i)**2-rmu(2,i)**2)*cost2d + distp(i,6)=rmu(1,i)*rmu(2,i)*cost3d + distp(i,7)=rmu(2,i)*rmu(3,i)*cost3d + distp(i,8)=rmu(1,i)*rmu(3,i)*cost3d +end do + +! indorbp=indorb + +do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=-distp(i,3+ic)*distp(i,3) + end do + ! endif +end do + +if(typec.ne.1) then + fun0=-distp(0,3) + fun=-(1.d0-dd1*r(0))*distp(0,1) + fun2=-dd1*(dd1*r(0)-2.d0)*distp(0,1) + + ! indorbp=indorb + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,3+ic)*rmu(i,0) & + *fun/r(0) + if(ic.eq.1) then + if(i.ne.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost1d + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 4.d0*rmu(i,0)*fun0*cost1d + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*rmu(i,0)*fun0*cost2d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost2d + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + end if + elseif(ic.eq.4) then + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + !endif for i + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,3+ic)*(6.d0*fun/r(0)+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + + !endif for indt +end if +! +indpar=indpar+1 +indshell=indshell+5 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_143.f90 b/devel_tools/makefun_factory/orb_143.f90 new file mode 100644 index 0000000..9663f22 --- /dev/null +++ b/devel_tools/makefun_factory/orb_143.f90 @@ -0,0 +1,100 @@ +! 4d one parmater der of 133 + + +dd1=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=dexp(-dd1*r(k)) +end do + +do i=indtmin,indtm + distp(i,3)=distp(i,1)*r(i)**2 + distp(i,4)=(3.d0*rmu(3,i)**2-r(i)**2)*cost1d + distp(i,5)=(rmu(1,i)**2-rmu(2,i)**2)*cost2d + distp(i,6)=rmu(1,i)*rmu(2,i)*cost3d + distp(i,7)=rmu(2,i)*rmu(3,i)*cost3d + distp(i,8)=rmu(1,i)*rmu(3,i)*cost3d +end do + +! indorbp=indorb + +do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=-distp(i,3+ic)*distp(i,3) + end do + ! endif +end do + +if(typec.ne.1) then + fun0=-distp(0,3) + fun=-(-2.d0+dd1*r(0))*distp(0,1) + fun2=((dd1*r(0))**2 -4.d0*r(0)*dd1+2.d0)*distp(0,1) + + ! indorbp=indorb + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,3+ic)*rmu(i,0) & + *fun + if(ic.eq.1) then + if(i.ne.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost1d + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 4.d0*rmu(i,0)*fun0*cost1d + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*rmu(i,0)*fun0*cost2d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost2d + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + end if + elseif(ic.eq.4) then + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + !endif for i + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,3+ic)*(6.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + !endif for indt +end if +! +indpar=indpar+1 +indshell=indshell+5 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_144.f90 b/devel_tools/makefun_factory/orb_144.f90 new file mode 100644 index 0000000..4c9034e --- /dev/null +++ b/devel_tools/makefun_factory/orb_144.f90 @@ -0,0 +1,48 @@ +! 2p single exponential -r^3 e^{-z r} ! derivative of 130 + + + +dd2=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=-dexp(-dd2*r(k)) +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1)*r(i)**3 + end do + ! endif +end do + +if(typec.ne.1) then + + fun0=distp(0,1)*r(0)**3 + fun=distp(0,1)*(3.d0-dd2*r(0))*r(0) + ! fun= derivative of fun0 respect to r divided dy r + fun2=distp(0,1)*(dd2**2*r(0)**3-6*dd2*r(0)**2 & + +6*r(0)) + ! fun2= second derivative of fun0 respect to r + ! indorbp=indorb + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + !endif for indt +end if +indpar=indpar+1 +indshell=indshell+3 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_145.f90 b/devel_tools/makefun_factory/orb_145.f90 new file mode 100644 index 0000000..d25558a --- /dev/null +++ b/devel_tools/makefun_factory/orb_145.f90 @@ -0,0 +1,38 @@ +! 2s without cusp condition !derivative 100 +! -(r^2*exp(-dd2*r^2)) + + +dd2=dd(indpar+1) + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)*r(k)) +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=-distp(i,1)*r(i)**2 +end do +! endif + + +if(typec.ne.1) then + fun0=dd2*r(0)**2 + fun=-2.d0*distp(0,1)*(1.d0-fun0) + fun2=-2.d0*distp(0,1)*(1.d0-5.d0*fun0+2.d0*fun0**2) + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*fun+fun2 + + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshellp +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_146.f90 b/devel_tools/makefun_factory/orb_146.f90 new file mode 100644 index 0000000..2b55098 --- /dev/null +++ b/devel_tools/makefun_factory/orb_146.f90 @@ -0,0 +1,46 @@ +! 2p single exponential -r^2 e^{-z r^2} ! derivative of 103 + + + +dd2=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)*r(k)) +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=-rmu(ic,i)*distp(i,1)*r(i)*r(i) + end do + ! endif +end do + + +if(typec.ne.1) then + rp2=dd2*r(0)*r(0) + fun0=-distp(0,1)*r(0)*r(0) + fun=distp(0,1)*(-2.d0+2.d0*rp2) + fun2=(-2.d0+10.d0*rp2-4.d0*rp2*rp2)*distp(0,1) + ! indorbp=indorb + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + !endif for indt +end if +indpar=indpar+1 +indshell=indshell+3 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_147.f90 b/devel_tools/makefun_factory/orb_147.f90 new file mode 100644 index 0000000..fd28b76 --- /dev/null +++ b/devel_tools/makefun_factory/orb_147.f90 @@ -0,0 +1,103 @@ +! 3d single gaussian + + +dd1=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=dexp(-dd1*r(k)**2) +end do + +do i=indtmin,indtm + distp(i,3)=distp(i,1) + distp(i,4)=(3.d0*rmu(3,i)**2-r(i)**2)*cost1d + distp(i,5)=(rmu(1,i)**2-rmu(2,i)**2)*cost2d + distp(i,6)=rmu(1,i)*rmu(2,i)*cost3d + distp(i,7)=rmu(2,i)*rmu(3,i)*cost3d + distp(i,8)=rmu(1,i)*rmu(3,i)*cost3d +end do + +! indorbp=indorb + +do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=distp(i,3+ic)*distp(i,3) + end do + ! endif +end do + +if(typec.ne.1) then + fun0=distp(0,3) + fun=-2.d0*dd1*distp(0,1) + fun2=((2.d0*dd1*r(0))**2-2.d0*dd1)*distp(0,1) + + ! indorbp=indorb + + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,3+ic)*rmu(i,0)*fun + end do + if(ic.eq.1) then + ! if(i.ne.3) then + z(indorbp,indt+1)=z(indorbp,indt+1)- & + 2.d0*rmu(1,0)*fun0*cost1d + z(indorbp,indt+2)=z(indorbp,indt+2)- & + 2.d0*rmu(2,0)*fun0*cost1d + ! else + z(indorbp,indt+3)=z(indorbp,indt+3)+ & + 4.d0*rmu(3,0)*fun0*cost1d + ! endif + elseif(ic.eq.2) then + ! if(i.eq.1) then + z(indorbp,indt+1)=z(indorbp,indt+1)+ & + 2.d0*rmu(1,0)*fun0*cost2d + ! elseif(i.eq.2) then + z(indorbp,indt+2)=z(indorbp,indt+2)- & + 2.d0*rmu(2,0)*fun0*cost2d + ! endif + elseif(ic.eq.3) then + ! if(i.eq.1) then + z(indorbp,indt+1)=z(indorbp,indt+1)+ & + rmu(2,0)*fun0*cost3d + ! elseif(i.eq.2) then + z(indorbp,indt+2)=z(indorbp,indt+2)+ & + rmu(1,0)*fun0*cost3d + ! endif + elseif(ic.eq.4) then + ! if(i.eq.2) then + z(indorbp,indt+2)=z(indorbp,indt+2)+ & + rmu(3,0)*fun0*cost3d + ! elseif(i.eq.3) then + z(indorbp,indt+3)=z(indorbp,indt+3)+ & + rmu(2,0)*fun0*cost3d + ! endif + elseif(ic.eq.5) then + ! if(i.eq.1) then + z(indorbp,indt+1)=z(indorbp,indt+1)+ & + rmu(3,0)*fun0*cost3d + ! elseif(i.eq.3) then + z(indorbp,indt+3)=z(indorbp,indt+3)+ & + rmu(1,0)*fun0*cost3d + !endif for i + ! endif + !endif for ic + end if + !enddo for i + ! enddo + z(indorbp,indt+4)=distp(0,3+ic)*(6.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + !endif for indt +end if +! +indpar=indpar+1 +indshell=indshell+5 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_148.f90 b/devel_tools/makefun_factory/orb_148.f90 new file mode 100644 index 0000000..ffdb3fe --- /dev/null +++ b/devel_tools/makefun_factory/orb_148.f90 @@ -0,0 +1,102 @@ +! derivative of 147 with respect to dd1 + + +dd1=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=dexp(-dd1*r(k)**2) +end do + +do i=indtmin,indtm + distp(i,3)=-r(i)**2*distp(i,1) + distp(i,4)=(3.d0*rmu(3,i)**2-r(i)**2)*cost1d + distp(i,5)=(rmu(1,i)**2-rmu(2,i)**2)*cost2d + distp(i,6)=rmu(1,i)*rmu(2,i)*cost3d + distp(i,7)=rmu(2,i)*rmu(3,i)*cost3d + distp(i,8)=rmu(1,i)*rmu(3,i)*cost3d +end do + +! indorbp=indorb + +do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=distp(i,3+ic)*distp(i,3) + end do + ! endif +end do + +if(typec.ne.1) then + fun0=distp(0,3) + fun=2.d0*(dd1*r(0)**2-1.d0)*r(0)*distp(0,1) + fun2=-2.d0*(2.d0*dd1**2*r(0)**4+1.d0 & + -5.d0*dd1*r(0)**2)*distp(0,1) + + ! indorbp=indorb + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,3+ic)*rmu(i,0) & + *fun/r(0) + if(ic.eq.1) then + if(i.ne.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost1d + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 4.d0*rmu(i,0)*fun0*cost1d + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*rmu(i,0)*fun0*cost2d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost2d + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + end if + elseif(ic.eq.4) then + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + !endif for i + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,3+ic)*(6.d0*fun/r(0)+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + + !endif for indt +end if +! +indpar=indpar+1 +indshell=indshell+5 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_149.f90 b/devel_tools/makefun_factory/orb_149.f90 new file mode 100644 index 0000000..484c547 --- /dev/null +++ b/devel_tools/makefun_factory/orb_149.f90 @@ -0,0 +1,39 @@ +! derivative of 131 with respect z_1 +! - r^4 exp(-z_1 r^2) + + + +dd2=dd(indpar+1) + +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)*r(k)) +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=-distp(i,1)*r(i)**4 +end do +! endif + + +if(typec.ne.1) then + fun0=dd2*r(0)**2 + fun=-2.d0*r(0)**2*distp(0,1)*(2.d0-fun0) + fun2=-2.d0*r(0)**2*distp(0,1)*(6.d0-9.d0*fun0+2.d0*fun0**2) + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*fun+fun2 + + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshellp +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_15.f90 b/devel_tools/makefun_factory/orb_15.f90 new file mode 100644 index 0000000..beafb32 --- /dev/null +++ b/devel_tools/makefun_factory/orb_15.f90 @@ -0,0 +1,44 @@ + ! (r**2 + dd2*(1 + dd1*r))*exp(-dd1*r) ! normalized + + + indshellp=indshell+1 + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + dd1=dd(indpar+1) + dd2=dd(indpar+2) + + c=dsqrt(2.d0*dd1**7/pi/ & + (45.d0+42.d0*dd1**2*dd2+14.d0*dd1**4*dd2**2)) + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + end do + + + do i=i0,indtm + z(indorbp,i)=(r(i)**2+dd2*(1.d0+dd1*r(i))) & + *distp(i,1) + end do + + if(typec.ne.1) then + + fun=distp(0,1)*r(0)*(2.d0-dd1**2*dd2-dd1*r(0)) + fun2=distp(0,1)*((1.d0-dd1*r(0)) & + *(3.d0-dd1**2*dd2-dd1*r(0))-1.d0) + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0)/r(0) + end do + z(indorbp,indt+4)=2.d0*fun/r(0)+fun2 + + end if + + indorb=indorbp + + ! endif + indpar=indpar+2 + indshell=indshellp + + ! 2s gaussian for pseudo diff --git a/devel_tools/makefun_factory/orb_150.f90 b/devel_tools/makefun_factory/orb_150.f90 new file mode 100644 index 0000000..c4592d2 --- /dev/null +++ b/devel_tools/makefun_factory/orb_150.f90 @@ -0,0 +1,47 @@ +! 2p single exponential r e^{-z r^2} + + + +dd2=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)**2) +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1)*r(i) + end do + ! endif +end do + + +if(typec.ne.1) then + + fun0=distp(0,1)*r(0) + cost=2.d0*dd2*r(0)**2 + fun=distp(0,1)*(1.d0-cost)/r(0) + fun2=2.d0*dd2*fun0*(cost-3.d0) + ! indorbp=indorb + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + !endif for indt +end if +indpar=indpar+1 +indshell=indshell+3 +indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_151.f90 b/devel_tools/makefun_factory/orb_151.f90 new file mode 100644 index 0000000..e3eff62 --- /dev/null +++ b/devel_tools/makefun_factory/orb_151.f90 @@ -0,0 +1,49 @@ +! 2p single exponential -r^3 e^{-z r^2} ! parent of 150 + + + +dd2=dd(indpar+1) + +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)**2) +end do + +! indorbp=indorb + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=-rmu(ic,i)*distp(i,1)*r(i)**3 + end do + ! endif +end do + + +if(typec.ne.1) then + + fun0=-distp(0,1)*r(0)**3 + cost=dd2*r(0)**2 + fun=distp(0,1)*(-3.d0+2.d0*cost)*r(0) + fun2=-2.d0*distp(0,1)*r(0)*(3.d0-7.d0*cost+2.d0*cost**2) + ! indorbp=indorb + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0) & + *(4.d0*fun+fun2) + ! endif + end do + !endif for indt +end if +indpar=indpar+1 +indshell=indshell+3 +indorb=indorbp + + + diff --git a/devel_tools/makefun_factory/orb_152.f90 b/devel_tools/makefun_factory/orb_152.f90 new file mode 100644 index 0000000..cd3bf03 --- /dev/null +++ b/devel_tools/makefun_factory/orb_152.f90 @@ -0,0 +1,27 @@ +! 2s with cusp condition +! ( r^3*exp(-dd2*r^2)) ! with no cusp condition + +dd2=dd(indpar+1) +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)**2)*r(k) +end do +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=distp(i,1)*r(i)**2 +end do +! endif +if(typec.ne.1) then + rp1=r(0)**2*dd2 + fun=(3.d0-2.d0*rp1)*distp(0,1) + fun2=(6.d0-14.d0*rp1+4.d0*rp1**2)*distp(0,1) + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + z(indorbp,indt+4)=2.d0*fun+fun2 + !endif for indt +end if +indpar=indpar+1 +indshell=indshellp +indorb=indorbp diff --git a/devel_tools/makefun_factory/orb_153.f90 b/devel_tools/makefun_factory/orb_153.f90 new file mode 100644 index 0000000..d6b423d --- /dev/null +++ b/devel_tools/makefun_factory/orb_153.f90 @@ -0,0 +1,29 @@ +! 2s with cusp condition +! (-r^5*exp(-dd2*r^2)) ! derivative of 152 + +dd2=dd(indpar+1) +indorbp=indorb+1 +indshellp=indshell+1 +do k=indtmin,indtm + distp(k,1)=dexp(-dd2*r(k)**2)*r(k)**3 +end do +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=-distp(i,1)*r(i)**2 +end do +! endif +if(typec.ne.1) then + rp1=dd2*r(0)**2 + fun=(-5.d0+2.d0*rp1)*distp(0,1) + fun2=(-20.d0+22.d0*rp1-4.d0*rp1**2)*distp(0,1) + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + z(indorbp,indt+4)=2.d0*fun+fun2 + !endif for indt +end if +indpar=indpar+1 +indshell=indshellp +indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_154.f90 b/devel_tools/makefun_factory/orb_154.f90 new file mode 100644 index 0000000..0b42a0e --- /dev/null +++ b/devel_tools/makefun_factory/orb_154.f90 @@ -0,0 +1,128 @@ +! Jastrow single gaussian f orbital +! R(r)= exp(-alpha r^2) +! unnormalized + + +! indorbp=indorb +indparp=indpar+1 + +dd1=dd(indparp) + +do k=indtmin,indtm + distp(k,1)=dexp(-dd1*r(k)**2) +end do + + +do i=indtmin,indtm + distp(i,2)=cost1f*rmu(3,i) & + *(5.d0*rmu(3,i)**2-3.d0*r(i)**2) + ! lz=0 + distp(i,3)=cost2f*rmu(1,i) & + *(5.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-1 + distp(i,4)=cost2f*rmu(2,i) & + *(5.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-1 + distp(i,5)=cost3f*rmu(3,i) & + *(rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-2 + distp(i,6)=cost3f*2.d0*rmu(3,i) & + *rmu(1,i)*rmu(2,i) + ! lz=+/-2 + distp(i,7)=cost4f*rmu(1,i) & + *(rmu(1,i)**2-3.d0*rmu(2,i)**2) + ! lz=+/-3 + distp(i,8)=cost4f*rmu(2,i) & + *(3.d0*rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-3 +end do + + +do ic=1,7 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + z(indorbp,k)=distp(k,1)*distp(k,1+ic) + end do + ! endif +end do + + +if(typec.ne.1) then + + ! dd1=dd(indparp) + fun0=distp(0,1) + fun=-2.d0*dd1*distp(0,1) + fun2=fun*(1.d0-2.d0*dd1*r(0)**2) + + + ! indorbp=indorb + + + do ic=1,7 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0) & + *fun + end do + if(ic.eq.1) then + z(indorbp,indt+1)=z(indorbp,indt+1)- & + 6.d0*cost1f*fun0*rmu(1,0)*rmu(3,0) + z(indorbp,indt+2)=z(indorbp,indt+2)- & + 6.d0*cost1f*fun0*rmu(2,0)*rmu(3,0) + z(indorbp,indt+3)=z(indorbp,indt+3)+ & + cost1f*fun0*(9.d0*rmu(3,0)**2-3.d0*r(0)**2) + elseif(ic.eq.2) then + z(indorbp,indt+1)=z(indorbp,indt+1)+ & + cost2f*fun0*(5.d0*rmu(3,0)**2-r(0)**2-2.d0*rmu(1,0)**2) + z(indorbp,indt+2)=z(indorbp,indt+2)- & + 2.d0*cost2f*fun0*rmu(2,0)*rmu(1,0) + z(indorbp,indt+3)=z(indorbp,indt+3)+ & + 8.d0*cost2f*fun0*rmu(3,0)*rmu(1,0) + elseif(ic.eq.3) then + z(indorbp,indt+1)=z(indorbp,indt+1)- & + 2.d0*cost2f*fun0*rmu(1,0)*rmu(2,0) + z(indorbp,indt+2)=z(indorbp,indt+2)+ & + cost2f*fun0*(5.d0*rmu(3,0)**2-r(0)**2-2.d0*rmu(2,0)**2) + z(indorbp,indt+3)=z(indorbp,indt+3)+ & + 8.d0*cost2f*fun0*rmu(3,0)*rmu(2,0) + elseif(ic.eq.4) then + z(indorbp,indt+1)=z(indorbp,indt+1)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(3,0) + z(indorbp,indt+2)=z(indorbp,indt+2)- & + 2.d0*cost3f*fun0*rmu(2,0)*rmu(3,0) + z(indorbp,indt+3)=z(indorbp,indt+3)+ & + cost3f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + elseif(ic.eq.5) then + z(indorbp,indt+1)=z(indorbp,indt+1)+ & + 2.d0*cost3f*fun0*rmu(2,0)*rmu(3,0) + z(indorbp,indt+2)=z(indorbp,indt+2)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(3,0) + z(indorbp,indt+3)=z(indorbp,indt+3)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(2,0) + elseif(ic.eq.6) then + z(indorbp,indt+1)=z(indorbp,indt+1)+ & + 3.d0*cost4f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + z(indorbp,indt+2)=z(indorbp,indt+2)- & + 6.d0*cost4f*fun0*rmu(1,0)*rmu(2,0) + else + z(indorbp,indt+1)=z(indorbp,indt+1)+ & + 6.d0*cost4f*fun0*rmu(1,0)*rmu(2,0) + z(indorbp,indt+2)=z(indorbp,indt+2)+ & + 3.d0*cost4f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + end if + z(indorbp,indt+4)=distp(0,1+ic)*(8.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + !endif for indt +end if + +indpar=indpar+1 +indshell=indshell+7 +indorb=indorbp + + + diff --git a/devel_tools/makefun_factory/orb_155.f90 b/devel_tools/makefun_factory/orb_155.f90 new file mode 100644 index 0000000..9e09c16 --- /dev/null +++ b/devel_tools/makefun_factory/orb_155.f90 @@ -0,0 +1,151 @@ +! Jastrow single gaussian f orbital +! derivative of 154 with respect to z +! unnormalized f orbitals +! R(r)= -r^2*exp(-z r^2) + + + +! indorbp=indorb +indparp=indpar+1 +dd1=dd(indparp) + + +do k=indtmin,indtm + distp(k,1)=dexp(-dd1*r(k)**2) +end do + + +do i=indtmin,indtm + distp(i,2)=cost1f*rmu(3,i) & + *(5.d0*rmu(3,i)**2-3.d0*r(i)**2) + ! lz=0 + distp(i,3)=cost2f*rmu(1,i) & + *(5.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-1 + distp(i,4)=cost2f*rmu(2,i) & + *(5.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-1 + distp(i,5)=cost3f*rmu(3,i) & + *(rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-2 + distp(i,6)=cost3f*2.d0*rmu(3,i) & + *rmu(1,i)*rmu(2,i) + ! lz=+/-2 + distp(i,7)=cost4f*rmu(1,i) & + *(rmu(1,i)**2-3.d0*rmu(2,i)**2) + ! lz=+/-3 + distp(i,8)=cost4f*rmu(2,i) & + *(3.d0*rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-3 +end do + + +do ic=1,7 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + z(indorbp,k)=-r(k)**2*distp(k,1)*distp(k,1+ic) + end do + ! endif +end do + + +if(typec.ne.1) then + + dd1=dd(indparp) + fun0=-r(0)**2*distp(0,1) + fun=2.d0*(dd1*r(0)**2-1.d0)*distp(0,1) + fun2=-2.d0*(2.d0*dd1**2*r(0)**4+1.d0 & + -5.d0*dd1*r(0)**2)*distp(0,1) + + ! indorbp=indorb + do ic=1,7 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0) & + *fun + if(ic.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 6.d0*cost1f*fun0*rmu(i,0)*rmu(3,0) + if(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost1f*fun0*(15.d0*rmu(i,0)**2-3.d0*r(0)**2) + end if + elseif(ic.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*cost2f*fun0*rmu(i,0)*rmu(1,0) + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost2f*fun0*(5.d0*rmu(3,0)**2-r(0)**2) + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 10.d0*cost2f*fun0*rmu(i,0)*rmu(1,0) + end if + elseif(ic.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*cost2f*fun0*rmu(i,0)*rmu(2,0) + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost2f*fun0*(5.d0*rmu(3,0)**2-r(0)**2) + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 10.d0*cost2f*fun0*rmu(i,0)*rmu(2,0) + end if + elseif(ic.eq.4) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*cost3f*fun0*rmu(2,0)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost3f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(2,0)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(2,0) + end if + elseif(ic.eq.6) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 3.d0*cost4f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 6.d0*cost4f*fun0*rmu(1,0)*rmu(2,0) + end if + else + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 6.d0*cost4f*fun0*rmu(1,0)*rmu(2,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 3.d0*cost4f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,1+ic)*(8.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshell+7 +indorb=indorbp + + + diff --git a/devel_tools/makefun_factory/orb_16.f90 b/devel_tools/makefun_factory/orb_16.f90 new file mode 100644 index 0000000..816591f --- /dev/null +++ b/devel_tools/makefun_factory/orb_16.f90 @@ -0,0 +1,68 @@ + ! s orbital + ! + ! - angmom = 0 + ! - type = Gaussian + ! - normalized = yes + ! - angtype = spherical + ! - npar = 1 + ! - multiplicity = 1 + ! + ! = N * R + ! + ! where N is the normalization constant + ! N = (2*alpha/pi)**(3/4) + ! + ! and R is the radial part + ! R = exp(-alpha*r**2) + ! + + + indshellp=indshell+1 + indorbp=indorb+1 + dd1=dd(indpar+1) + + if(dd1.ne.0.) then + c=0.71270547035499016d0*dd1**0.75d0 + else + c=1.d0 + end if + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2) + end do + + do i=i0,indtm + z(indorbp,i)=distp(i,1) + end do + + if(typec.ne.1) then + ! the first derivative /r + fun=-2.d0*dd1*distp(0,1) + + ! the second derivative + fun2=fun*(1.d0-2.d0*dd1*r(0)*r(0)) + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*fun+fun2 + + if(typec.eq.2) then + ! Backflow + funb=(fun2-fun)/(r(0)*r(0)) + + z(indorbp,indt+5)=funb*rmu(1,0)*rmu(1,0)+fun + z(indorbp,indt+6)=funb*rmu(2,0)*rmu(2,0)+fun + z(indorbp,indt+7)=funb*rmu(3,0)*rmu(3,0)+fun + z(indorbp,indt+8)=funb*rmu(1,0)*rmu(2,0) + z(indorbp,indt+9)=funb*rmu(1,0)*rmu(3,0) + z(indorbp,indt+10)=funb*rmu(2,0)*rmu(3,0) + + end if + end if + + indorb=indorbp + indpar=indpar+1 + indshell=indshellp + diff --git a/devel_tools/makefun_factory/orb_17.f90 b/devel_tools/makefun_factory/orb_17.f90 new file mode 100644 index 0000000..ab8a3e3 --- /dev/null +++ b/devel_tools/makefun_factory/orb_17.f90 @@ -0,0 +1,43 @@ + ! 2s gaussian for pseudo + ! R(r)=r**2*exp(-z*r**2) single zeta + + indshellp=indshell+1 + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + dd1=dd(indpar+1) + + ! if(iflagnorm.gt.2) then + ! c=4.d0*(2.d0/pi)**(3.d0/4.d0)*dd1**(7.d0/4.d0)/dsqrt(15.d0) + c=.73607904464954686606d0*dd1**1.75d0 + ! endif + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2) + end do + + do i=i0,indtm + z(indorbp,i)=distp(i,1)*r(i)**2 + end do + + if(typec.ne.1) then + rp1=r(0)**2 + ! the first derivative / r + fun=2.d0*distp(0,1)*(1.d0-dd1*rp1) + ! the second derivative + fun2=2.d0*distp(0,1)*(1.d0-5.d0*dd1*rp1+2.d0*dd1**2*rp1**2) + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + z(indorbp,indt+4)=2.d0*fun+fun2 + end if + + indorb=indorbp + + ! endif + + indpar=indpar+1 + indshell=indshellp + + ! 2s gaussian for pseudo diff --git a/devel_tools/makefun_factory/orb_18.f90 b/devel_tools/makefun_factory/orb_18.f90 new file mode 100644 index 0000000..cc7037d --- /dev/null +++ b/devel_tools/makefun_factory/orb_18.f90 @@ -0,0 +1,49 @@ + ! R(r)=r**4*exp(-z*r**2) single zeta + + + + indshellp=indshell+1 + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + dd1=dd(indpar+1) + + ! if(iflagnorm.gt.2) then + ! c=(2.d0*dd1**11/pi)**(1.d0/4.d0)*(512.d0/945.d0/pi) + c=dd1**2.75d0*0.1540487967684377d0 + ! endif + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2) + end do + + do i=i0,indtm + z(indorbp,i)=r(i)**4*distp(i,1) + end do + + if(typec.ne.1) then + rp1=r(0)**2 + + ! the first derivative + fun=distp(0,1)*rp1*(4.d0-2.d0*dd1*rp1) + + ! the second derivative + fun2=distp(0,1)*rp1*(12.d0-18.d0*dd1*rp1 & + +4.d0*dd1**2*rp1**2) + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*fun+fun2 + + end if + + indorb=indorbp + + ! endif + indpar=indpar+1 + indshell=indshellp + + ! derivative of 16 with respect to z diff --git a/devel_tools/makefun_factory/orb_19.f90 b/devel_tools/makefun_factory/orb_19.f90 new file mode 100644 index 0000000..ba06d4f --- /dev/null +++ b/devel_tools/makefun_factory/orb_19.f90 @@ -0,0 +1,56 @@ + ! R(r)=c*exp(-z*r**2)*(3/4/z-r**2) + + + + + indshellp=indshell+1 + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + + dd1=dd(indpar+1) + + ! if(iflagnorm.gt.2) then + ! if(dd1.ne.0.) then + ! c=(2.d0*dd1/pi)**(3.d0/4.d0) + c=0.71270547035499016d0*dd1**0.75d0 + ! else + ! c=1.d0 + ! endif + ! endif + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2) + end do + + do i=i0,indtm + z(indorbp,i)=distp(i,1)*(3.d0/4.d0/dd1-r(i)**2) + end do + + if(typec.ne.1) then + ! the first derivative /r + fun=distp(0,1)*(2.d0*dd1*r(0)**2-7.d0/2.d0) + + ! the second derivative + fun2=distp(0,1)*(-4.d0*dd1**2*r(0)**4 & + +13.d0*dd1*r(0)**2-7.d0/2.d0) + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*fun+fun2 + + end if + + indorb=indorbp + + ! endif + + indpar=indpar+1 + indshell=indshellp + + + + ! 2p single zeta diff --git a/devel_tools/makefun_factory/orb_199.f90 b/devel_tools/makefun_factory/orb_199.f90 new file mode 100644 index 0000000..76b7ddc --- /dev/null +++ b/devel_tools/makefun_factory/orb_199.f90 @@ -0,0 +1,22 @@ +! derivative of 200 LA COSTANTE + +indorbp=indorb+1 +indshellp=indshell+1 + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=0.d0 +end do +! endif + +if(typec.ne.1) then + do i=1,3 + z(indorbp,indt+i)=0.d0 + end do + + z(indorbp,indt+4)=0 + !endif for indt +end if + +indshell=indshellp +indorb=indorbp diff --git a/devel_tools/makefun_factory/orb_2.f90 b/devel_tools/makefun_factory/orb_2.f90 new file mode 100644 index 0000000..8e1c650 --- /dev/null +++ b/devel_tools/makefun_factory/orb_2.f90 @@ -0,0 +1,51 @@ + ! + + + + indshellp=indshell+1 + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + + dd1=dd(indpar+1) + dd2=dd(indpar+2) + peff=(zeta(1)-dd1)/(dd2-zeta(1)) + + ! if(iflagnorm.gt.2) then + c=1.d0/2.d0/dsqrt(2.d0*pi*(1.d0/(2.d0*dd1)**3 & + +2.d0*peff/(dd1+dd2)**3+peff**2/(2.d0*dd2)**3)) + ! endif + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + distp(k,2)=c*dexp(-dd2*r(k)) + end do + + do i=i0,indtm + z(indorbp,i)=distp(i,1)+peff*distp(i,2) + end do + + if(typec.ne.1) then + fun=(-dd1*distp(0,1)-dd2*distp(0,2)*peff)/r(0) + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=(-2.d0*dd1/r(0)+dd1**2) & + *distp(0,1)+peff*(-2.d0*dd2/r(0)+dd2**2) & + *distp(0,2) + + + end if + + indorb=indorbp + + ! endif + + indpar=indpar+2 + indshell=indshellp + + + ! 1s double Z NO CUSP diff --git a/devel_tools/makefun_factory/orb_20.f90 b/devel_tools/makefun_factory/orb_20.f90 new file mode 100644 index 0000000..301cbdb --- /dev/null +++ b/devel_tools/makefun_factory/orb_20.f90 @@ -0,0 +1,51 @@ + ! 2p single Z with no cusp condition + + + dd1=dd(indpar+1) + ! if(iflagnorm.gt.2) then + ! c=dsqrt((2.d0*dd1)**5/8.d0/pi)/2.d0 + c=dd1**2.5d0*0.5641895835477562d0 + ! endif + + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + end do + + ! indorbp=indorb + ! + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1) + end do + ! endif + end do + + if(typec.ne.1) then + fun0=distp(0,1) + fun=-dd1*distp(0,1) + fun2=dd1**2*distp(0,1) + + ! indorbp=indorb + + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun/r(0) + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0)*(4.d0*fun/r(0)+fun2) + ! endif + end do + end if + + indpar=indpar+1 + indshell=indshell+3 + indorb=indorbp + + + ! 2p double zeta diff --git a/devel_tools/makefun_factory/orb_200.f90 b/devel_tools/makefun_factory/orb_200.f90 new file mode 100644 index 0000000..a1ef26d --- /dev/null +++ b/devel_tools/makefun_factory/orb_200.f90 @@ -0,0 +1,24 @@ +! THE COSTANT + +indorbp=indorb+1 +indshellp=indshell+1 + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=1.d0 +end do +! endif + +if(typec.ne.1) then + do i=1,3 + z(indorbp,indt+i)=0 + end do + + z(indorbp,indt+4)=0 + !endif for indt +end if + +indshell=indshellp +indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_2000:2099.f90 b/devel_tools/makefun_factory/orb_2000:2099.f90 new file mode 100644 index 0000000..38c127e --- /dev/null +++ b/devel_tools/makefun_factory/orb_2000:2099.f90 @@ -0,0 +1,46 @@ +! s gaussian -r**(2*(npower+1))*exp(-alpha*r**2) derivative of 1000 + +npower=iopt+1-2000 + +indorbp=indorb+1 +indshellp=indshell+1 + + +dd2=dd(indpar+1) +do k=indtmin,indtm + distp(k,1)=-r(k)**(2*npower)*dexp(-dd2*r(k)**2) +end do + +! if(iocc(indshellp).eq.1) then +do i=i0,indtm + z(indorbp,i)=distp(i,1) +end do +! endif + + +if(typec.ne.1) then + + + rp1=r(0)**2 + fun0=distp(0,1) + fun=(npower-dd2*rp1)*distp(0,1)*2.d0/rp1 + fun2=(npower*(2.d0*npower-1.d0)- & + (1.d0+4.d0*npower)*dd2*rp1+2.d0*(dd2*rp1)**2)* & + distp(0,1)*2.d0/rp1 + + ! if(iocc(indshellp).eq.1) then + do i=1,3 + z(indorbp,indt+i)=rmu(i,0)*fun + end do + z(indorbp,indt+4)=2.d0*fun+fun2 + ! endif + + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshell+1 +indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_21.f90 b/devel_tools/makefun_factory/orb_21.f90 new file mode 100644 index 0000000..3741410 --- /dev/null +++ b/devel_tools/makefun_factory/orb_21.f90 @@ -0,0 +1,57 @@ + ! 2p without cusp condition + + + + dd1=dd(indpar+1) + dd2=dd(indpar+2) + peff=dd(indpar+3) + c=0.5d0/dsqrt(8.d0*pi*(1.d0/(2.d0*dd1)**5 & + +2.d0*peff/(dd1+dd2)**5+peff**2/(2.d0*dd2)**5)) + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + distp(k,2)=c*dexp(-dd2*r(k)) + end do + + do i=indtmin,indtm + distp(i,3)=distp(i,1)+peff*distp(i,2) + end do + + ! indorbp=indorb + + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,3) + end do + ! endif + end do + + + if(typec.ne.1) then + fun=(-dd1*distp(0,1)-dd2*peff*distp(0,2))/r(0) + fun2=dd1**2*distp(0,1)+peff*dd2**2*distp(0,2) + + ! indorbp=indorb + + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)*fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+distp(0,3) + end do + z(indorbp,indt+4)=rmu(ic,0)*(4.d0*fun+fun2) + ! endif + end do + + + !endif for indt + end if + + indpar=indpar+3 + indshell=indshell+3 + indorb=indorbp + + + ! 3p single zeta diff --git a/devel_tools/makefun_factory/orb_2100:2199.f90 b/devel_tools/makefun_factory/orb_2100:2199.f90 new file mode 100644 index 0000000..483fe39 --- /dev/null +++ b/devel_tools/makefun_factory/orb_2100:2199.f90 @@ -0,0 +1,53 @@ +! p gaussian -r**(2*(npower+1))*exp(-alpha*r**2) derivative 1100 + +npower=iopt+1-2100 + +! indorbp=indorb + +dd2=dd(indpar+1) +do k=indtmin,indtm + distp(k,1)=-r(k)**(2*npower)*dexp(-dd2*r(k)**2) +end do + +do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1) + end do + ! endif +end do + + +if(typec.ne.1) then + + + rp1=r(0)**2 + fun0=distp(0,1) + fun=(npower-dd2*rp1)*distp(0,1)*2.d0/rp1 + fun2=(npower*(2.d0*npower-1.d0)- & + (1.d0+4.d0*npower)*dd2*rp1+2.d0*(dd2*rp1)**2)* & + distp(0,1)*2.d0/rp1 + + ! indorbp=indorb + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)*fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0)*(4.d0*fun+fun2) + ! endif + end do + + + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshell+3 +indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_22.f90 b/devel_tools/makefun_factory/orb_22.f90 new file mode 100644 index 0000000..2e0af51 --- /dev/null +++ b/devel_tools/makefun_factory/orb_22.f90 @@ -0,0 +1,57 @@ + ! 3p without cusp condition + ! r e^{-z1 r } + + + + dd1=dd(indpar+1) + ! c=dsqrt((2.d0*dd1)**7/240.d0/pi)/2.d0 + c=dd1**3.5d0*0.2060129077457011d0 + ! + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + distp(k,2)=r(k)*distp(k,1) + end do + ! + ! indorbp=indorb + ! + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,2) + end do + ! endif + end do + ! + ! + if(typec.ne.1) then + fun0=distp(0,2) + fun=(1.d0-dd1*r(0))*distp(0,1) + fun2=dd1*(dd1*r(0)-2.d0)*distp(0,1) + ! + ! indorbp=indorb + ! + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun/r(0) + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0)* & + (4.d0*fun/r(0)+fun2) + ! + ! endif + end do + ! + ! + !endif for indt + end if + ! + indpar=indpar+1 + indshell=indshell+3 + indorb=indorbp + + + ! 3p double zeta diff --git a/devel_tools/makefun_factory/orb_2200:2299.f90 b/devel_tools/makefun_factory/orb_2200:2299.f90 new file mode 100644 index 0000000..dc02b2d --- /dev/null +++ b/devel_tools/makefun_factory/orb_2200:2299.f90 @@ -0,0 +1,105 @@ +! d gaussian -r**(2*(npower+1))*exp(-alpha*r**2) derivative 1200 + +npower=iopt+1-2200 + +! indorbp=indorb + +dd2=dd(indpar+1) +do k=indtmin,indtm + distp(k,1)=-r(k)**(2*npower)*dexp(-dd2*r(k)**2) +end do + +do i=indtmin,indtm + distp(i,2)=(3.d0*rmu(3,i)**2-r(i)**2)*cost1d + distp(i,3)=(rmu(1,i)**2-rmu(2,i)**2)*cost2d + distp(i,4)=rmu(1,i)*rmu(2,i)*cost3d + distp(i,5)=rmu(2,i)*rmu(3,i)*cost3d + distp(i,6)=rmu(1,i)*rmu(3,i)*cost3d +end do + +do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=distp(i,1+ic)*distp(i,1) + end do + ! endif +end do + +if(typec.ne.1) then + + + rp1=r(0)**2 + fun0=distp(0,1) + fun=(npower-dd2*rp1)*distp(0,1)*2.d0/rp1 + fun2=(npower*(2.d0*npower-1.d0)- & + (1.d0+4.d0*npower)*dd2*rp1+2.d0*(dd2*rp1)**2)* & + distp(0,1)*2.d0/rp1 + + + ! indorbp=indorb + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0) & + *fun + if(ic.eq.1) then + if(i.ne.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost1d + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 4.d0*rmu(i,0)*fun0*cost1d + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*rmu(i,0)*fun0*cost2d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost2d + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + end if + elseif(ic.eq.4) then + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + !endif for i + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,1+ic)*(6.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + !endif for indt +end if + +indpar=indpar+1 +indshell=indshell+5 +indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_23.f90 b/devel_tools/makefun_factory/orb_23.f90 new file mode 100644 index 0000000..13464cc --- /dev/null +++ b/devel_tools/makefun_factory/orb_23.f90 @@ -0,0 +1,68 @@ + ! 3p without cusp condition + ! r ( e^{-z2 r } + z1 e^{-z3 r } ) + + + + dd1=dd(indpar+1) + dd2=dd(indpar+2) + dd3=dd(indpar+3) + ! if(iflagnorm.gt.2) then + c=1.d0/2.d0/dsqrt(240.d0*pi*(1.d0/(2.d0*dd1)**7 & + +2.d0*dd3/(dd1+dd2)**7+dd3**2/(2.d0*dd2)**7)) + ! endif + ! + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + distp(k,2)=c*dexp(-dd2*r(k)) + end do + ! + do i=indtmin,indtm + distp(i,3)=r(i)*(distp(i,1)+dd3*distp(i,2)) + end do + ! + ! indorbp=indorb + ! + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,3) + end do + ! endif + end do + ! + ! + if(typec.ne.1) then + fun0=distp(0,3) + fun=(1.d0-dd1*r(0))*distp(0,1) & + +dd3*(1.d0-dd2*r(0))*distp(0,2) + fun2=dd1*(dd1*r(0)-2.d0)*distp(0,1) & + +dd3*dd2*(dd2*r(0)-2.d0)*distp(0,2) + ! + ! indorbp=indorb + ! + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun/r(0) + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0)* & + (4.d0*fun/r(0)+fun2) + ! + ! endif + end do + ! + ! + !endif for indt + end if + ! + indpar=indpar+3 + indshell=indshell+3 + indorb=indorbp + + + + ! 4p single zeta diff --git a/devel_tools/makefun_factory/orb_24.f90 b/devel_tools/makefun_factory/orb_24.f90 new file mode 100644 index 0000000..979ae2a --- /dev/null +++ b/devel_tools/makefun_factory/orb_24.f90 @@ -0,0 +1,56 @@ + !c 4p without cusp condition + !c r^2 e^{-z1 r } + + + dd1=dd(indpar+1) + ! if(iflagnorm.gt.2) then + ! c=dsqrt((2.d0*dd1)**9/120960.d0/pi)/2.d0 + c=dd1**4.5d0*0.01835308852470193d0 + ! endif + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + end do + + do i=indtmin,indtm + distp(i,3)=r(i)**2*distp(i,1) + end do + + ! indorbp=indorb + + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,3) + end do + ! endif + end do + + + if(typec.ne.1) then + fun0=distp(0,3) + fun=(2.d0*r(0)-dd1*r(0)**2)*distp(0,1) + fun2=((dd1*r(0))**2+2.d0-4.d0*dd1*r(0))*distp(0,1) + ! indorbp=indorb + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun/r(0) + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0)*(4.d0*fun/r(0)+fun2) + ! endif + end do + + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+3 + indorb=indorbp + + + ! 4p double zeta diff --git a/devel_tools/makefun_factory/orb_25.f90 b/devel_tools/makefun_factory/orb_25.f90 new file mode 100644 index 0000000..6343dee --- /dev/null +++ b/devel_tools/makefun_factory/orb_25.f90 @@ -0,0 +1,61 @@ + ! 4p without cusp condition + ! r^2 ( e^{-z2 r } + z1 e^{-z3 r } ) + + + + dd1=dd(indpar+1) + dd2=dd(indpar+2) + dd3=dd(indpar+3) + ! if(iflagnorm.gt.2) then + c=1.d0/2.d0/dsqrt(120960.d0*pi*(1.d0/(2.d0*dd1)**9 & + +2.d0*dd3/(dd1+dd2)**9+dd3**2/(2.d0*dd2)**9)) + ! endif + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + distp(k,2)=c*dexp(-dd2*r(k)) + end do + + do i=indtmin,indtm + distp(i,3)=r(i)**2*(distp(i,1)+dd3*distp(i,2)) + end do + + ! indorbp=indorb + + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,3) + end do + ! endif + end do + + + if(typec.ne.1) then + fun0=distp(0,3) + fun=(2.d0*r(0)-dd1*r(0)**2)*distp(0,1) & + +dd3*(2.d0*r(0)-dd2*r(0)**2)*distp(0,2) + fun2=((dd1*r(0))**2+2.d0-4.d0*dd1*r(0))*distp(0,1) & + +dd3*((dd2*r(0))**2+2.d0-4.d0*dd2*r(0))*distp(0,2) + ! indorbp=indorb + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun/r(0) + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0)*(4.d0*fun/r(0)+fun2) + ! endif + end do + + !endif for indt + end if + + indpar=indpar+3 + indshell=indshell+3 + indorb=indorbp + + + ! 2p triple zeta diff --git a/devel_tools/makefun_factory/orb_26.f90 b/devel_tools/makefun_factory/orb_26.f90 new file mode 100644 index 0000000..0ace878 --- /dev/null +++ b/devel_tools/makefun_factory/orb_26.f90 @@ -0,0 +1,59 @@ + ! s orbital + ! + ! - angmom = 1 + ! - type = Slater + ! - normalized = yes + ! - angtype = spherical + ! - npar = 5 + ! - multiplicity = 3 + ! + ! 2p with cusp conditions + ! + + dd1=dd(indpar+1) + dd2=dd(indpar+2) + peff=dd(indpar+3) + dd3=dd(indpar+4) + peff2=dd(indpar+5) + + c=1.d0/2.d0/dsqrt(8.d0*pi*(1.d0/(2.d0*dd1)**5 & + +2.d0*peff/(dd1+dd2)**5+peff**2/(2.d0*dd2)**5 & + +2.d0*peff2/(dd1+dd3)**5+peff2**2/(2.d0*dd3)**5 & + +2.d0*peff2*peff/(dd2+dd3)**5)) + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + distp(k,2)=c*dexp(-dd2*r(k)) + distp(k,3)=c*dexp(-dd3*r(k)) + end do + + do i=indtmin,indtm + distp(i,4)=distp(i,1)+peff*distp(i,2)+peff2*distp(i,3) + end do + + do ic=1,3 + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,4) + end do + end do + + if(typec.ne.1) then + fun=(-dd1*distp(0,1)-dd2*peff*distp(0,2) & + -dd3*peff2*distp(0,3))/r(0) + fun2=dd1**2*distp(0,1)+peff*dd2**2*distp(0,2) & + +peff2*dd3**2*distp(0,3) + + do ic=1,3 + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)*fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+distp(0,4) + end do + z(indorbp,indt+4)=rmu(ic,0)*(4.d0*fun+fun2) + end do + end if + + indpar=indpar+5 + indshell=indshell+3 + indorb=indorbp diff --git a/devel_tools/makefun_factory/orb_27.f90 b/devel_tools/makefun_factory/orb_27.f90 new file mode 100644 index 0000000..71e32bc --- /dev/null +++ b/devel_tools/makefun_factory/orb_27.f90 @@ -0,0 +1,73 @@ + ! 2p without cusp condition + + + + dd1=dd(indpar+1) + dd2=dd(indpar+2) + peff=dd(indpar+3) + dd3=dd(indpar+4) + peff2=dd(indpar+5) + + ! if(iflagnorm.gt.2) then + c=1.d0/2.d0/dsqrt(240.d0*pi*(1.d0/(2.d0*dd1)**7 & + +2.d0*peff/(dd1+dd2)**7+peff**2/(2.d0*dd2)**7 & + +2.d0*peff2/(dd1+dd3)**7+peff2**2/(2.d0*dd3)**7 & + +2.d0*peff2*peff/(dd2+dd3)**7)) + ! endif + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + distp(k,2)=c*dexp(-dd2*r(k)) + distp(k,3)=c*dexp(-dd3*r(k)) + end do + + do i=indtmin,indtm + distp(i,4)=r(i)*(distp(i,1)+peff*distp(i,2) & + +peff2*distp(i,3)) + end do + + ! indorbp=indorb + + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,4) + end do + ! endif + end do + + + if(typec.ne.1) then + fun0=distp(0,4) + fun=(1.d0-dd1*r(0))*distp(0,1) & + +peff*(1.d0-dd2*r(0))*distp(0,2) & + +peff2*(1.d0-dd3*r(0))*distp(0,3) + fun2=dd1*(dd1*r(0)-2.d0)*distp(0,1) & + +peff*dd2*(dd2*r(0)-2.d0)*distp(0,2) & + +peff2*dd3*(dd3*r(0)-2.d0)*distp(0,3) + + ! indorbp=indorb + + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun/r(0) + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0)* & + (4.d0*fun/r(0)+fun2) + ! endif + end do + + + !endif for indt + end if + + indpar=indpar+5 + indshell=indshell+3 + indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_28.f90 b/devel_tools/makefun_factory/orb_28.f90 new file mode 100644 index 0000000..29dcaf7 --- /dev/null +++ b/devel_tools/makefun_factory/orb_28.f90 @@ -0,0 +1,56 @@ + ! R(r)=(Z*b*r)^4/(1+(Z*b*r)^4)*exp(-z*r) orbital 1s (no cusp) + ! d -> b1s (defined in module constants) + ! normadization: cost1s, depends on b1s + + + indshellp=indshell+1 + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + + dd1=dd(indpar+1) + + ! if(iflagnorm.gt.2) then + ! if(dd1.gt.0.) then + c=cost1s*dd1**1.5d0 + ! else + ! c=1.d0 + ! endif + ! endif + + do i=indtmin,indtm + distp(i,1)=c*dexp(-dd1*r(i)) + end do + + do i=i0,indtm + rp4=(dd1*b1s*r(i))**4 + z(indorbp,i)=distp(i,1)*rp4/(1.d0+rp4) + end do + + if(typec.ne.1) then + rp1=dd1*b1s*r(0) + rp2=rp1**2 + rp4=rp2**2 + rp5=r(0)*dd1 + rp6=(b1s*dd1)**2*rp2 + ! the first derivative /r + fun=-distp(0,1)*rp6*(-4.d0+rp5+rp4*rp5)/(1.d0+rp4)**2 + ! the second derivative derivative + fun2=distp(0,1)*rp6*(12.d0-8*rp5+rp5**2-20*rp4- & + 8*rp4*rp5+2*rp4*rp5**2+(rp4*rp5)**2)/(1.d0+rp4)**3 + ! gradient: dR(r)/dr_i=r_i*fun + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + ! laplacian = 2*fun+fun2 + z(indorbp,indt+4)=2.d0*fun+fun2 + end if + + indorb=indorbp + + ! endif + + indpar=indpar+1 + indshell=indshellp + diff --git a/devel_tools/makefun_factory/orb_29.f90 b/devel_tools/makefun_factory/orb_29.f90 new file mode 100644 index 0000000..7e3d948 --- /dev/null +++ b/devel_tools/makefun_factory/orb_29.f90 @@ -0,0 +1,73 @@ + ! derivative of (28) + + + indshellp=indshell+1 + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + + dd1=dd(indpar+1) + + ! if(iflagnorm.gt.2) then + ! if(dd1.gt.0.) then + c=cost1s*dd1**1.5d0 + ! else + ! c=1.d0 + ! endif + ! endif + ! if(dd1.gt.0.) then + c1=1.5d0/dd1 + ! else + ! c1=0.d0 + ! endif + + do i=indtmin,indtm + distp(i,1)=c*dexp(-dd1*r(i)) + end do + + do i=i0,indtm + ! rp1=(b1s*r(i))**4*dd1**3 + ! rp4=rp1*dd1 + ! rp5=dd1*r(i) + ! z(indorbp,i)=distp(i,1)* & + ! &(c1*rp4/(1+rp4)-rp1*(-4+rp5+rp4*rp5)/(1+rp4)**2) + rp4=(b1s*dd1*r(i))**4 + rp5=dd1*r(i) + z(indorbp,i)=distp(i,1)*rp4/(1+rp4)* & + (c1 - (1.d0/dd1)*(-4+rp5+rp4*rp5)/(1+rp4)) + end do + + if(typec.ne.1) then + rp1=dd1*b1s*r(0) + rp2=rp1**2 + rp4=rp2**2 + rp5=rp4*rp1 + rp8=rp4*rp4 + + fun=distp(0,1)* (dd1*rp2*(4*b1s**2*(11-5*rp4) +2*(rp1+rp5)**2 & + -b1s*rp1*(21+26*rp4+5*rp8)))/(2.*(1+rp4)**3) + + fun2=distp(0,1)*(dd1*rp2*(b1s*(31 + 7*rp4)*(rp1 + rp5)**2 & + - 2*(rp1 + rp5)**3 + 64*b1s**2*rp1*(-2 - rp4 + rp8) + & + 4*b1s**3*(33 - 134*rp4 + 25*rp8)))/(2.*b1s*(1 + rp4)**4) + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*fun+fun2 + + ! endif + + indorb=indorbp + + end if + + indpar=indpar+1 + indshell=indshellp + + + + + diff --git a/devel_tools/makefun_factory/orb_3.f90 b/devel_tools/makefun_factory/orb_3.f90 new file mode 100644 index 0000000..189132d --- /dev/null +++ b/devel_tools/makefun_factory/orb_3.f90 @@ -0,0 +1,51 @@ + ! + + + + indshellp=indshell+1 + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + + dd1=dd(indpar+1) + dd2=dd(indpar+2) + peff=dd(indpar+3) + + ! if(iflagnorm.gt.2) then + c=1.d0/2.d0/dsqrt(2.d0*pi*(1.d0/(2.d0*dd1)**3 & + +2.d0*peff/(dd1+dd2)**3+peff**2/(2.d0*dd2)**3)) + ! endif + + do i=indpar+1,indpar+2 + do k=indtmin,indtm + distp(k,i-indpar)=c*dexp(-dd(i)*r(k)) + end do + end do + + do i=i0,indtm + z(indorbp,i)=distp(i,1)+peff*distp(i,2) + end do + + if(typec.ne.1) then + fun=-dd1*distp(0,1)-peff*dd2*distp(0,2) + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0)/r(0) + end do + + z(indorbp,indt+4)=(-2.d0*dd1/r(0)+dd1**2) & + *distp(0,1)+peff*(-2.d0*dd2/r(0)+dd2**2) & + *distp(0,2) + + + end if + + indorb=indorbp + + ! endif + + indpar=indpar+3 + indshell=indshellp + + ! 2s 2pz Hybryd single Z diff --git a/devel_tools/makefun_factory/orb_30.f90 b/devel_tools/makefun_factory/orb_30.f90 new file mode 100644 index 0000000..2452bb1 --- /dev/null +++ b/devel_tools/makefun_factory/orb_30.f90 @@ -0,0 +1,109 @@ + ! 3d without cusp and one parmater + + + dd1=dd(indpar+1) + ! if(iflagnorm.gt.2) then + ! c= & + ! &1.d0/(2.d0**3*3.d0)*dsqrt(1.d0/pi)*(2.d0*dd1)**(7.d0/2.d0) + c=dd1**3.5d0*0.26596152026762178d0 + ! endif + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + end do + + do i=indtmin,indtm + distp(i,3)=distp(i,1) + ! lz=0 + distp(i,4)=(3.d0*rmu(3,i)**2-r(i)**2)*cost1d + ! lz=+/-2 + distp(i,5)=(rmu(1,i)**2-rmu(2,i)**2)*cost2d + ! lz=+/-2 + distp(i,6)=rmu(1,i)*rmu(2,i)*cost3d + ! lz=+/-1 + distp(i,7)=rmu(2,i)*rmu(3,i)*cost3d + ! lz=+/-1 + distp(i,8)=rmu(1,i)*rmu(3,i)*cost3d + end do + + ! indorbp=indorb + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=distp(i,3+ic)*distp(i,3) + end do + ! endif + end do + + if(typec.ne.1) then + fun0=distp(0,3) + fun=-dd1*distp(0,1) + fun2=dd1**2*distp(0,1) + + ! indorbp=indorb + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,3+ic)*rmu(i,0) & + *fun/r(0) + if(ic.eq.1) then + if(i.ne.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost1d + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 4.d0*rmu(i,0)*fun0*cost1d + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*rmu(i,0)*fun0*cost2d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost2d + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + end if + elseif(ic.eq.4) then + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + !endif for i + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,3+ic)*(6.d0*fun/r(0)+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + !endif for indt + end if + ! + indpar=indpar+1 + indshell=indshell+5 + indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_31.f90 b/devel_tools/makefun_factory/orb_31.f90 new file mode 100644 index 0000000..92e4a07 --- /dev/null +++ b/devel_tools/makefun_factory/orb_31.f90 @@ -0,0 +1,115 @@ + ! 3d without cusp condition double Z + + + dd1=dd(indpar+1) + dd2=dd(indpar+2) + peff=dd(indpar+3) + ! if(iflagnorm.gt.2) then + c=1/2.d0*dsqrt(5.d0/pi) & + /dsqrt(1/dd1**7/128.d0+2*peff/(dd1+dd2)**7 & + +peff**2/dd2**7/128.d0)/dsqrt(720.d0) + ! endif + + do k=indtmin,indtm + distp(k,1)=dexp(-dd1*r(k)) + distp(k,2)=dexp(-dd2*r(k)) + end do + + do i=indtmin,indtm + distp(i,3)=c*(distp(i,1)+peff*distp(i,2)) + !lz=0 + distp(i,4)=(3.d0*rmu(3,i)**2-r(i)**2)*cost1d + !lz=+/-2 + distp(i,5)=(rmu(1,i)**2-rmu(2,i)**2)*cost2d + ! lz=+/- 2 + distp(i,6)=rmu(1,i)*rmu(2,i)*cost3d + ! lz=+/-1 + distp(i,7)=rmu(2,i)*rmu(3,i)*cost3d + ! lz=+/-1 + distp(i,8)=rmu(1,i)*rmu(3,i)*cost3d + end do + + ! indorbp=indorb + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=distp(i,3+ic)*distp(i,3) + end do + ! endif + end do + + if(typec.ne.1) then + fun0=distp(0,3) + fun=c*(-dd1*distp(0,1)-peff*dd2*distp(0,2)) + fun2=c*(dd1**2*distp(0,1) & + +peff*dd2**2*distp(0,2)) + + ! indorbp=indorb + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,3+ic)*rmu(i,0)*fun/r(0) + if(ic.eq.1) then + if(i.ne.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost1d + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 4.d0*rmu(i,0)*fun0*cost1d + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*rmu(i,0)*fun0*cost2d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost2d + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + end if + elseif(ic.eq.4) then + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + !endif for i + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,3+ic)*(6.d0*fun/r(0)+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + + !endif for indt + end if + + indpar=indpar+3 + indshell=indshell+5 + indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_32.f90 b/devel_tools/makefun_factory/orb_32.f90 new file mode 100644 index 0000000..0b1978d --- /dev/null +++ b/devel_tools/makefun_factory/orb_32.f90 @@ -0,0 +1,120 @@ + ! 3d without cusp condition triple Z + + + dd1=dd(indpar+1) + dd2=dd(indpar+2) + peff=dd(indpar+3) + dd3=dd(indpar+4) + peff2=dd(indpar+5) + + ! if(iflagnorm.gt.2) then + c=1/2.d0*dsqrt(5.d0/pi) & + /dsqrt(1/(2.d0*dd1)**7+2*peff/(dd1+dd2)**7 & + +peff**2/(2.d0*dd2)**7+2*peff2/(dd1+dd3)**7 & + +peff2**2/(2.d0*dd3)**7+2*peff*peff2/(dd2+dd3)**7)/dsqrt(720.d0) + ! endif + + do k=indtmin,indtm + distp(k,1)=dexp(-dd1*r(k)) + distp(k,2)=dexp(-dd2*r(k)) + distp(k,3)=dexp(-dd3*r(k)) + end do + + do i=indtmin,indtm + distp(i,4)=c*(distp(i,1)+peff*distp(i,2)+peff2*distp(i,3)) + !lz=0 + distp(i,5)=(3.d0*rmu(3,i)**2-r(i)**2)*cost1d + !lz=+/-2 + distp(i,6)=(rmu(1,i)**2-rmu(2,i)**2)*cost2d + ! lz=+/- 2 + distp(i,7)=rmu(1,i)*rmu(2,i)*cost3d + ! lz=+/-1 + distp(i,8)=rmu(2,i)*rmu(3,i)*cost3d + ! lz=+/-1 + distp(i,9)=rmu(1,i)*rmu(3,i)*cost3d + end do + + ! indorbp=indorb + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=distp(i,4+ic)*distp(i,4) + end do + ! endif + end do + + if(typec.ne.1) then + fun0=distp(0,4) + fun=c*(-dd1*distp(0,1)-peff*dd2*distp(0,2) & + -peff2*dd3*distp(0,3)) + fun2=c*(dd1**2*distp(0,1)+peff*dd2**2*distp(0,2) & + +peff2*dd3**2*distp(0,3)) + + ! indorbp=indorb + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,4+ic)*rmu(i,0)*fun/r(0) + if(ic.eq.1) then + if(i.ne.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost1d + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 4.d0*rmu(i,0)*fun0*cost1d + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*rmu(i,0)*fun0*cost2d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost2d + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + end if + elseif(ic.eq.4) then + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + !endif for i + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,4+ic)*(6.d0*fun/r(0)+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + + !endif for indt + end if + + indpar=indpar+5 + indshell=indshell+5 + indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_33.f90 b/devel_tools/makefun_factory/orb_33.f90 new file mode 100644 index 0000000..52db0ce --- /dev/null +++ b/devel_tools/makefun_factory/orb_33.f90 @@ -0,0 +1,112 @@ + ! 4d without cusp and one parmater + + + dd1=dd(indpar+1) + ! if(iflagnorm.gt.2) then + ! c= + ! &1/(2.d0**3*3.d0)*dsqrt(1.d0/pi)*(2.d0*dd1)**(7.d0/2.d0) + ! c= & + ! &1.d0/(2.d0**3*3.d0)/dsqrt(56.d0*pi)*(2.d0*dd1)**(9.d0/2.d0) + c=dd1**4.5d0*0.0710812062076410d0 + ! endif + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + end do + + do i=indtmin,indtm + distp(i,3)=distp(i,1)*r(i) + ! lz=0 + distp(i,4)=(3.d0*rmu(3,i)**2-r(i)**2)*cost1d + ! lz=+/ + distp(i,5)=(rmu(1,i)**2-rmu(2,i)**2)*cost2d + ! lz=+/-2 + distp(i,6)=rmu(1,i)*rmu(2,i)*cost3d + ! lz=+/-1 + distp(i,7)=rmu(2,i)*rmu(3,i)*cost3d + ! lz=+/-1 + distp(i,8)=rmu(1,i)*rmu(3,i)*cost3d + end do + + ! indorbp=indorb + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=distp(i,3+ic)*distp(i,3) + end do + ! endif + end do + + if(typec.ne.1) then + fun0=distp(0,3) + fun=-dd1*distp(0,3)+distp(0,1) + fun2=dd1**2*distp(0,3)-2.d0*dd1*distp(0,1) + + ! indorbp=indorb + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,3+ic)*rmu(i,0) & + *fun/r(0) + if(ic.eq.1) then + if(i.ne.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost1d + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 4.d0*rmu(i,0)*fun0*cost1d + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*rmu(i,0)*fun0*cost2d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost2d + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + end if + elseif(ic.eq.4) then + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + !endif for i + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,3+ic)*(6.d0*fun/r(0)+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + end if + ! + indpar=indpar+1 + indshell=indshell+5 + indorb=indorbp + + + ! 2s single Z WITH CUSP zero diff --git a/devel_tools/makefun_factory/orb_34.f90 b/devel_tools/makefun_factory/orb_34.f90 new file mode 100644 index 0000000..2a2ee79 --- /dev/null +++ b/devel_tools/makefun_factory/orb_34.f90 @@ -0,0 +1,52 @@ + ! normalized + ! exp(-dd1*r) + dd1*r*exp(-dd1*r) + + + indshellp=indshell+1 + + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + dd1=dd(indpar+1) + ! peff=dd1 + + + ! if(iflagnorm.gt.2) then + ! c=1.d0/dsqrt(1.d0/4.d0/dd1**3+12.d0*dd1/(2.d0*dd1)**4+& + ! &3.d0*dd1**2/4.d0/dd1**5)/dsqrt(4.d0*pi) + ! c=dd1*dsqrt(dd1)/dsqrt(7.d0*pi) + c=dd1*dsqrt(dd1)*.2132436186229231d0 + ! endif + + do i=indtmin,indtm + distp(i,1)=c*dexp(-dd1*r(i)) + end do + + do i=i0,indtm + z(indorbp,i)=distp(i,1)*(1.d0+r(i)*dd1) + end do + + if(typec.ne.1) then + + fun=-dd1**2*distp(0,1) + fun2=fun*(1.d0-dd1*r(0)) + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=(2.d0*fun+fun2) + + end if + + indorb=indorbp + + ! endif + indpar=indpar+1 + indshell=indshellp + + + + + ! 2s single Z WITH CUSP diff --git a/devel_tools/makefun_factory/orb_35.f90 b/devel_tools/makefun_factory/orb_35.f90 new file mode 100644 index 0000000..81ae0d1 --- /dev/null +++ b/devel_tools/makefun_factory/orb_35.f90 @@ -0,0 +1,48 @@ + ! normalized + ! exp(-dd1*r) + dd1* r * exp(-dd2*r) + + + indshellp=indshell+1 + + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + dd1=dd(indpar+1) + dd2=dd(indpar+2) + peff=dd1 + + do k=indtmin,indtm + distp(k,1)=dexp(-dd1*r(k)) + distp(k,2)=dexp(-dd2*r(k)) + end do + + ! if(iflagnorm.gt.2) then + c=1.d0/dsqrt(1/4.d0/dd1**3+12*peff/(dd1+dd2)**4+ & + 3*peff**2/4/dd2**5)/dsqrt(4.0*pi) + ! endif + + do i=i0,indtm + z(indorbp,i)=c*(distp(i,1)+r(i)*distp(i,2)*peff) + end do + + if(typec.ne.1) then + + fun=-dd1*distp(0,1)+peff*distp(0,2)*(1.d0-dd2*r(0)) + fun2=distp(0,1)*dd1**2 & + +peff*distp(0,2)*(dd2**2*r(0)-2.d0*dd2) + + do i=1,3 + z(indorbp,indt+i)=fun*c*rmu(i,0)/r(0) + end do + z(indorbp,indt+4)=c*(2.d0*fun/r(0)+fun2) + + end if + + indorb=indorbp + + ! endif + indpar=indpar+2 + indshell=indshellp + + ! single gaussian p orbitals diff --git a/devel_tools/makefun_factory/orb_36.f90 b/devel_tools/makefun_factory/orb_36.f90 new file mode 100644 index 0000000..b11c00b --- /dev/null +++ b/devel_tools/makefun_factory/orb_36.f90 @@ -0,0 +1,42 @@ + ! p orbital + ! + ! - angmom = 1 + ! - type = Gaussian + ! - normalized = yes + ! - angtype = spherical + ! - npar = 1 + ! - multiplicity = 3 + ! + + dd1=dd(indpar+1) + c=dd1**1.25d0*1.42541094070998d0 + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2) + end do + + do ic=1,3 + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1) + end do + end do + + if(typec.ne.1) then + fun0=distp(0,1) + fun=-2.d0*dd1*distp(0,1) + fun2=fun*(1.d0-2.d0*dd1*r(0)**2) + + do ic=1,3 + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)*fun + end do + z(indorbp,indt+ic)=z(indorbp,indt+ic)+fun0 + z(indorbp,indt+4)=rmu(ic,0)*(4.d0*fun+fun2) + end do + end if + + indpar=indpar+1 + indshell=indshell+3 + indorb=indorbp diff --git a/devel_tools/makefun_factory/orb_37,68.f90 b/devel_tools/makefun_factory/orb_37,68.f90 new file mode 100644 index 0000000..735445e --- /dev/null +++ b/devel_tools/makefun_factory/orb_37,68.f90 @@ -0,0 +1,86 @@ + ! d orbital + ! + ! - angmom = 2 + ! - type = Gaussian + ! - normalized = yes + ! - angtype = spherical + ! - npar = 1 + ! - multiplicity = 5 + ! + + indparp=indpar+1 + dd1=dd(indparp) + c=dd1**1.75d0*1.64592278064948967213d0 + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2) + end do + + do i=indtmin,indtm + ! lz=0 + distp(i,2)=(3.d0*rmu(3,i)**2-r(i)**2)*cost1d + ! lz=+/-2 + distp(i,3)=(rmu(1,i)**2-rmu(2,i)**2)*cost2d + ! lz=+/-2 + distp(i,4)=rmu(1,i)*rmu(2,i)*cost3d + ! lz=+/-1 + distp(i,5)=rmu(2,i)*rmu(3,i)*cost3d + ! lz=+/-1 + distp(i,6)=rmu(1,i)*rmu(3,i)*cost3d + end do + + do ic=1,5 + indorbp=indorb+ic + do k=i0,indtm + z(indorbp,k)=distp(k,1)*distp(k,1+ic) + end do + end do + + if(typec.ne.1) then + + dd1=dd(indparp) + fun0=distp(0,1) + fun=-2.d0*dd1*distp(0,1) + fun2=fun*(1.d0-2.d0*dd1*r(0)**2) + + do ic=1,5 + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0) & + *fun + end do + if(ic.eq.1) then + z(indorbp,indt+1)=z(indorbp,indt+1)- & + 2.d0*rmu(1,0)*fun0*cost1d + z(indorbp,indt+2)=z(indorbp,indt+2)- & + 2.d0*rmu(2,0)*fun0*cost1d + z(indorbp,indt+3)=z(indorbp,indt+3)+ & + 4.d0*rmu(3,0)*fun0*cost1d + elseif(ic.eq.2) then + z(indorbp,indt+1)=z(indorbp,indt+1)+ & + 2.d0*rmu(1,0)*fun0*cost2d + z(indorbp,indt+2)=z(indorbp,indt+2)- & + 2.d0*rmu(2,0)*fun0*cost2d + elseif(ic.eq.3) then + z(indorbp,indt+1)=z(indorbp,indt+1)+ & + rmu(2,0)*fun0*cost3d + z(indorbp,indt+2)=z(indorbp,indt+2)+ & + rmu(1,0)*fun0*cost3d + elseif(ic.eq.4) then + z(indorbp,indt+2)=z(indorbp,indt+2)+ & + rmu(3,0)*fun0*cost3d + z(indorbp,indt+3)=z(indorbp,indt+3)+ & + rmu(2,0)*fun0*cost3d + elseif(ic.eq.5) then + z(indorbp,indt+1)=z(indorbp,indt+1)+ & + rmu(3,0)*fun0*cost3d + z(indorbp,indt+3)=z(indorbp,indt+3)+ & + rmu(1,0)*fun0*cost3d + end if + z(indorbp,indt+4)=distp(0,1+ic)*(6.d0*fun+fun2) + end do + end if + + indpar=indpar+1 + indshell=indshell+5 + indorb=indorbp diff --git a/devel_tools/makefun_factory/orb_38.f90 b/devel_tools/makefun_factory/orb_38.f90 new file mode 100644 index 0000000..34c6b64 --- /dev/null +++ b/devel_tools/makefun_factory/orb_38.f90 @@ -0,0 +1,51 @@ + ! R(r)=r**2*exp(-z1*r) + + + + indshellp=indshell+1 + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + dd1=dd(indpar+1) + ! if(iflagnorm.gt.2) then + ! c=1.d0/dsqrt(1.d0/4.d0/dd1**3+12.d0*dd1/(2.d0*dd1)**4+& + ! &3.d0*dd1**2/4.d0/dd1**5)/dsqrt(4.d0*pi) + ! c=dd1*dsqrt(dd1)/dsqrt(7.d0*pi) + c=dd1*dsqrt(dd1)*0.21324361862292308211d0 + ! endif + + c0=-c*dd1 + + c1=1.5d0*c/dd1 + + + + do i=indtmin,indtm + distp(i,1)=dexp(-dd1*r(i)) + end do + + do i=i0,indtm + z(indorbp,i)=(c0*r(i)**2+c1*(1.d0+dd1*r(i))) & + *distp(i,1) + end do + + c1=c1*dd1**2 + + if(typec.ne.1) then + fun=(c0*(2.d0-dd1*r(0))-c1)*distp(0,1) + fun2=(c0*(2.d0-4*dd1*r(0)+(dd1*r(0))**2) & + +c1*(dd1*r(0)-1.d0))*distp(0,1) + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + z(indorbp,indt+4)=2.d0*fun+fun2 + end if + + indorb=indorbp + + ! endif + indpar=indpar+1 + indshell=indshellp + + ! 4s single zeta derivative of 10 diff --git a/devel_tools/makefun_factory/orb_39.f90 b/devel_tools/makefun_factory/orb_39.f90 new file mode 100644 index 0000000..2460e84 --- /dev/null +++ b/devel_tools/makefun_factory/orb_39.f90 @@ -0,0 +1,61 @@ + ! R(r)=r**3*exp(-z1*r) + ! + indshellp=indshell+1 + + + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + dd1=dd(indpar+1) + ! if(iflagnorm.gt.2) then + ! c=dsqrt((2*dd1)**9/40320.d0/pi)/2.d0 + ! c=dsqrt((2*dd1)**7/720.d0/pi)/2.d0 + c=dd1**3.5d0*0.11894160774351807429d0 + ! c=-c + ! endif + + c0=-c + c1=3.5d0*c/dd1 + + do k=indtmin,indtm + distp(k,1)=dexp(-dd1*r(k)) + end do + + do i=i0,indtm + z(indorbp,i)=(c0*r(i)**3+c1*r(i)**2)*distp(i,1) + end do + + if(typec.ne.1) then + rp1=r(0)**3 + rp2=r(0)**2 + + ! fun=(2.d0-dd1*r(0))*distp(0,1) + ! fun2=(2.d0-4*dd1*r(0)+(dd1*r(0))**2)*distp(0,1) + ! + !c the first derivative/r + fun=distp(0,1)*(c0*(3.d0*r(0)-dd1*rp2) & + +c1*(2.d0-dd1*r(0))) + + !c + + !c the second derivative + fun2=distp(0,1)* & + (c0*(6.d0*r(0)-6.d0*dd1*rp2+dd1**2*rp1) & + +c1*(2.d0-4*dd1*r(0)+(dd1*r(0))**2)) + !c + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*fun+fun2 + + end if + ! + indorb=indorbp + ! + ! endif + indpar=indpar+1 + indshell=indshellp + ! + ! 3p single zeta diff --git a/devel_tools/makefun_factory/orb_4.f90 b/devel_tools/makefun_factory/orb_4.f90 new file mode 100644 index 0000000..7e0bd81 --- /dev/null +++ b/devel_tools/makefun_factory/orb_4.f90 @@ -0,0 +1,48 @@ + ! normalized + + indshellp=indshell+1 + + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + dd1=dd(indpar+1) + dd2=dd(indpar+2) + + ! if(iflagnorm.gt.2) then + c=dd1**2.5d0/dsqrt(3.d0*pi*(1.d0+dd2**2/3.d0)) + ! endif + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + end do + + + do i=i0,indtm + z(indorbp,i)=(r(i)+dd2*rmu(3,i))*distp(i,1) + end do + + if(typec.ne.1) then + + fun=distp(0,1)*(1.d0-dd1*r(0)) + funp=-dd2*dd1*distp(0,1)*rmu(3,0) + fun2=distp(0,1)*(dd1**2*r(0)-2.d0*dd1) + fun2p=dd1**2*dd2*distp(0,1)*rmu(3,0) + + do i=1,3 + z(indorbp,indt+i)=(fun+funp)*rmu(i,0)/r(0) + end do + z(indorbp,indt+3)=z(indorbp,indt+3)+dd2*distp(0,1) + z(indorbp,indt+4)=(2.d0*fun+4.d0*funp)/r(0) & + +(fun2+fun2p) + + end if + + indorb=indorbp + + ! endif + indpar=indpar+2 + indshell=indshellp + + + ! 2s single Z NO CUSP diff --git a/devel_tools/makefun_factory/orb_40.f90 b/devel_tools/makefun_factory/orb_40.f90 new file mode 100644 index 0000000..79d1ba4 --- /dev/null +++ b/devel_tools/makefun_factory/orb_40.f90 @@ -0,0 +1,63 @@ + ! 3p without cusp condition derivative of 20 + ! r e^{-z1 r } + + + + dd1=dd(indpar+1) + ! if(iflagnorm.gt.2) then + ! c=dsqrt((2.d0*dd1)**5/8.d0/pi)/2.d0 + c=dd1**2.5d0*0.5641895835477562d0 + ! endif + + c0=-c + c1=2.5d0*c/dd1 + + ! + do k=indtmin,indtm + distp(k,1)=dexp(-dd1*r(k)) + distp(k,2)=r(k)*distp(k,1) + end do + ! + ! indorbp=indorb + ! + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*(c0*distp(i,2)+c1*distp(i,1)) + end do + ! endif + end do + ! + ! + if(typec.ne.1) then + fun0=c0*distp(0,2)+c1*distp(0,1) + fun=(c0*(1.d0-dd1*r(0))-c1*dd1)*distp(0,1) + fun2=(c0*dd1*(dd1*r(0)-2.d0)+c1*dd1**2)*distp(0,1) + ! + ! indorbp=indorb + ! + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun/r(0) + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0)* & + (4.d0*fun/r(0)+fun2) + ! + ! endif + end do + ! + ! + !endif for indt + end if + ! + indpar=indpar+1 + indshell=indshell+3 + indorb=indorbp + + + ! 4p single zeta diff --git a/devel_tools/makefun_factory/orb_41.f90 b/devel_tools/makefun_factory/orb_41.f90 new file mode 100644 index 0000000..b6712c1 --- /dev/null +++ b/devel_tools/makefun_factory/orb_41.f90 @@ -0,0 +1,61 @@ + !c 4p without cusp condition derivative of 22 + !c r^2 e^{-z1 r } + + + dd1=dd(indpar+1) + ! if(iflagnorm.gt.2) then + ! c=dsqrt((2.d0*dd1)**7/240.d0/pi)/2.d0 + c=dd1**3.5d0*0.2060129077457011d0 + ! endif + c0=-c + + c1=3.5d0*c/dd1 + + do k=indtmin,indtm + distp(k,1)=dexp(-dd1*r(k)) + end do + + do i=indtmin,indtm + distp(i,3)=r(i)**2*distp(i,1) + end do + + ! indorbp=indorb + + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*(c0*distp(i,3)+c1*r(i)*distp(i,1)) + end do + ! endif + end do + + + if(typec.ne.1) then + ! fun=(1.d0-dd1*r(0))*distp(0,1) + ! fun2=dd1*(dd1*r(0)-2.d0)*distp(0,1) + + fun0=c0*distp(0,3)+c1*r(0)*distp(0,1) + fun=(c0*(2.d0-dd1*r(0))*r(0) & + +c1*(1.d0-dd1*r(0)))*distp(0,1) + fun2=(c0*((dd1*r(0))**2+2.d0-4.d0*dd1*r(0)) & + +c1*dd1*(dd1*r(0)-2.d0))*distp(0,1) + + ! indorbp=indorb + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun/r(0) + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0)*(4.d0*fun/r(0)+fun2) + ! endif + end do + end if + + indpar=indpar+1 + indshell=indshell+3 + indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_42.f90 b/devel_tools/makefun_factory/orb_42.f90 new file mode 100644 index 0000000..2ac8f3e --- /dev/null +++ b/devel_tools/makefun_factory/orb_42.f90 @@ -0,0 +1,115 @@ + ! 4d without cusp and one parmater derivative of 30 + + + dd1=dd(indpar+1) + ! if(iflagnorm.gt.2) then + ! c= & + ! &1.d0/(2.d0**3*3.d0)*dsqrt(1.d0/pi)*(2.d0*dd1)**(7.d0/2.d0) + c=dd1**3.5d0*0.26596152026762178d0 + ! c= + ! &1.d0/(2.d0**3*3.d0)/dsqrt(56.d0*pi)*(2.d0*dd1)**(9.d0/2.d0) + ! endif + + c0=-c + c1=3.5d0*c/dd1 + + do k=indtmin,indtm + distp(k,1)=dexp(-dd1*r(k)) + end do + + do i=indtmin,indtm + distp(i,3)=distp(i,1)*(c0*r(i)+c1) + ! lz=0 + distp(i,4)=(3.d0*rmu(3,i)**2-r(i)**2)*cost1d + ! lz=+/ + distp(i,5)=(rmu(1,i)**2-rmu(2,i)**2)*cost2d + ! lz=+/-2 + distp(i,6)=rmu(1,i)*rmu(2,i)*cost3d + ! lz=+/-1 + distp(i,7)=rmu(2,i)*rmu(3,i)*cost3d + ! lz=+/-1 + distp(i,8)=rmu(1,i)*rmu(3,i)*cost3d + end do + + ! indorbp=indorb + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=distp(i,3+ic)*distp(i,3) + end do + ! endif + end do + + if(typec.ne.1) then + fun0=distp(0,3) + fun=-dd1*distp(0,3)+c0*distp(0,1) + fun2=dd1**2*distp(0,3)-2.d0*dd1*c0*distp(0,1) + + ! indorbp=indorb + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,3+ic)*rmu(i,0) & + *fun/r(0) + if(ic.eq.1) then + if(i.ne.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost1d + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 4.d0*rmu(i,0)*fun0*cost1d + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*rmu(i,0)*fun0*cost2d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost2d + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + end if + elseif(ic.eq.4) then + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + !endif for i + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,3+ic)*(6.d0*fun/r(0)+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + !endif for indt + end if + ! + indpar=indpar+1 + indshell=indshell+5 + indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_43.f90 b/devel_tools/makefun_factory/orb_43.f90 new file mode 100644 index 0000000..3fedb51 --- /dev/null +++ b/devel_tools/makefun_factory/orb_43.f90 @@ -0,0 +1,114 @@ + ! 4d without cusp and one parmater derivative of 33 + + + dd1=dd(indpar+1) + ! if(iflagnorm.gt.2) then + ! c= & + ! &1.d0/(2.d0**3*3.d0)/dsqrt(56.d0*pi)*(2.d0*dd1)**(9.d0/2.d0) + c=dd1**4.5d0*0.0710812062076410d0 + ! endif + + c0=-c + c1=4.5d0*c/dd1 + + + do k=indtmin,indtm + distp(k,1)=dexp(-dd1*r(k)) + end do + + do i=indtmin,indtm + distp(i,3)=distp(i,1)*(c0*r(i)**2+c1*r(i)) + ! lz=0 + distp(i,4)=(3.d0*rmu(3,i)**2-r(i)**2)*cost1d + ! lz=+/ + distp(i,5)=(rmu(1,i)**2-rmu(2,i)**2)*cost2d + ! lz=+/-2 + distp(i,6)=rmu(1,i)*rmu(2,i)*cost3d + ! lz=+/-1 + distp(i,7)=rmu(2,i)*rmu(3,i)*cost3d + ! lz=+/-1 + distp(i,8)=rmu(1,i)*rmu(3,i)*cost3d + end do + + ! indorbp=indorb + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=distp(i,3+ic)*distp(i,3) + end do + ! endif + end do + + if(typec.ne.1) then + fun0=distp(0,3) + fun=-dd1*distp(0,3)+distp(0,1)*(2.d0*c0*r(0)+c1) + fun2=dd1**2*distp(0,3)+distp(0,1)* & + (-2.d0*dd1*(2.d0*c0*r(0)+c1)+2.d0*c0) + ! indorbp=indorb + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,3+ic)*rmu(i,0) & + *fun/r(0) + if(ic.eq.1) then + if(i.ne.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost1d + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 4.d0*rmu(i,0)*fun0*cost1d + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*rmu(i,0)*fun0*cost2d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost2d + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + end if + elseif(ic.eq.4) then + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + !endif for i + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,3+ic)*(6.d0*fun/r(0)+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + end if + ! + indpar=indpar+1 + indshell=indshell+5 + indorb=indorbp + + + ! derivative of 36 with respect zeta diff --git a/devel_tools/makefun_factory/orb_44.f90 b/devel_tools/makefun_factory/orb_44.f90 new file mode 100644 index 0000000..0916af0 --- /dev/null +++ b/devel_tools/makefun_factory/orb_44.f90 @@ -0,0 +1,54 @@ + ! R(r)=x*exp(-z*r**2)*(5/4/z-r**2) + + + dd1=dd(indpar+1) + ! if(iflagnorm.gt.2) then + ! c=dsqrt(2.d0)*pi**(-0.75d0)*(2.d0*dd1)**1.25d0 + c=dd1**1.25d0*1.42541094070998d0 + ! endif + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2) + end do + + ! indorbp=indorb + ! + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1)* & + (5.d0/4.d0/dd1-r(i)**2) + end do + ! endif + end do + + if(typec.ne.1) then + fun0=distp(0,1)*(5.d0/4.d0/dd1-r(0)**2) + fun=distp(0,1)*(2.d0*dd1*r(0)**2-9.d0/2.d0) + fun2=distp(0,1)*(-4.d0*dd1**2*r(0)**4 & + +15.d0*dd1*r(0)**2-9.d0/2.d0) + + ! indorbp=indorb + + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0)*(4.d0*fun+fun2) + ! endif + end do + + + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+3 + indorb=indorbp + + + ! derivative of 37 with respect to z diff --git a/devel_tools/makefun_factory/orb_45,69.f90 b/devel_tools/makefun_factory/orb_45,69.f90 new file mode 100644 index 0000000..a3f9ac3 --- /dev/null +++ b/devel_tools/makefun_factory/orb_45,69.f90 @@ -0,0 +1,122 @@ + ! d orbitals + ! R(r)= c*exp(-z r^2)*(7/4/z-r^2) + + + + ! indorbp=indorb + indparp=indpar+1 + dd1=dd(indparp) + + ! if(iflagnorm.gt.2) then + ! overall normalization + ! c=4.d0/dsqrt(3.d0)*(2.d0/pi)**(3.d0/4.d0)*dd1**(7.d0/4.d0) + c=dd1**1.75d0*1.64592278064948967213d0 + ! endif + + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2) + end do + + + do i=indtmin,indtm + ! lz=0 + distp(i,2)=(3.d0*rmu(3,i)**2-r(i)**2)*cost1d + ! lz=+/-2 + distp(i,3)=(rmu(1,i)**2-rmu(2,i)**2)*cost2d + ! lz=+/-2 + distp(i,4)=rmu(1,i)*rmu(2,i)*cost3d + ! lz=+/-1 + distp(i,5)=rmu(2,i)*rmu(3,i)*cost3d + ! lz=+/-1 + distp(i,6)=rmu(1,i)*rmu(3,i)*cost3d + end do + + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + z(indorbp,k)=distp(k,1)*(7.d0/4.d0/dd1-r(k)**2)* & + distp(k,1+ic) + end do + ! endif + end do + + + if(typec.ne.1) then + + dd1=dd(indparp) + fun0=distp(0,1)*(7.d0/4.d0/dd1-r(0)**2) + fun=distp(0,1)*(2.d0*dd1*r(0)**2-11.d0/2.d0) + fun2=distp(0,1)*(-4.d0*dd1**2*r(0)**4 & + +17.d0*dd1*r(0)**2-11.d0/2.d0) + + + ! indorbp=indorb + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0) & + *fun + if(ic.eq.1) then + if(i.ne.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost1d + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 4.d0*rmu(i,0)*fun0*cost1d + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*rmu(i,0)*fun0*cost2d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost2d + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + end if + elseif(ic.eq.4) then + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + !endif for i + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,1+ic)*(6.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+5 + indorb=indorbp + + ! derivative of 17 with respect to z diff --git a/devel_tools/makefun_factory/orb_46.f90 b/devel_tools/makefun_factory/orb_46.f90 new file mode 100644 index 0000000..a79e1f3 --- /dev/null +++ b/devel_tools/makefun_factory/orb_46.f90 @@ -0,0 +1,45 @@ + ! R(r)=c*r**2*exp(-z*r**2)*(7/4/z-r**2) + + + indshellp=indshell+1 + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + dd1=dd(indpar+1) + + ! if(iflagnorm.gt.2) then + c=4.d0*(2.d0/pi)**(3.d0/4.d0)*dd1**(7.d0/4.d0)/dsqrt(15.d0) + ! endif + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2) + end do + + do i=i0,indtm + z(indorbp,i)=distp(i,1)*(7.d0/4.d0/dd1*r(i)**2 & + -r(i)**4) + end do + + if(typec.ne.1) then + rp1=r(0)**2 + ! the first derivative / r + fun=distp(0,1)*(7.d0-15.d0*dd1*rp1 & + +4.d0*(dd1*rp1)**2)/2.d0/dd1 + ! the second derivative + fun2=distp(0,1)*(7.d0-59*dd1*rp1+50*(dd1*rp1)**2 & + -8*(dd1*rp1)**3)/2.d0/dd1 + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + z(indorbp,indt+4)=2.d0*fun+fun2 + end if + + indorb=indorbp + + ! endif + + indpar=indpar+1 + indshell=indshellp + + ! 5s single zeta derivative of 12 diff --git a/devel_tools/makefun_factory/orb_47.f90 b/devel_tools/makefun_factory/orb_47.f90 new file mode 100644 index 0000000..24af896 --- /dev/null +++ b/devel_tools/makefun_factory/orb_47.f90 @@ -0,0 +1,111 @@ + ! d orbitals cartesian !!! + ! R(r)= exp(-alpha r^2) + ! each gaussian term is normalized + + + + ! indorbp=indorb + indparp=indpar+1 + dd1=dd(indparp) + + ! if(iflagnorm.gt.2) then + ! overall normalization + c=dd1**1.75d0*1.64592278064948967213d0 + ! c=4.d0/dsqrt(3.d0)*(2.d0/pi)**(3.d0/4.d0)*dd1**(7.d0/4.d0) + ! endif + + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2) + end do + + + do i=indtmin,indtm + distp(i,2)=rmu(1,i)**2 + distp(i,3)=rmu(2,i)**2 + distp(i,4)=rmu(3,i)**2 + ! lz=+/-2 + distp(i,5)=rmu(1,i)*rmu(2,i)*cost3d + ! lz=+/-1 + distp(i,6)=rmu(2,i)*rmu(3,i)*cost3d + ! lz=+/-1 + distp(i,7)=rmu(1,i)*rmu(3,i)*cost3d + end do + + + do ic=1,6 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + z(indorbp,k)=distp(k,1)*distp(k,1+ic) + end do + ! endif + end do + + + if(typec.ne.1) then + + dd1=dd(indparp) + fun0=distp(0,1) + fun=-2.d0*dd1*distp(0,1) + fun2=fun*(1.d0-2.d0*dd1*r(0)**2) + + ! indorbp=indorb + do ic=1,6 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0) & + *fun + if(ic.le.3) then + if(i.eq.ic) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*rmu(i,0)*fun0 + end if + elseif(ic.eq.4) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + end if + elseif(ic.eq.5) then + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + end if + elseif(ic.eq.6) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + !endif for i + end if + !endif for ic + end if + !enddo for i + end do + if(ic.le.3) then + z(indorbp,indt+4)=distp(0,1+ic)*(6.d0*fun+fun2)+2.d0*distp(0,1) + else + z(indorbp,indt+4)=distp(0,1+ic)*(6.d0*fun+fun2) + end if + !endif for iocc + ! endif + ! enddo fot ic + end do + + + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+6 + indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_48.f90 b/devel_tools/makefun_factory/orb_48.f90 new file mode 100644 index 0000000..dd90854 --- /dev/null +++ b/devel_tools/makefun_factory/orb_48.f90 @@ -0,0 +1,118 @@ + ! f orbital + ! + ! - angmom = 3 + ! - type = Gaussian + ! - normalized = yes + ! - angtype = spherical + ! - npar = 1 + ! - multiplicity = 7 + ! + + indparp=indpar+1 + dd1=dd(indparp) + + c=dd1**2.25d0*1.47215808929909374563d0 + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2) + end do + + do i=indtmin,indtm + distp(i,2)=cost1f*rmu(3,i) & + *(5.d0*rmu(3,i)**2-3.d0*r(i)**2) + ! lz=0 + distp(i,3)=cost2f*rmu(1,i) & + *(5.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-1 + distp(i,4)=cost2f*rmu(2,i) & + *(5.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-1 + distp(i,5)=cost3f*rmu(3,i) & + *(rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-2 + distp(i,6)=cost3f*2.d0*rmu(3,i) & + *rmu(1,i)*rmu(2,i) + ! lz=+/-2 + distp(i,7)=cost4f*rmu(1,i) & + *(rmu(1,i)**2-3.d0*rmu(2,i)**2) + ! lz=+/-3 + distp(i,8)=cost4f*rmu(2,i) & + *(3.d0*rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-3 + end do + + do ic=1,7 + indorbp=indorb+ic + do k=i0,indtm + z(indorbp,k)=distp(k,1)*distp(k,1+ic) + end do + end do + + + if(typec.ne.1) then + + dd1=dd(indparp) + fun0=distp(0,1) + fun=-2.d0*dd1*distp(0,1) + fun2=fun*(1.d0-2.d0*dd1*r(0)**2) + + do ic=1,7 + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0) & + *fun + end do + if(ic.eq.1) then + z(indorbp,indt+1)=z(indorbp,indt+1)- & + 6.d0*cost1f*fun0*rmu(1,0)*rmu(3,0) + z(indorbp,indt+2)=z(indorbp,indt+2)- & + 6.d0*cost1f*fun0*rmu(2,0)*rmu(3,0) + z(indorbp,indt+3)=z(indorbp,indt+3)+ & + cost1f*fun0*(9.d0*rmu(3,0)**2-3.d0*r(0)**2) + elseif(ic.eq.2) then + z(indorbp,indt+1)=z(indorbp,indt+1)+ & + cost2f*fun0*(5.d0*rmu(3,0)**2-r(0)**2-2.d0*rmu(1,0)**2) + z(indorbp,indt+2)=z(indorbp,indt+2)- & + 2.d0*cost2f*fun0*rmu(2,0)*rmu(1,0) + z(indorbp,indt+3)=z(indorbp,indt+3)+ & + 8.d0*cost2f*fun0*rmu(3,0)*rmu(1,0) + elseif(ic.eq.3) then + z(indorbp,indt+1)=z(indorbp,indt+1)- & + 2.d0*cost2f*fun0*rmu(1,0)*rmu(2,0) + z(indorbp,indt+2)=z(indorbp,indt+2)+ & + cost2f*fun0*(5.d0*rmu(3,0)**2-r(0)**2-2.d0*rmu(2,0)**2) + z(indorbp,indt+3)=z(indorbp,indt+3)+ & + 8.d0*cost2f*fun0*rmu(3,0)*rmu(2,0) + elseif(ic.eq.4) then + z(indorbp,indt+1)=z(indorbp,indt+1)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(3,0) + z(indorbp,indt+2)=z(indorbp,indt+2)- & + 2.d0*cost3f*fun0*rmu(2,0)*rmu(3,0) + z(indorbp,indt+3)=z(indorbp,indt+3)+ & + cost3f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + elseif(ic.eq.5) then + z(indorbp,indt+1)=z(indorbp,indt+1)+ & + 2.d0*cost3f*fun0*rmu(2,0)*rmu(3,0) + z(indorbp,indt+2)=z(indorbp,indt+2)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(3,0) + z(indorbp,indt+3)=z(indorbp,indt+3)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(2,0) + elseif(ic.eq.6) then + z(indorbp,indt+1)=z(indorbp,indt+1)+ & + 3.d0*cost4f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + z(indorbp,indt+2)=z(indorbp,indt+2)- & + 6.d0*cost4f*fun0*rmu(1,0)*rmu(2,0) + else + z(indorbp,indt+1)=z(indorbp,indt+1)+ & + 6.d0*cost4f*fun0*rmu(1,0)*rmu(2,0) + z(indorbp,indt+2)=z(indorbp,indt+2)+ & + 3.d0*cost4f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + end if + z(indorbp,indt+4)=distp(0,1+ic)*(8.d0*fun+fun2) + end do + end if + + indpar=indpar+1 + indshell=indshell+7 + indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_49.f90 b/devel_tools/makefun_factory/orb_49.f90 new file mode 100644 index 0000000..d027586 --- /dev/null +++ b/devel_tools/makefun_factory/orb_49.f90 @@ -0,0 +1,157 @@ + ! f orbitals + ! R(r)= c*exp(-z r^2)*(9/4/z-r^2) + + + + ! indorbp=indorb + indparp=indpar+1 + dd1=dd(indparp) + + ! if(iflagnorm.gt.2) then + ! overall normalization + ! c=8.d0/dsqrt(15.d0)*(2.d0/pi)**(3.d0/4.d0)*dd1**(9.d0/4.d0) + c=dd1**2.25d0*1.47215808929909374563d0 + ! endif + + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2) + end do + + + do i=indtmin,indtm + distp(i,2)=cost1f*rmu(3,i) & + *(5.d0*rmu(3,i)**2-3.d0*r(i)**2) + ! lz=0 + distp(i,3)=cost2f*rmu(1,i) & + *(5.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-1 + distp(i,4)=cost2f*rmu(2,i) & + *(5.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-1 + distp(i,5)=cost3f*rmu(3,i) & + *(rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-2 + distp(i,6)=cost3f*2.d0*rmu(3,i) & + *rmu(1,i)*rmu(2,i) + ! lz=+/-2 + distp(i,7)=cost4f*rmu(1,i) & + *(rmu(1,i)**2-3.d0*rmu(2,i)**2) + ! lz=+/-3 + distp(i,8)=cost4f*rmu(2,i) & + *(3.d0*rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-3 + end do + + + do ic=1,7 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + z(indorbp,k)=distp(k,1)*(9.d0/4.d0/dd1-r(k)**2)* & + distp(k,1+ic) + end do + ! endif + end do + + + if(typec.ne.1) then + + dd1=dd(indparp) + fun0=distp(0,1)*(9.d0/4.d0/dd1-r(0)**2) + fun=distp(0,1)*(2.d0*dd1*r(0)**2-13.d0/2.d0) + fun2=distp(0,1)*(-4.d0*dd1**2*r(0)**4 & + +19.d0*dd1*r(0)**2-13.d0/2.d0) + + + ! indorbp=indorb + do ic=1,7 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0) & + *fun + if(ic.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 6.d0*cost1f*fun0*rmu(i,0)*rmu(3,0) + if(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost1f*fun0*(15.d0*rmu(i,0)**2-3.d0*r(0)**2) + end if + elseif(ic.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*cost2f*fun0*rmu(i,0)*rmu(1,0) + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost2f*fun0*(5.d0*rmu(3,0)**2-r(0)**2) + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 10.d0*cost2f*fun0*rmu(i,0)*rmu(1,0) + end if + elseif(ic.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*cost2f*fun0*rmu(i,0)*rmu(2,0) + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost2f*fun0*(5.d0*rmu(3,0)**2-r(0)**2) + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 10.d0*cost2f*fun0*rmu(i,0)*rmu(2,0) + end if + elseif(ic.eq.4) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*cost3f*fun0*rmu(2,0)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost3f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(2,0)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(2,0) + end if + elseif(ic.eq.6) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 3.d0*cost4f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 6.d0*cost4f*fun0*rmu(1,0)*rmu(2,0) + end if + else + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 6.d0*cost4f*fun0*rmu(1,0)*rmu(2,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 3.d0*cost4f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,1+ic)*(8.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+7 + indorb=indorbp + + + diff --git a/devel_tools/makefun_factory/orb_5.f90 b/devel_tools/makefun_factory/orb_5.f90 new file mode 100644 index 0000000..fe5dd39 --- /dev/null +++ b/devel_tools/makefun_factory/orb_5.f90 @@ -0,0 +1,43 @@ + ! normalized + + indshellp=indshell+1 + + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + dd1=dd(indpar+1) + + do k=indtmin,indtm + distp(k,1)=dexp(-dd1*r(k)) + end do + + ! if(iflagnorm.gt.2) then + ! c=dd1**2.5d0/dsqrt(3.d0*pi) + c=dd1**2.5d0*0.32573500793527994772d0 + ! endif + + do i=i0,indtm + z(indorbp,i)=c*r(i)*distp(i,1) + end do + + if(typec.ne.1) then + + fun=distp(0,1)*(1.d0-dd1*r(0)) + fun2=distp(0,1)*(dd1**2*r(0)-2.d0*dd1) + + do i=1,3 + z(indorbp,indt+i)=c*fun*rmu(i,0)/r(0) + end do + z(indorbp,indt+4)=c*2.d0*fun/r(0)+c*fun2 + + end if + + indorb=indorbp + + ! endif + indpar=indpar+1 + indshell=indshellp + + + ! 2s double Z NO CUSP diff --git a/devel_tools/makefun_factory/orb_50.f90 b/devel_tools/makefun_factory/orb_50.f90 new file mode 100644 index 0000000..feee58d --- /dev/null +++ b/devel_tools/makefun_factory/orb_50.f90 @@ -0,0 +1,55 @@ + ! R(r)=(c0*r**4+c1*r**3)*exp(-z1*r) + ! + indshellp=indshell+1 + + + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + dd1=dd(indpar+1) + ! if(iflagnorm.gt.2) then + c=dsqrt((2*dd1)**9/40320.d0/pi)/2.d0 + ! endif + + c0=-c + c1=4.5d0*c/dd1 + + do k=indtmin,indtm + distp(k,1)=r(k)*dexp(-dd1*r(k)) + end do + + do i=i0,indtm + z(indorbp,i)=(c0*r(i)**3+c1*r(i)**2)*distp(i,1) + end do + + if(typec.ne.1) then + rp1=r(0)*dd1 + rp2=rp1*rp1 + + !c the first derivative/r + fun=-distp(0,1)*(c0*r(0)*(rp1-4.d0)+c1*(rp1-3.d0)) + + !c + + !c the second derivative + fun2=distp(0,1)* & + (c0*r(0)*(12.d0-8.d0*rp1+rp2)+c1*(6.d0-6*rp1+rp2)) + !c + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*fun+fun2 + + end if + ! + indorb=indorbp + ! + ! endif + indpar=indpar+1 + indshell=indshellp + ! + + + diff --git a/devel_tools/makefun_factory/orb_51.f90 b/devel_tools/makefun_factory/orb_51.f90 new file mode 100644 index 0000000..fda86ad --- /dev/null +++ b/devel_tools/makefun_factory/orb_51.f90 @@ -0,0 +1,189 @@ + ! g single gaussian orbital + ! R(r)= exp(-alpha r^2) + ! normalized + + + ! indorbp=indorb + indparp=indpar+1 + + dd1=dd(indparp) + + ! if(iflagnorm.gt.2) then + ! overall normalization + ! c=16.d0/dsqrt(105.d0)*(2.d0/pi)**(3.d0/4.d0)*dd1**(11.d0/4.d0) + c=dd1**2.75d0*1.11284691281640568826d0 + ! endif + + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2) + end do + + + do i=indtmin,indtm + distp(i,2)=cost1g*(35.d0*rmu(3,i)**4 & + -30.d0*rmu(3,i)**2*r(i)**2+3.d0*r(i)**4) + ! lz=0 + distp(i,3)=cost2g*rmu(1,i)*rmu(3,i) & + *(7.d0*rmu(3,i)**2-3.d0*r(i)**2) + ! lz=+/-1 + distp(i,4)=cost2g*rmu(2,i)*rmu(3,i) & + *(7.d0*rmu(3,i)**2-3.d0*r(i)**2) + ! lz=+/-1 + distp(i,5)=cost3g*(rmu(1,i)**2-rmu(2,i)**2) & + *(7.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-2 + distp(i,6)=cost3g*2.d0*rmu(1,i)*rmu(2,i) & + *(7.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-2 + distp(i,7)=cost4g*rmu(1,i)*rmu(3,i) & + *(rmu(1,i)**2-3.0*rmu(2,i)**2) + ! lz=+/-3 + distp(i,8)=cost4g*rmu(2,i)*rmu(3,i) & + *(3.d0*rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-3 + distp(i,9)=cost5g*(rmu(1,i)**4 & + -6.d0*rmu(1,i)**2*rmu(2,i)**2+rmu(2,i)**4) + ! lz=+/-4 + distp(i,10)=cost5g*4.d0*rmu(1,i)*rmu(2,i) & + *(rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-4 + end do + + + do ic=1,9 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + z(indorbp,k)=distp(k,1)*distp(k,1+ic) + end do + ! endif + end do + + + if(typec.ne.1) then + + dd1=dd(indparp) + fun0=distp(0,1) + fun=-2.d0*dd1*distp(0,1) + fun2=fun*(1.d0-2.d0*dd1*r(0)**2) + + + ! indorbp=indorb + do ic=1,9 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0)*fun + end do + if(ic.eq.1) then + ! if(i.eq.1) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost1g*fun0*(-60.d0*rmu(1,0)*rmu(3,0)**2+12.d0*rmu(1,0)*r(0)**2) + ! elseif(i.eq.2) then + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost1g*fun0*(-60.d0*rmu(2,0)*rmu(3,0)**2+12.d0*rmu(2,0)*r(0)**2) + ! else + z(indorbp,indt+3)=z(indorbp,indt+3) & + +cost1g*fun0*(80.d0*rmu(3,0)**3-48.d0*rmu(3,0)*r(0)**2) + ! endif + elseif(ic.eq.2) then + ! if(i.eq.1) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost2g*fun0*(-9.d0*rmu(1,0)**2*rmu(3,0)-3.d0*rmu(2,0)**2*rmu(3,0)+4.d0*rmu(3,0)**3) + ! elseif(i.eq.2) then + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost2g*fun0*(-6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0)) + ! else + z(indorbp,indt+3)=z(indorbp,indt+3) & + +cost2g*fun0*(-3.d0*rmu(1,0)*(rmu(1,0)**2+rmu(2,0)**2-4.d0*rmu(3,0)**2)) + ! endif + elseif(ic.eq.3) then + ! if(i.eq.1) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost2g*fun0*(-6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0)) + ! elseif(i.eq.2) then + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost2g*fun0*(-3.d0*rmu(1,0)**2*rmu(3,0)-9.d0*rmu(2,0)**2*rmu(3,0)+4.d0*rmu(3,0)**3) + ! else + z(indorbp,indt+3)=z(indorbp,indt+3) & + +cost2g*fun0*(-3.d0*rmu(2,0)*(rmu(1,0)**2+rmu(2,0)**2-4.d0*rmu(3,0)**2)) + ! endif + elseif(ic.eq.4) then + ! if(i.eq.1) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost3g*fun0*(-4.d0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(3,0)**2)) + ! elseif(i.eq.2) then + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost3g*fun0*(4.d0*(rmu(2,0)**3-3.d0*rmu(2,0)*rmu(3,0)**2)) + ! else + z(indorbp,indt+3)=z(indorbp,indt+3) & + +cost3g*fun0*(12.d0*(rmu(1,0)**2-rmu(2,0)**2)*rmu(3,0)) + ! endif + elseif(ic.eq.5) then + ! if(i.eq.1) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost3g*fun0*(-2.d0*rmu(2,0)*(3.d0*rmu(1,0)**2+rmu(2,0)**2-6.d0*rmu(3,0)**2)) + ! elseif(i.eq.2) then + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost3g*fun0*(-2.d0*rmu(1,0)*(rmu(1,0)**2+3.d0*rmu(2,0)**2-6.d0*rmu(3,0)**2)) + ! else + z(indorbp,indt+3)=z(indorbp,indt+3) & + +cost3g*fun0*24.d0*rmu(1,0)*rmu(2,0)*rmu(3,0) + ! endif + elseif(ic.eq.6) then + ! if(i.eq.1) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost4g*fun0*3.d0*(rmu(1,0)**2-rmu(2,0)**2)*rmu(3,0) + ! elseif(i.eq.2) then + z(indorbp,indt+2)=z(indorbp,indt+2) & + -cost4g*fun0*6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0) + ! else + z(indorbp,indt+3)=z(indorbp,indt+3) & + +cost4g*fun0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(2,0)**2) + ! endif + elseif(ic.eq.7) then + ! if(i.eq.1) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost4g*fun0*6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0) + ! elseif(i.eq.2) then + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost4g*fun0*3.d0*(rmu(1,0)**2-rmu(2,0)**2)*rmu(3,0) + ! else + z(indorbp,indt+3)=z(indorbp,indt+3) & + +cost4g*fun0*(3.d0*rmu(1,0)**2*rmu(2,0)-rmu(2,0)**3) + ! endif + elseif(ic.eq.8) then + ! if(i.eq.1) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost5g*fun0*4.d0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(2,0)**2) + ! elseif(i.eq.2) then + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost5g*fun0*4.d0*(rmu(2,0)**3-3.d0*rmu(1,0)**2*rmu(2,0)) + ! endif + elseif(ic.eq.9) then + ! if(i.eq.1) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost5g*fun0*4.d0*(3.d0*rmu(1,0)**2*rmu(2,0)-rmu(2,0)**3) + ! elseif(i.eq.2) then + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost5g*fun0*4.d0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(2,0)**2) + ! endif + end if + !enddo for i + ! enddo + z(indorbp,indt+4)=distp(0,1+ic)*(10.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+9 + indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_52.f90 b/devel_tools/makefun_factory/orb_52.f90 new file mode 100644 index 0000000..b2a04e9 --- /dev/null +++ b/devel_tools/makefun_factory/orb_52.f90 @@ -0,0 +1,193 @@ + ! g single gaussian orbital + ! derivative of 51 + ! R(r)= exp(-alpha r^2) + ! normalized + + + ! indorbp=indorb + indparp=indpar+1 + + dd1=dd(indparp) + + ! if(iflagnorm.gt.2) then + ! overall normalization + ! c=16.d0/dsqrt(105.d0)*(2.d0/pi)**(3.d0/4.d0)*dd1**(11.d0/4.d0) + c=dd1**2.75d0*1.11284691281640568826d0 + ! endif + + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2) + end do + + + do i=indtmin,indtm + distp(i,2)=cost1g*(35.d0*rmu(3,i)**4 & + -30.d0*rmu(3,i)**2*r(i)**2+3.d0*r(i)**4) + ! lz=0 + distp(i,3)=cost2g*rmu(1,i)*rmu(3,i) & + *(7.d0*rmu(3,i)**2-3.d0*r(i)**2) + ! lz=+/-1 + distp(i,4)=cost2g*rmu(2,i)*rmu(3,i) & + *(7.d0*rmu(3,i)**2-3.d0*r(i)**2) + ! lz=+/-1 + distp(i,5)=cost3g*(rmu(1,i)**2-rmu(2,i)**2) & + *(7.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-2 + distp(i,6)=cost3g*2.d0*rmu(1,i)*rmu(2,i) & + *(7.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-2 + distp(i,7)=cost4g*rmu(1,i)*rmu(3,i) & + *(rmu(1,i)**2-3.0*rmu(2,i)**2) + ! lz=+/-3 + distp(i,8)=cost4g*rmu(2,i)*rmu(3,i) & + *(3.d0*rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-3 + distp(i,9)=cost5g*(rmu(1,i)**4 & + -6.d0*rmu(1,i)**2*rmu(2,i)**2+rmu(2,i)**4) + ! lz=+/-4 + distp(i,10)=cost5g*4.d0*rmu(1,i)*rmu(2,i) & + *(rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-4 + end do + + + do ic=1,9 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + z(indorbp,k)=distp(k,1)*(11.d0/4.d0/dd1-r(k)**2)* & + distp(k,1+ic) + end do + ! endif + end do + + + if(typec.ne.1) then + + dd1=dd(indparp) + fun0=distp(0,1)*(11.d0/4.d0/dd1-r(0)**2) + fun=distp(0,1)*(2.d0*dd1*r(0)**2-15.d0/2.d0) + fun2=distp(0,1)*(-4.d0*dd1**2*r(0)**4 & + +21.d0*dd1*r(0)**2-15.d0/2.d0) + + + ! indorbp=indorb + do ic=1,9 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0)*fun + if(ic.eq.1) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost1g*fun0*(-60.d0*rmu(1,0)*rmu(3,0)**2+12.d0*rmu(1,0)*r(0)**2) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost1g*fun0*(-60.d0*rmu(2,0)*rmu(3,0)**2+12.d0*rmu(2,0)*r(0)**2) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost1g*fun0*(80.d0*rmu(3,0)**3-48.d0*rmu(3,0)*r(0)**2) + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-9.d0*rmu(1,0)**2*rmu(3,0)-3.d0*rmu(2,0)**2*rmu(3,0)+4.d0*rmu(3,0)**3) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0)) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-3.d0*rmu(1,0)*(rmu(1,0)**2+rmu(2,0)**2-4.d0*rmu(3,0)**2)) + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0)) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-3.d0*rmu(1,0)**2*rmu(3,0)-9.d0*rmu(2,0)**2*rmu(3,0)+4.d0*rmu(3,0)**3) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-3.d0*rmu(2,0)*(rmu(1,0)**2+rmu(2,0)**2-4.d0*rmu(3,0)**2)) + end if + elseif(ic.eq.4) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(-4.d0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(3,0)**2)) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(4.d0*(rmu(2,0)**3-3.d0*rmu(2,0)*rmu(3,0)**2)) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(12.d0*(rmu(1,0)**2-rmu(2,0)**2)*rmu(3,0)) + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(-2.d0*rmu(2,0)*(3.d0*rmu(1,0)**2+rmu(2,0)**2-6.d0*rmu(3,0)**2)) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(-2.d0*rmu(1,0)*(rmu(1,0)**2+3.d0*rmu(2,0)**2-6.d0*rmu(3,0)**2)) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*24.d0*rmu(1,0)*rmu(2,0)*rmu(3,0) + end if + elseif(ic.eq.6) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*3.d0*(rmu(1,0)**2-rmu(2,0)**2)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + -cost4g*fun0*6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(2,0)**2) + end if + elseif(ic.eq.7) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*3.d0*(rmu(1,0)**2-rmu(2,0)**2)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*(3.d0*rmu(1,0)**2*rmu(2,0)-rmu(2,0)**3) + end if + elseif(ic.eq.8) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost5g*fun0*4.d0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(2,0)**2) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost5g*fun0*4.d0*(rmu(2,0)**3-3.d0*rmu(1,0)**2*rmu(2,0)) + end if + elseif(ic.eq.9) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost5g*fun0*4.d0*(3.d0*rmu(1,0)**2*rmu(2,0)-rmu(2,0)**3) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost5g*fun0*4.d0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(2,0)**2) + end if + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,1+ic)*(10.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+9 + indorb=indorbp + + + + diff --git a/devel_tools/makefun_factory/orb_55.f90 b/devel_tools/makefun_factory/orb_55.f90 new file mode 100644 index 0000000..a929d2b --- /dev/null +++ b/devel_tools/makefun_factory/orb_55.f90 @@ -0,0 +1,191 @@ + ! g single Slater orbital + ! R(r)= exp(-alpha r) + ! normalized + + + ! indorbp=indorb + indparp=indpar+1 + + dd1=dd(indparp) + + ! if(iflagnorm.gt.2) then + ! overall normalization + ! l = 4 + ! \int d\omega Y*Y = 4 pi / (2 l + 1) + ! \int dr r^{2 l + 2} Exp [- 2 dd1 r^2 ] = 7 * 5**2 * 3**4 / 2**3 / dd1**11 + ! c=1.d0/dsqrt(7.d0)*(2.d0/pi)**(1.d0/2.d0)*dd1**(11.d0/2.d0)/3.d0/5.d0 + c=dd1**5.5d0*.020104801169736915d0 + ! endif + + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + end do + + + do i=indtmin,indtm + distp(i,2)=cost1g*(35.d0*rmu(3,i)**4 & + -30.d0*rmu(3,i)**2*r(i)**2+3.d0*r(i)**4) + ! lz=0 + distp(i,3)=cost2g*rmu(1,i)*rmu(3,i) & + *(7.d0*rmu(3,i)**2-3.d0*r(i)**2) + ! lz=+/-1 + distp(i,4)=cost2g*rmu(2,i)*rmu(3,i) & + *(7.d0*rmu(3,i)**2-3.d0*r(i)**2) + ! lz=+/-1 + distp(i,5)=cost3g*(rmu(1,i)**2-rmu(2,i)**2) & + *(7.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-2 + distp(i,6)=cost3g*2.d0*rmu(1,i)*rmu(2,i) & + *(7.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-2 + distp(i,7)=cost4g*rmu(1,i)*rmu(3,i) & + *(rmu(1,i)**2-3.0*rmu(2,i)**2) + ! lz=+/-3 + distp(i,8)=cost4g*rmu(2,i)*rmu(3,i) & + *(3.d0*rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-3 + distp(i,9)=cost5g*(rmu(1,i)**4 & + -6.d0*rmu(1,i)**2*rmu(2,i)**2+rmu(2,i)**4) + ! lz=+/-4 + distp(i,10)=cost5g*4.d0*rmu(1,i)*rmu(2,i) & + *(rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-4 + end do + + + do ic=1,9 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + z(indorbp,k)=distp(k,1)*distp(k,1+ic) + end do + ! endif + end do + + + if(typec.ne.1) then + + dd1=dd(indparp) + fun0=distp(0,1) + fun=-dd1*distp(0,1)/r(0) + fun2=dd1**2*distp(0,1) + + + ! indorbp=indorb + do ic=1,9 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0)*fun + if(ic.eq.1) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost1g*fun0*(-60.d0*rmu(1,0)*rmu(3,0)**2+12.d0*rmu(1,0)*r(0)**2) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost1g*fun0*(-60.d0*rmu(2,0)*rmu(3,0)**2+12.d0*rmu(2,0)*r(0)**2) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost1g*fun0*(80.d0*rmu(3,0)**3-48.d0*rmu(3,0)*r(0)**2) + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-9.d0*rmu(1,0)**2*rmu(3,0)-3.d0*rmu(2,0)**2*rmu(3,0)+4.d0*rmu(3,0)**3) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0)) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-3.d0*rmu(1,0)*(rmu(1,0)**2+rmu(2,0)**2-4.d0*rmu(3,0)**2)) + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0)) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-3.d0*rmu(1,0)**2*rmu(3,0)-9.d0*rmu(2,0)**2*rmu(3,0)+4.d0*rmu(3,0)**3) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-3.d0*rmu(2,0)*(rmu(1,0)**2+rmu(2,0)**2-4.d0*rmu(3,0)**2)) + end if + elseif(ic.eq.4) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(-4.d0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(3,0)**2)) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(4.d0*(rmu(2,0)**3-3.d0*rmu(2,0)*rmu(3,0)**2)) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(12.d0*(rmu(1,0)**2-rmu(2,0)**2)*rmu(3,0)) + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(-2.d0*rmu(2,0)*(3.d0*rmu(1,0)**2+rmu(2,0)**2-6.d0*rmu(3,0)**2)) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(-2.d0*rmu(1,0)*(rmu(1,0)**2+3.d0*rmu(2,0)**2-6.d0*rmu(3,0)**2)) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*24.d0*rmu(1,0)*rmu(2,0)*rmu(3,0) + end if + elseif(ic.eq.6) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*3.d0*(rmu(1,0)**2-rmu(2,0)**2)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + -cost4g*fun0*6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(2,0)**2) + end if + elseif(ic.eq.7) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*3.d0*(rmu(1,0)**2-rmu(2,0)**2)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*(3.d0*rmu(1,0)**2*rmu(2,0)-rmu(2,0)**3) + end if + elseif(ic.eq.8) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost5g*fun0*4.d0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(2,0)**2) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost5g*fun0*4.d0*(rmu(2,0)**3-3.d0*rmu(1,0)**2*rmu(2,0)) + end if + elseif(ic.eq.9) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost5g*fun0*4.d0*(3.d0*rmu(1,0)**2*rmu(2,0)-rmu(2,0)**3) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost5g*fun0*4.d0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(2,0)**2) + end if + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,1+ic)*(10.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+9 + indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_56.f90 b/devel_tools/makefun_factory/orb_56.f90 new file mode 100644 index 0000000..69e6003 --- /dev/null +++ b/devel_tools/makefun_factory/orb_56.f90 @@ -0,0 +1,191 @@ + ! g single Slater orbital derivative of 55 + ! R(r)= (11.d0/2.0 1/dd1 - r) * exp(-alpha r) + ! normalized + + + ! indorbp=indorb + indparp=indpar+1 + + dd1=dd(indparp) + + ! if(iflagnorm.gt.2) then + ! overall normalization + ! l = 4 + ! \int d\omega Y*Y = 4 pi / (2 l + 1) + ! \int dr r^{2 l + 2} Exp [- 2 dd1 r^2 ] = 7 * 5**2 * 3**4 / 2**3 / dd1**11 + c=dd1**5.5d0*.020104801169736915d0 + ! c=1.d0/dsqrt(7.d0)*(2.d0/pi)**(1.d0/2.d0)*dd1**(11.d0/2.d0)/3.d0/5.d0 + ! endif + + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + end do + + + do i=indtmin,indtm + distp(i,2)=cost1g*(35.d0*rmu(3,i)**4 & + -30.d0*rmu(3,i)**2*r(i)**2+3.d0*r(i)**4) + ! lz=0 + distp(i,3)=cost2g*rmu(1,i)*rmu(3,i) & + *(7.d0*rmu(3,i)**2-3.d0*r(i)**2) + ! lz=+/-1 + distp(i,4)=cost2g*rmu(2,i)*rmu(3,i) & + *(7.d0*rmu(3,i)**2-3.d0*r(i)**2) + ! lz=+/-1 + distp(i,5)=cost3g*(rmu(1,i)**2-rmu(2,i)**2) & + *(7.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-2 + distp(i,6)=cost3g*2.d0*rmu(1,i)*rmu(2,i) & + *(7.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-2 + distp(i,7)=cost4g*rmu(1,i)*rmu(3,i) & + *(rmu(1,i)**2-3.0*rmu(2,i)**2) + ! lz=+/-3 + distp(i,8)=cost4g*rmu(2,i)*rmu(3,i) & + *(3.d0*rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-3 + distp(i,9)=cost5g*(rmu(1,i)**4 & + -6.d0*rmu(1,i)**2*rmu(2,i)**2+rmu(2,i)**4) + ! lz=+/-4 + distp(i,10)=cost5g*4.d0*rmu(1,i)*rmu(2,i) & + *(rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-4 + end do + + + do ic=1,9 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + z(indorbp,k)=distp(k,1)*distp(k,1+ic)*(11.d0/2.d0/dd1 - r(k)) + end do + ! endif + end do + + + if(typec.ne.1) then + + dd1=dd(indparp) + fun0=distp(0,1)*(11.d0/2.d0/dd1-r(0)) + fun=distp(0,1)*(dd1-13.d0/2.d0/r(0)) + fun2=dd1*distp(0,1)*(15.d0/2.d0-dd1*r(0)) + + + ! indorbp=indorb + do ic=1,9 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0)*fun + if(ic.eq.1) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost1g*fun0*(-60.d0*rmu(1,0)*rmu(3,0)**2+12.d0*rmu(1,0)*r(0)**2) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost1g*fun0*(-60.d0*rmu(2,0)*rmu(3,0)**2+12.d0*rmu(2,0)*r(0)**2) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost1g*fun0*(80.d0*rmu(3,0)**3-48.d0*rmu(3,0)*r(0)**2) + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-9.d0*rmu(1,0)**2*rmu(3,0)-3.d0*rmu(2,0)**2*rmu(3,0)+4.d0*rmu(3,0)**3) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0)) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-3.d0*rmu(1,0)*(rmu(1,0)**2+rmu(2,0)**2-4.d0*rmu(3,0)**2)) + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0)) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-3.d0*rmu(1,0)**2*rmu(3,0)-9.d0*rmu(2,0)**2*rmu(3,0)+4.d0*rmu(3,0)**3) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-3.d0*rmu(2,0)*(rmu(1,0)**2+rmu(2,0)**2-4.d0*rmu(3,0)**2)) + end if + elseif(ic.eq.4) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(-4.d0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(3,0)**2)) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(4.d0*(rmu(2,0)**3-3.d0*rmu(2,0)*rmu(3,0)**2)) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(12.d0*(rmu(1,0)**2-rmu(2,0)**2)*rmu(3,0)) + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(-2.d0*rmu(2,0)*(3.d0*rmu(1,0)**2+rmu(2,0)**2-6.d0*rmu(3,0)**2)) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(-2.d0*rmu(1,0)*(rmu(1,0)**2+3.d0*rmu(2,0)**2-6.d0*rmu(3,0)**2)) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*24.d0*rmu(1,0)*rmu(2,0)*rmu(3,0) + end if + elseif(ic.eq.6) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*3.d0*(rmu(1,0)**2-rmu(2,0)**2)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + -cost4g*fun0*6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(2,0)**2) + end if + elseif(ic.eq.7) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*3.d0*(rmu(1,0)**2-rmu(2,0)**2)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*(3.d0*rmu(1,0)**2*rmu(2,0)-rmu(2,0)**3) + end if + elseif(ic.eq.8) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost5g*fun0*4.d0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(2,0)**2) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost5g*fun0*4.d0*(rmu(2,0)**3-3.d0*rmu(1,0)**2*rmu(2,0)) + end if + elseif(ic.eq.9) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost5g*fun0*4.d0*(3.d0*rmu(1,0)**2*rmu(2,0)-rmu(2,0)**3) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost5g*fun0*4.d0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(2,0)**2) + end if + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,1+ic)*(10.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+9 + indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_57.f90 b/devel_tools/makefun_factory/orb_57.f90 new file mode 100644 index 0000000..f6727bf --- /dev/null +++ b/devel_tools/makefun_factory/orb_57.f90 @@ -0,0 +1,72 @@ + ! orbital 1s (no cusp) - STO regolarized for r->0 + ! R(r)= C(z) * P(z*r) * exp(-z*r) + ! P(x) = (x+a)^n/(1+(x+a)^n) with a so that P(0)==dP(0)/dx + ! C(z) = const * z^(3/2) normalization + ! the following definitions are in module constants + ! n -> costSTO1s_n = 4 + ! a -> costSTO1s_a = 1.2263393530877080588 + ! const(n) -> costSTO1s_c = 0.58542132302621750732 + ! + ! + + + indshellp=indshell+1 + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + + dd1=dd(indpar+1) + + ! if(iflagnorm.gt.2) then + ! if(dd1.gt.0.) then + c=costSTO1s_c*dd1**1.5d0 + ! else + ! c=1.d0 + ! endif + ! endif + + do i=indtmin,indtm + distp(i,1)=c*dexp(-dd1*r(i)) + end do + + do i=i0,indtm + rp4=(dd1*r(i)+costSTO1s_a)**costSTO1s_n + z(indorbp,i)=distp(i,1)*rp4/(1.d0+rp4) + end do + + if(typec.ne.1) then + rp1=dd1*r(0)+costSTO1s_a + rp2=rp1**2 + rp4=rp1**costSTO1s_n + rp6=rp4**2 + ! the first derivative /r + !fun=-z(indorbp,0)*((dd1**2*(-costSTO1s_n+rp1+rp1*rp4))/ & + ! &(rp1*(-costSTO1s_a+rp1)*(1.d0+rp4))) + fun=-distp(0,1)*rp4* & + ((dd1**2*(-costSTO1s_n+rp1+rp1*rp4))/ & + (rp1*(-costSTO1s_a+rp1)*(1.d0+rp4)**2)) + ! the second derivative derivative + fun2=+distp(0,1)*rp4*(dd1**2*(-(costSTO1s_n**2* & + (-1.d0+rp4))-costSTO1s_n*(1.d0+2.d0*rp1)*(1.d0+rp4) & + +rp2*(1.d0+rp4)**2)) / (rp2*(1.d0+rp4)**3) + ! gradient: dR(r)/dr_i=r_i*fun + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + ! laplacian = 2*fun+fun2 + z(indorbp,indt+4)=2.d0*fun+fun2 + end if + + indorb=indorbp + + ! endif + + indpar=indpar+1 + indshell=indshellp + + + + + + diff --git a/devel_tools/makefun_factory/orb_6.f90 b/devel_tools/makefun_factory/orb_6.f90 new file mode 100644 index 0000000..21b82f2 --- /dev/null +++ b/devel_tools/makefun_factory/orb_6.f90 @@ -0,0 +1,52 @@ + ! normalized + + indshellp=indshell+1 + + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + dd1=dd(indpar+1) + dd2=dd(indpar+2) + peff=dd(indpar+3) + + ! if(iflagnorm.gt.2) then + ! c= WRONG + ! &0.5*dsqrt((1.d0/dd1**5/32.d0+2.d0*peff/(dd1+dd2)**5 + ! &+peff**2/dd2**5/32.d0)/(24.d0*pi)) + + c=1.d0/dsqrt((3.d0*pi)* & + (1.d0/dd1**5+ 64.d0*peff/(dd1+dd2)**5+peff**2/dd2**5)) + + ! endif + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + distp(k,2)=c*dexp(-dd2*r(k)) + end do + + do i=i0,indtm + z(indorbp,i)=r(i)*(distp(i,1)+distp(i,2)*peff) + end do + + if(typec.ne.1) then + + fun=distp(0,1)*(1.d0-dd1*r(0)) & + +peff*distp(0,2)*(1.d0-dd2*r(0)) + fun2=distp(0,1)*(dd1**2*r(0)-2.d0*dd1)+peff*distp(0,2) & + *(dd2**2*r(0)-2.d0*dd2) + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0)/r(0) + end do + z(indorbp,indt+4)=(2.d0*fun/r(0)+fun2) + + end if + + indorb=indorbp + + ! endif + indpar=indpar+3 + indshell=indshellp + + ! 2s double Z NO CUSP diff --git a/devel_tools/makefun_factory/orb_60.f90 b/devel_tools/makefun_factory/orb_60.f90 new file mode 100644 index 0000000..12d3099 --- /dev/null +++ b/devel_tools/makefun_factory/orb_60.f90 @@ -0,0 +1,44 @@ + ! R(r)=r**3*exp(-z*r**2) single zeta + + + + indshellp=indshell+1 + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + dd1=dd(indpar+1) + + ! if(iflagnorm.gt.2) then + ! c=2.d0/pi**(3.d0/4.d0)*(2.d0*dd1)**(9.d0/4.d0)*dsqrt(2.d0/105.d0) + c=dd1**2.25d0*.55642345640820284397d0 + ! endif + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2)*r(k) + end do + + do i=i0,indtm + z(indorbp,i)=distp(i,1)*r(i)**2 + end do + + if(typec.ne.1) then + rp1=r(0)**2*dd1 + ! the first derivative / r + fun=distp(0,1)*(3.d0-2.d0*rp1) + ! the second derivative + fun2=distp(0,1)*(6.d0-14.d0*rp1+4.d0*rp1**2) + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + z(indorbp,indt+4)=2.d0*fun+fun2 + end if + + indorb=indorbp + + ! endif + + indpar=indpar+1 + indshell=indshellp + + ! 3s -derivative of 60 with respect to dd1 diff --git a/devel_tools/makefun_factory/orb_61.f90 b/devel_tools/makefun_factory/orb_61.f90 new file mode 100644 index 0000000..aa90f8b --- /dev/null +++ b/devel_tools/makefun_factory/orb_61.f90 @@ -0,0 +1,49 @@ + ! R(r)=c (-r**5*exp(-z1*r**2)+c1 r**3 exp(-z1*r**2)) + + + indshellp=indshell+1 + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + dd1=dd(indpar+1) + + ! if(iflagnorm.gt.2) then + ! c=2.d0/pi**(3.d0/4.d0)*(2.d0*dd1)**(9.d0/4.d0)*dsqrt(2.d0/105.d0) + c=dd1**2.25d0*.55642345640820284397d0 + ! endif + + c1=2.25d0/dd1 + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2)*r(k) + end do + + do i=i0,indtm + z(indorbp,i)=(-r(i)**4+c1*r(i)**2)*distp(i,1) + end do + + + if(typec.ne.1) then + rp1=r(0)**2 + rp2=rp1*dd1 + + fun=c1*distp(0,1)*(3.d0-2.d0*rp2) & + +distp(0,1)*rp1*(-5.d0+2.d0*rp2) + ! the second derivative + fun2=c1*distp(0,1)*(6.d0-14.d0*rp2+4.d0*rp2**2) & + +distp(0,1)*rp1*(-20.d0+22.d0*rp2-4.d0*rp2**2) + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + z(indorbp,indt+4)=2.d0*fun+fun2 + end if + + indorb=indorbp + + ! endif + indpar=indpar+1 + indshell=indshellp + + ! single gaussianx r p orbitals diff --git a/devel_tools/makefun_factory/orb_62.f90 b/devel_tools/makefun_factory/orb_62.f90 new file mode 100644 index 0000000..b2438e6 --- /dev/null +++ b/devel_tools/makefun_factory/orb_62.f90 @@ -0,0 +1,54 @@ + + + + dd1=dd(indpar+1) + + + ! if(iflagnorm.gt.2) then + ! c=2.d0/pi**0.75d0*(2.d0*dd1)**1.75d0/dsqrt(5.d0) + c=dd1**1.75d0*1.2749263037197753d0 + ! endif + + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2) + end do + + ! indorbp=indorb + ! + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1)*r(i) + end do + ! endif + end do + + if(typec.ne.1) then + fun0=distp(0,1)*r(0) + cost=2.d0*dd1*r(0)**2 + fun=distp(0,1)*(1.d0-cost)/r(0) + fun2=2.d0*dd1*fun0*(cost-3.d0) + ! indorbp=indorb + + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0)*(4.d0*fun+fun2) + ! endif + end do + + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+3 + indorb=indorbp + + ! derivative of 62 with respect zeta diff --git a/devel_tools/makefun_factory/orb_63.f90 b/devel_tools/makefun_factory/orb_63.f90 new file mode 100644 index 0000000..f00a781 --- /dev/null +++ b/devel_tools/makefun_factory/orb_63.f90 @@ -0,0 +1,62 @@ + ! R(r)=c x*exp(-z*r**2)*r (c1 - r^2) + + + dd1=dd(indpar+1) + ! if(iflagnorm.gt.2) then + c=dd1**1.75d0*1.2749263037197753d0 + ! c=2.d0/pi**0.75d0*(2.d0*dd1)**1.75d0/dsqrt(5.d0) + ! endif + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2) + end do + c1=1.75d0/dd1 + + ! indorbp=indorb + ! + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1)* & + (c1-r(i)**2)*r(i) + end do + ! endif + end do + + if(typec.ne.1) then + + + + rp1=dd1*r(0)**2 + cost=2.d0*rp1 + + fun0=distp(0,1)*r(0)*(c1-r(0)**2) + fun=distp(0,1)*(c1*(1.d0-cost)/r(0)+ & + (-3.d0+cost)*r(0)) + ! My bug !!! + ! fun2=distp(0,1)*(c1*2.d0*dd1*fun0*(cost-3.d0) + ! &-2.d0*r(0)*(3.d0-7.d0*rp1+2.d0*rp1**2)) + fun2=-2.d0*distp(0,1)*r(0)* & + (3.d0-7.d0*rp1+2.d0*rp1**2+c1*dd1*(3.d0-cost)) + + + ! indorbp=indorb + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0)*(4.d0*fun+fun2) + ! endif + end do + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+3 + indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_64.f90 b/devel_tools/makefun_factory/orb_64.f90 new file mode 100644 index 0000000..654685f --- /dev/null +++ b/devel_tools/makefun_factory/orb_64.f90 @@ -0,0 +1,121 @@ + ! d orbitals + ! R(r)= r exp(-alpha r^2) + ! each gaussian term is normalized + + + + ! indorbp=indorb + indparp=indpar+1 + + dd1=dd(indparp) + + ! if(iflagnorm.gt.2) then + ! c=8.d0/dsqrt(21.d0)*(2.d0/pi)**(3.d0/4.d0)*dd1**(9.d0/4.d0) + c=dd1**2.25d0*1.24420067280413253d0 + ! endif + + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2) + end do + + + do i=indtmin,indtm + ! lz=0 + distp(i,2)=(3.d0*rmu(3,i)**2-r(i)**2)*cost1d + ! lz=+/-2 + distp(i,3)=(rmu(1,i)**2-rmu(2,i)**2)*cost2d + ! lz=+/-2 + distp(i,4)=rmu(1,i)*rmu(2,i)*cost3d + ! lz=+/-1 + distp(i,5)=rmu(2,i)*rmu(3,i)*cost3d + ! lz=+/-1 + distp(i,6)=rmu(1,i)*rmu(3,i)*cost3d + end do + + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + z(indorbp,k)=distp(k,1)*distp(k,1+ic)*r(k) + end do + ! endif + end do + + + if(typec.ne.1) then + + dd1=dd(indparp) + + rp1=2.d0*dd1*r(0) + rp2=rp1*r(0) + fun0=distp(0,1)*r(0) + fun=(1.d0-rp2)*distp(0,1)/r(0) + fun2=distp(0,1)*rp1*(rp2-3.d0) + + + ! indorbp=indorb + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0) & + *fun + if(ic.eq.1) then + if(i.ne.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost1d + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 4.d0*rmu(i,0)*fun0*cost1d + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*rmu(i,0)*fun0*cost2d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost2d + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + end if + elseif(ic.eq.4) then + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + !endif for i + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,1+ic)*(6.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + end if + + indpar=indpar+1 + indshell=indshell+5 + indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_65.f90 b/devel_tools/makefun_factory/orb_65.f90 new file mode 100644 index 0000000..a53a53c --- /dev/null +++ b/devel_tools/makefun_factory/orb_65.f90 @@ -0,0 +1,135 @@ + ! d orbitals + ! R(r)= c0 r^3 exp(-alpha r^2)+ c1 r exp(-alpha r^2) + ! each gaussian term is normalized + + + + ! indorbp=indorb + indparp=indpar+1 + + dd1=dd(indparp) + + ! if(iflagnorm.gt.2) then + ! overall normalization to be done + ! c=8.d0/dsqrt(21.d0)*(2.d0/pi)**(3.d0/4.d0)*dd1**(9.d0/4.d0) + c=dd1**2.25d0*1.24420067280413253d0 + ! endif + + c0=-c + + c1=2.25d0*c/dd1 + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2) + end do + + + do i=indtmin,indtm + ! lz=0 + distp(i,2)=(3.d0*rmu(3,i)**2-r(i)**2)*cost1d + ! lz=+/-2 + distp(i,3)=(rmu(1,i)**2-rmu(2,i)**2)*cost2d + ! lz=+/-2 + distp(i,4)=rmu(1,i)*rmu(2,i)*cost3d + ! lz=+/-1 + distp(i,5)=rmu(2,i)*rmu(3,i)*cost3d + ! lz=+/-1 + distp(i,6)=rmu(1,i)*rmu(3,i)*cost3d + end do + + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + z(indorbp,k)=distp(k,1)*(c0*distp(k,1+ic)*r(k)**3+ & + c1*r(k)) + end do + ! endif + end do + + + if(typec.ne.1) then + + dd1=dd(indparp) + + rp1=2.d0*dd1*r(0) + rp2=rp1*r(0) + fun0=distp(0,1)*(c1*r(0)+c0*r(0)**3) + fun=(c1*(1.d0-rp2)+c0*r(0)**2*(3.d0-rp2)) & + *distp(0,1)/r(0) + + fun2=distp(0,1)*(c1*rp1*(rp2-3.d0)+c0*r(0) & + *(3.d0-3.5d0*rp2+0.5d0*rp2**2)) + + + ! indorbp=indorb + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0) & + *fun + if(ic.eq.1) then + if(i.ne.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost1d + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 4.d0*rmu(i,0)*fun0*cost1d + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*rmu(i,0)*fun0*cost2d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost2d + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + end if + elseif(ic.eq.4) then + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + !endif for i + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,1+ic)*(6.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+5 + indorb=indorbp + + + + + ! ******************* END GAUSSIAN BASIS ************************ + + ! ** ** ** ** ** ** ** JASTROW ORBITALS ** ** ** ** ** ** ** ** * diff --git a/devel_tools/makefun_factory/orb_66.f90 b/devel_tools/makefun_factory/orb_66.f90 new file mode 100644 index 0000000..bfb303d --- /dev/null +++ b/devel_tools/makefun_factory/orb_66.f90 @@ -0,0 +1,101 @@ + ! derivative of 57 (orbital 1s STO regolarized for r->0) + ! dR(r)/dz with R(r)= C(z) * P(z*r) * exp(-z*r) + ! P(x) = (x+a)^n/(1+(x+a)^n) with a so that P(0)==dP(0)/dx + ! C(z) = const * z^(3/2) normalization + ! the following definitions are in module constants + ! n -> costSTO1s_n = 4 + ! a -> costSTO1s_a = 1.2263393530877080588 + ! const(n) -> costSTO1s_c = 0.58542132302621750732 + ! + + + indshellp=indshell+1 + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + + dd1=dd(indpar+1) + + ! if(iflagnorm.gt.2) then + ! if(dd1.gt.0.) then + c=costSTO1s_c*dd1**1.5d0 + ! else + ! c=1.d0 + ! endif + ! endif + + do i=indtmin,indtm + distp(i,1)=c*dexp(-dd1*r(i)) + end do + + do i=i0,indtm + rp1=dd1*r(i)+costSTO1s_a + rp4=rp1**costSTO1s_n + z(indorbp,i)=distp(i,1)*rp4/(1.d0+rp4)* & + (1.5d0/dd1 + r(i)* & + (-1.d0+(costSTO1s_n)/(rp1*(1.d0+rp4)))) + end do + + if(typec.ne.1) then + rp1=dd1*r(0)+costSTO1s_a + rp2=rp1**2 + rp4=rp1**costSTO1s_n + rp6=rp4**2 + ! the first derivative /r + fun=distp(0,1)*(dd1*rp4*(-2.d0*costSTO1s_a*(costSTO1s_n**2* & + (-1.d0+rp4)+costSTO1s_n*(1.d0+2.d0*rp1)*(1.d0+rp4)-rp2* & + (1.d0+rp4)**2) +rp1*(2*costSTO1s_n**2*(-1+rp4)+costSTO1s_n & + *(-3.d0+4.d0*rp1)*(1.d0+rp4)-rp1*(-5.d0+2.d0*rp1)*(1.d0+ & + rp4)**2)))/(2.d0*rp2*(costSTO1s_a-rp1)*(1.d0+rp4)**3) + + ! fun=+distp(0,1)*rp4/(1.d0+rp4)*(1.5d0/dd1 + r(0)* & + ! &(-1.d0+(costSTO1s_n)/(rp1*(1.d0+rp4)))) & + ! &*(dd1*(2.d0 + 5.d0/(-dd1*r(0)) + & + ! &(4.d0*costSTO1s_n**2)/(rp2*(1.d0+rp4)**2) + & + ! &(costSTO1s_n*((3.d0 - 2.d0*costSTO1s_n - 4.d0*rp1)*rp1& + ! &+ 2.d0*costSTO1s_a*(1.d0+costSTO1s_n+2.d0*rp1)))/ & + ! &(rp2*(dd1*r(0))*(1 + rp4))))/2.d0 + + ! the second derivative derivative + fun2=-distp(0,1)*(dd1*rp4*(rp1*(-(costSTO1s_n*(-3.d0-8.d0*rp1+ & + 6.d0*rp2)*(1.d0+rp4)**2)+rp2*(-7.d0+2.d0*rp1)*(1.d0+rp4)**3- & + costSTO1s_n**2*(-1.d0+6.d0*rp1)*(-1.d0+rp6)-2*costSTO1s_n**3*& + (1.d0+rp4*(-4.d0+rp4))) + 2.d0*costSTO1s_a*(-(rp1*rp2*(1.d0 +& + rp4)**3) + 3.d0*costSTO1s_n**2*(1.d0+rp1)*(-1.d0+rp6)+ & + costSTO1s_n*(1.d0+rp4)**2*(2.d0+3.d0*rp1*(1.d0+rp1)) + & + costSTO1s_n**3*(1.d0+rp4*(-4.d0+rp4)))))/ & + (2.d0*rp1*rp2*(1+rp4)**4) + + ! fun2=-distp(0,1)*rp4/(1.d0+rp4)*(1.5d0/dd1 + r(0)*& + ! &(-1.d0+(costSTO1s_n)/(rp1*(1.d0+rp4)))) & + ! &*(dd1*(rp1*(-(costSTO1s_n*(-3 - 8*rp1 & + ! &+ 6*rp2)*(1 + rp4)**2) + rp2*(-7 + 2*rp1)*(1 + rp4)**3 - & + ! &costSTO1s_n**2*(-1 + 6*rp1)*(-1 + rp6) - 2*costSTO1s_n**3* & + ! &(1 + rp4*(-4 + rp4))) - 2*costSTO1s_a*(-(rp1*rp2*(1 + rp4)**3)& + ! &+ 3*costSTO1s_n**2*(1 + rp1)*(-1 + rp6) + costSTO1s_n*(1 + & + ! &rp4)**2 *(2 + 3*rp1*(1 +rp1)) + costSTO1s_n**3*(1 + rp4*(-4 +& + ! &rp4)))))/(2.*rp1*rp2*(1 + rp4)**3) + + ! gradient: dR(r)/dr_i=r_i*fun + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + ! laplacian = 2*fun+fun2 + z(indorbp,indt+4)=2.d0*fun+fun2 + end if + + indorb=indorbp + + ! endif + + indpar=indpar+1 + indshell=indshellp + + + + + + + + diff --git a/devel_tools/makefun_factory/orb_7.f90 b/devel_tools/makefun_factory/orb_7.f90 new file mode 100644 index 0000000..68eba42 --- /dev/null +++ b/devel_tools/makefun_factory/orb_7.f90 @@ -0,0 +1,48 @@ + ! normalized IS WRONG!!! + + indshellp=indshell+1 + + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + dd1=dd(indpar+1) + dd2=dd(indpar+2) + peff=dd(indpar+3) + + do k=indtmin,indtm + distp(k,1)=dexp(-dd1*r(k)) + distp(k,2)=dexp(-dd2*r(k)) + end do + ! if(iflagnorm.gt.2) then + c= & + 1/dsqrt(1/(3.D0/4.D0/dd1**5+peff**2/dd2**3/4+12*peff/ & + (dd1+dd2)**4))*1.d0/dsqrt(4.0*pi) + ! endif + + do i=i0,indtm + z(indorbp,i)=c*(distp(i,1)+r(i)*distp(i,2)*peff) + end do + + if(typec.ne.1) then + + fun=-dd1*distp(0,1)+peff*distp(0,2)*(1.d0-dd2*r(0)) + fun2=distp(0,1)*dd1**2 & + +peff*distp(0,2)*(dd2**2*r(0)-2.d0*dd2) + + do i=1,3 + z(indorbp,indt+i)=fun*c*rmu(i,0)/r(0) + end do + z(indorbp,indt+4)=c*(2.d0*fun/r(0)+fun2) + + end if + + indorb=indorbp + + ! endif + indpar=indpar+3 + indshell=indshellp + + + + ! 2s double Z WITH CUSP diff --git a/devel_tools/makefun_factory/orb_70.f90 b/devel_tools/makefun_factory/orb_70.f90 new file mode 100644 index 0000000..e0f7897 --- /dev/null +++ b/devel_tools/makefun_factory/orb_70.f90 @@ -0,0 +1,158 @@ + ! f single Slater orbital + ! R(r)= exp(-alpha r) + ! normalized + + + ! indorbp=indorb + indparp=indpar+1 + + dd1=dd(indparp) + + ! if(iflagnorm.gt.2) then + ! overall normalization + ! l = 3 + ! \int d\omega Y*Y = 4 pi / (2 l + 1) + ! \int dr r^{2 l + 2} Exp [- 2 dd1 r^2 ] = 7 * 5 * 3**2 / 2**2 / dd1**9 + ! c=1.d0/dsqrt(10.d0)*(2.d0/pi)**(1.d0/2.d0)*dd1**(9.d0/2.d0)/3.d0 + c=dd1**4.5d0*0.084104417400672d0 + ! endif + + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + end do + + + do i=indtmin,indtm + distp(i,2)=cost1f*rmu(3,i) & + *(5.d0*rmu(3,i)**2-3.d0*r(i)**2) + ! lz=0 + distp(i,3)=cost2f*rmu(1,i) & + *(5.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-1 + distp(i,4)=cost2f*rmu(2,i) & + *(5.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-1 + distp(i,5)=cost3f*rmu(3,i) & + *(rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-2 + distp(i,6)=cost3f*2.d0*rmu(3,i) & + *rmu(1,i)*rmu(2,i) + ! lz=+/-2 + distp(i,7)=cost4f*rmu(1,i) & + *(rmu(1,i)**2-3.d0*rmu(2,i)**2) + ! lz=+/-3 + distp(i,8)=cost4f*rmu(2,i) & + *(3.d0*rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-3 + end do + + + do ic=1,7 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + z(indorbp,k)=distp(k,1)*distp(k,1+ic) + end do + ! endif + end do + + + if(typec.ne.1) then + + dd1=dd(indparp) + fun0=distp(0,1) + fun=-dd1*distp(0,1)/r(0) + fun2=dd1**2*distp(0,1) + + ! indorbp=indorb + do ic=1,7 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0) & + *fun + if(ic.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 6.d0*cost1f*fun0*rmu(i,0)*rmu(3,0) + if(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost1f*fun0*(15.d0*rmu(i,0)**2-3.d0*r(0)**2) + end if + elseif(ic.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*cost2f*fun0*rmu(i,0)*rmu(1,0) + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost2f*fun0*(5.d0*rmu(3,0)**2-r(0)**2) + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 10.d0*cost2f*fun0*rmu(i,0)*rmu(1,0) + end if + elseif(ic.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*cost2f*fun0*rmu(i,0)*rmu(2,0) + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost2f*fun0*(5.d0*rmu(3,0)**2-r(0)**2) + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 10.d0*cost2f*fun0*rmu(i,0)*rmu(2,0) + end if + elseif(ic.eq.4) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*cost3f*fun0*rmu(2,0)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost3f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(2,0)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(2,0) + end if + elseif(ic.eq.6) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 3.d0*cost4f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 6.d0*cost4f*fun0*rmu(1,0)*rmu(2,0) + end if + else + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 6.d0*cost4f*fun0*rmu(1,0)*rmu(2,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 3.d0*cost4f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,1+ic)*(8.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+7 + indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_71.f90 b/devel_tools/makefun_factory/orb_71.f90 new file mode 100644 index 0000000..3f7da00 --- /dev/null +++ b/devel_tools/makefun_factory/orb_71.f90 @@ -0,0 +1,160 @@ + ! f single Slater orbital derivative of 70 + ! R(r)= (9.d0/2.0 1/dd1 - r) * exp(-alpha r) + ! normalized + + + ! indorbp=indorb + indparp=indpar+1 + + dd1=dd(indparp) + + ! if(iflagnorm.gt.2) then + ! overall normalization + ! l = 3 + ! \int d\omega Y*Y = 4 pi / (2 l + 1) + ! \int dr r^{2 l + 2} Exp [- 2 dd1 r^2 ] = 7 * 5 * 3**2 / 2**2 / dd1**9 + ! c=1.d0/dsqrt(10.d0)*(2.d0/pi)**(1.d0/2.d0)*dd1**(9.d0/2.d0)/3.d0 + c=dd1**4.5d0*0.084104417400672d0 + ! endif + + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)) + end do + + + do i=indtmin,indtm + distp(i,2)=cost1f*rmu(3,i) & + *(5.d0*rmu(3,i)**2-3.d0*r(i)**2) + ! lz=0 + distp(i,3)=cost2f*rmu(1,i) & + *(5.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-1 + distp(i,4)=cost2f*rmu(2,i) & + *(5.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-1 + distp(i,5)=cost3f*rmu(3,i) & + *(rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-2 + distp(i,6)=cost3f*2.d0*rmu(3,i) & + *rmu(1,i)*rmu(2,i) + ! lz=+/-2 + distp(i,7)=cost4f*rmu(1,i) & + *(rmu(1,i)**2-3.d0*rmu(2,i)**2) + ! lz=+/-3 + distp(i,8)=cost4f*rmu(2,i) & + *(3.d0*rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-3 + end do + + + do ic=1,7 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + z(indorbp,k)=distp(k,1)*distp(k,1+ic)*(9.d0/2.d0/dd1 - r(k)) + end do + ! endif + end do + + + if(typec.ne.1) then + + dd1=dd(indparp) + fun0=distp(0,1)*(9.d0/2.d0/dd1-r(0)) + fun=distp(0,1)*(dd1-11.d0/2.d0/r(0)) + fun2=dd1*distp(0,1)*(13.d0/2.d0-dd1*r(0)) + + ! indorbp=indorb + do ic=1,7 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0) & + *fun + if(ic.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 6.d0*cost1f*fun0*rmu(i,0)*rmu(3,0) + if(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost1f*fun0*(15.d0*rmu(i,0)**2-3.d0*r(0)**2) + end if + elseif(ic.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*cost2f*fun0*rmu(i,0)*rmu(1,0) + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost2f*fun0*(5.d0*rmu(3,0)**2-r(0)**2) + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 10.d0*cost2f*fun0*rmu(i,0)*rmu(1,0) + end if + elseif(ic.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*cost2f*fun0*rmu(i,0)*rmu(2,0) + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost2f*fun0*(5.d0*rmu(3,0)**2-r(0)**2) + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 10.d0*cost2f*fun0*rmu(i,0)*rmu(2,0) + end if + elseif(ic.eq.4) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*cost3f*fun0*rmu(2,0)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost3f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(2,0)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(2,0) + end if + elseif(ic.eq.6) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 3.d0*cost4f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 6.d0*cost4f*fun0*rmu(1,0)*rmu(2,0) + end if + else + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 6.d0*cost4f*fun0*rmu(1,0)*rmu(2,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 3.d0*cost4f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,1+ic)*(8.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+7 + indorb=indorbp + + + + ! 3s -derivative of 34 with respect to dd1 diff --git a/devel_tools/makefun_factory/orb_72.f90 b/devel_tools/makefun_factory/orb_72.f90 new file mode 100644 index 0000000..32abbe3 --- /dev/null +++ b/devel_tools/makefun_factory/orb_72.f90 @@ -0,0 +1,186 @@ + + + ! indorbp=indorb + indparp=indpar+1 + + dd1=dd(indparp) + + ! if(iflagnorm.gt.2) then + ! overall normalization obtained by Mathematica + c=dd1**3.25d0*0.79296269381073167718d0 + ! C= dd1^13/4 /Sqrt[Integrate[x^12 Exp[-2 x^2],{x,0,Infinity}]] + ! endif + + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2) + end do + + do i=indtmin,indtm + do k=1,5 + zv(k)=rmu(3,i)**k + yv(k)=rmu(2,i)**k + xv(k)=rmu(1,i)**k + end do + r2=xv(2)+yv(2)+zv(2) + r4=r2*r2 + ! lz=0 + distp(i,2)=cost1h*(63.d0*zv(5)-70.d0*zv(3)*r2+15.d0*zv(1)*r4) + + cost=(21.d0*zv(4)-14.d0*zv(2)*r2+r4) + ! lz=+/-1 + distp(i,3)=cost2h*rmu(1,i)*cost + ! lz=+/-1 + distp(i,4)=cost2h*rmu(2,i)*cost + + cost=3.d0*zv(3)-zv(1)*r2 + ! lz=+/-2 + distp(i,5)=cost3h*(xv(2)-yv(2))*cost + ! lz=+/-2 + distp(i,6)=2.d0*cost3h*xv(1)*yv(1)*cost + + cost=9.d0*zv(2)-r2 + ! lz=+/-3 + distp(i,7)=cost4h*(xv(3)-3.d0*xv(1)*yv(2))*cost + ! lz=+/-3 + distp(i,8)=-cost4h*(yv(3)-3.d0*yv(1)*xv(2))*cost + + ! lz=+/-4 + distp(i,9)=cost5h*(xv(4)-6.d0*xv(2)*yv(2)+yv(4))*zv(1) + ! lz=+/-4 + distp(i,10)=cost5h*4.d0*(xv(3)*yv(1)-yv(3)*xv(1))*zv(1) + ! lz=+/-5 + distp(i,11)=cost6h*(xv(5)-10.d0*xv(3)*yv(2)+5.d0*xv(1)*yv(4)) + ! lz=+/-5 + distp(i,12)=-cost6h*(-5.d0*xv(4)*yv(1)+10.d0*xv(2)*yv(3)-yv(5)) + + end do + + + do ic=1,11 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + z(indorbp,k)=distp(k,1)*distp(k,1+ic) + end do + ! endif + end do + + + if(typec.ne.1) then + + dd1=dd(indparp) + fun0=distp(0,1) + fun=-2.d0*dd1*distp(0,1) + fun2=fun*(1.d0-2.d0*dd1*r(0)**2) + do k=1,5 + zv(k)=rmu(3,0)**k + yv(k)=rmu(2,0)**k + xv(k)=rmu(1,0)**k + end do + + r2=xv(2)+yv(2)+zv(2) + r4=r2*r2 + + + ! indorbp=indorb + do ic=1,11 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0)*fun + end do + if(ic.eq.1) then + ! if(i.eq.1) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost1h*fun0*20.d0*xv(1)*zv(1)*(3.d0*xv(2)+3.d0*yv(2)-4.d0*zv(2)) + ! elseif(i.eq.2) then + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost1h*fun0*20.d0*yv(1)*zv(1)*(3.d0*xv(2)+3.d0*yv(2)-4.d0*zv(2)) + z(indorbp,indt+3)=z(indorbp,indt+3) & + +cost1h*fun0*(175.d0*zv(4)-150.d0*zv(2)*r2+15.d0*r4) + elseif(ic.eq.2) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost2h*fun0*(5.d0*xv(4)+6.d0*xv(2)*yv(2)+yv(4)-36.d0*xv(2)*zv(2)& + -12.d0*yv(2)*zv(2)+8.d0*zv(4)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost2h*fun0*(4.d0*xv(3)*yv(1)+4.d0*xv(1)*yv(3)-24.d0*xv(1)*yv(1)*zv(2)) + z(indorbp,indt+3)=z(indorbp,indt+3) & + +cost2h*fun0*(-24.d0*xv(3)*zv(1)-24.d0*xv(1)*yv(2)*zv(1)+32.d0*zv(3)*xv(1)) + elseif(ic.eq.3) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + -cost2h*fun0*(-4.d0*xv(3)*yv(1)-4.d0*xv(1)*yv(3)+24.d0*xv(1)*yv(1)*zv(2)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost2h*fun0*(5.d0*yv(4)+6.d0*xv(2)*yv(2)+xv(4)-36.d0*yv(2)*zv(2)& + -12.d0*xv(2)*zv(2)+8.d0*zv(4)) + z(indorbp,indt+3)=z(indorbp,indt+3) & + +cost2h*fun0*(-24.d0*yv(3)*zv(1)-24.d0*yv(1)*xv(2)*zv(1) & + +32.d0*zv(3)*yv(1)) + elseif(ic.eq.4) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost3h*fun0*(-4.d0*xv(3)*zv(1)+4.d0*xv(1)*zv(3)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost3h*fun0*(4.d0*yv(3)*zv(1)-4.d0*yv(1)*zv(3)) + z(indorbp,indt+3)=z(indorbp,indt+3) & + +cost3h*fun0*(-xv(4)+yv(4)+6.d0*xv(2)*zv(2)-6.d0*yv(2)*zv(2)) + elseif(ic.eq.5) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + -cost3h*fun0*(6.d0*xv(2)*yv(1)*zv(1)+2.d0*yv(3)*zv(1)-4.d0*yv(1)*zv(3)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + -cost3h*fun0*(2.d0*xv(3)*zv(1)+6.d0*xv(1)*yv(2)*zv(1)-4.d0*xv(1)*zv(3)) + z(indorbp,indt+3)=z(indorbp,indt+3) & + -cost3h*fun0*(2.d0*xv(3)*yv(1)+2.d0*xv(1)*yv(3)-12.d0*xv(1)*yv(1)*zv(2)) + elseif(ic.eq.6) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost4h*fun0*(-5.d0*xv(4)+6.d0*xv(2)*yv(2)+3.d0*yv(4)+24.d0*xv(2)*zv(2)-24.d0*yv(2)*zv(2)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost4h*fun0*(4.d0*xv(3)*yv(1)+12.d0*xv(1)*yv(3)-48.d0*xv(1)*yv(1)*zv(2)) + z(indorbp,indt+3)=z(indorbp,indt+3) & + +cost4h*fun0*(16.d0*xv(3)*zv(1)-48.d0*xv(1)*yv(2)*zv(1)) + elseif(ic.eq.7) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + -cost4h*fun0*(12.d0*xv(3)*yv(1)+4.d0*xv(1)*yv(3)-48.d0*xv(1)*yv(1)*zv(2)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + -cost4h*fun0*(3.d0*xv(4)+6.d0*xv(2)*yv(2)-5.d0*yv(4)-24.d0*xv(2)*zv(2)+24.d0*yv(2)*zv(2)) + z(indorbp,indt+3)=z(indorbp,indt+3) & + -cost4h*fun0*(-48.d0*xv(2)*yv(1)*zv(1)+16.d0*yv(3)*zv(1)) + elseif(ic.eq.8) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost5h*fun0*(4.d0*xv(3)*zv(1)-12.d0*xv(1)*yv(2)*zv(1)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost5h*fun0*(-12.d0*xv(2)*yv(1)*zv(1)+4.d0*yv(3)*zv(1)) + z(indorbp,indt+3)=z(indorbp,indt+3) & + +cost5h*fun0*(xv(4)-6.d0*xv(2)*yv(2)+yv(4)) + elseif(ic.eq.9) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + -cost5h*fun0*(-12.d0*xv(2)*yv(1)*zv(1)+4.d0*yv(3)*zv(1)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + -cost5h*fun0*(-4.d0*xv(3)*zv(1)+12.d0*xv(1)*yv(2)*zv(1)) + z(indorbp,indt+3)=z(indorbp,indt+3) & + -cost5h*fun0*(-4.d0*xv(3)*yv(1)+4.d0*xv(1)*yv(3)) + elseif(ic.eq.10) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost6h*fun0*(5.d0*xv(4)-30.d0*xv(2)*yv(2)+5.d0*yv(4)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost6h*fun0*(-20.d0*xv(3)*yv(1)+20.d0*xv(1)*yv(3)) + elseif(ic.eq.11) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + -cost6h*fun0*(-20.d0*xv(3)*yv(1)+20.d0*xv(1)*yv(3)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + -cost6h*fun0*(-5.d0*xv(4)+30.d0*xv(2)*yv(2)-5.d0*yv(4)) + end if + z(indorbp,indt+4)=distp(0,1+ic)*(12.d0*fun+fun2) + !endif for iocc + ! endif + end do ! enddo fot ic + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+11 + indorb=indorbp + + + + ! 2s gaussian for pseudo + diff --git a/devel_tools/makefun_factory/orb_73.f90 b/devel_tools/makefun_factory/orb_73.f90 new file mode 100644 index 0000000..f01382f --- /dev/null +++ b/devel_tools/makefun_factory/orb_73.f90 @@ -0,0 +1,235 @@ + + + ! indorbp=indorb + indparp=indpar+1 + + dd1=dd(indparp) + + ! if(iflagnorm.gt.2) then + ! overall normalization obtained by Mathematica + c=dd1**3.75d0*0.43985656185609913955d0 + ! C= dd1^15/4 /Sqrt[Integrate[x^14 Exp[-2 x^2],{x,0,Infinity}]] + ! endif + + + do k=indtmin,indtm + distp(k,1)=c*dexp(-dd1*r(k)**2) + end do + + do i=indtmin,indtm + do k=1,6 + zv(k)=rmu(3,i)**k + yv(k)=rmu(2,i)**k + xv(k)=rmu(1,i)**k + end do + r2=xv(2)+yv(2)+zv(2) + r4=r2*r2 + r6=r2*r4 + ! lz=0 + distp(i,2)=cost1i*(231.d0*zv(6)-315.d0*zv(4)*r2+105.d0*zv(2)*r4-5.d0*r6) + + cost=(33.d0*zv(5)-30.d0*zv(3)*r2+5.d0*zv(1)*r4) + ! lz=+/-1 + distp(i,3)=cost2i*rmu(1,i)*cost + ! lz=+/-1 + distp(i,4)=cost2i*rmu(2,i)*cost + + cost=33.d0*zv(4)-18.d0*zv(2)*r2+r4 + ! lz=+/-2 + distp(i,5)=cost3i*(xv(2)-yv(2))*cost + ! lz=+/-2 + distp(i,6)=2.d0*cost3i*xv(1)*yv(1)*cost + + + + cost=11.d0*zv(3)-3.d0*zv(1)*r2 + ! lz=+/-3 + distp(i,7)=cost4i*(xv(3)-3.d0*xv(1)*yv(2))*cost + ! lz=+/-3 + distp(i,8)=-cost4i*(yv(3)-3.d0*yv(1)*xv(2))*cost + + + cost=11.d0*zv(2)-r2 + ! lz=+/-4 + distp(i,9)=cost5i*(xv(4)-6.d0*xv(2)*yv(2)+yv(4))*cost + ! lz=+/-4 + distp(i,10)=cost5i*4.d0*(xv(3)*yv(1)-yv(3)*xv(1))*cost + + + ! lz=+/-5 + distp(i,11)=cost6i*(xv(5)-10.d0*xv(3)*yv(2)+5.d0*xv(1)*yv(4))*zv(1) + ! lz=+/-5 + distp(i,12)=-cost6i*(-5.d0*xv(4)*yv(1)+10.d0*xv(2)*yv(3)-yv(5))*zv(1) + + ! lz=+/-6 + distp(i,13)=cost7i*(xv(6)-15.d0*xv(4)*yv(2)+15.d0*xv(2)*yv(4)-yv(6)) + ! lz=+/-6 + distp(i,14)=-cost7i*(-6.d0*xv(5)*yv(1)+20.d0*xv(3)*yv(3)-6.d0*yv(5)*xv(1)) + + + + end do + + + do ic=1,13 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + z(indorbp,k)=distp(k,1)*distp(k,1+ic) + end do + ! endif + end do + + + if(typec.ne.1) then + + dd1=dd(indparp) + fun0=distp(0,1) + fun=-2.d0*dd1*distp(0,1) + fun2=fun*(1.d0-2.d0*dd1*r(0)**2) + do k=1,6 + zv(k)=rmu(3,0)**k + yv(k)=rmu(2,0)**k + xv(k)=rmu(1,0)**k + end do + + r2=xv(2)+yv(2)+zv(2) + r4=r2*r2 + r6=r2*r4 + + ! indorbp=indorb + do ic=1,13 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0)*fun + end do + if(ic.eq.1) then + ! if(i.eq.1) then + ! lz =0 + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost1i*fun0*(-30.d0*xv(5)-60.d0*xv(3)*yv(2)-30.d0*xv(1)*yv(4)& + +360.d0*xv(3)*zv(2)+360.d0*xv(1)*yv(2)*zv(2)-240.d0*xv(1)*zv(4)) + ! elseif(i.eq.2) then + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost1i*fun0*(-30.d0*xv(4)*yv(1)-60.d0*xv(2)*yv(3)-30.d0*yv(5)& + +360.d0*xv(2)*yv(1)*zv(2)+360.d0*yv(3)*zv(2)-240.d0*yv(1)*zv(4)) + z(indorbp,indt+3)=z(indorbp,indt+3) & + +cost1i*fun0*(180.d0*xv(4)*zv(1)+360.d0*xv(2)*yv(2)*zv(1)+180.d0*yv(4)*zv(1)& + -480.d0*xv(2)*zv(3)-480.d0*yv(2)*zv(3)+96.d0*zv(5)) + elseif(ic.eq.2) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost2i*fun0*(25.d0*xv(4)*zv(1)+30.d0*xv(2)*yv(2)*zv(1)+5.d0*yv(4)*zv(1)& + -60.d0*xv(2)*zv(3)-20.d0*yv(2)*zv(3)+8.d0*zv(5)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost2i*fun0*(20.d0*xv(3)*yv(1)*zv(1)+20.d0*xv(1)*yv(3)*zv(1)& + -40.d0*xv(1)*yv(1)*zv(3)) + z(indorbp,indt+3)=z(indorbp,indt+3) & + +cost2i*fun0*(5.d0*xv(5)+10.d0*xv(3)*yv(2)+5.d0*yv(4)*xv(1)& + -60.d0*xv(3)*zv(2)-60.d0*xv(1)*yv(2)*zv(2)+40.d0*xv(1)*zv(4)) + elseif(ic.eq.3) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + -cost2i*fun0*(-20.d0*xv(3)*yv(1)*zv(1)-20.d0*xv(1)*yv(3)*zv(1)& + +40.d0*xv(1)*yv(1)*zv(3)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + -cost2i*fun0*(-5.d0*xv(4)*zv(1)-30.d0*xv(2)*yv(2)*zv(1)-25.d0*yv(4)*zv(1)& + +20.d0*xv(2)*zv(3)+60.d0*yv(2)*zv(3)-8.d0*zv(5)) + z(indorbp,indt+3)=z(indorbp,indt+3) & + -cost2i*fun0*(-5.d0*xv(4)*yv(1)-10.d0*xv(2)*yv(3)-5.d0*yv(5)& + +60.d0*xv(2)*yv(1)*zv(2)+60.d0*yv(3)*zv(2)-40.d0*yv(1)*zv(4)) + elseif(ic.eq.4) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost3i*fun0*(6.d0*xv(5)+4.d0*xv(3)*yv(2)-2.d0*xv(1)*yv(4)& + -64.d0*xv(3)*zv(2)+32.d0*xv(1)*zv(4)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost3i*fun0*(2.d0*xv(4)*yv(1)-4.d0*xv(2)*yv(3)-6.d0*yv(5)& + +64.d0*yv(3)*zv(2)-32.d0*yv(1)*zv(4)) + z(indorbp,indt+3)=z(indorbp,indt+3) & + +cost3i*fun0*(-32.d0*xv(4)*zv(1)+32.d0*yv(4)*zv(1)+64.d0*xv(2)*zv(3)& + -64.d0*yv(2)*zv(3)) + + elseif(ic.eq.5) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + -cost3i*fun0*(-10.d0*xv(4)*yv(1)-12.d0*xv(2)*yv(3)-2.d0*yv(5)& + +96.d0*xv(2)*yv(1)*zv(2)+32.d0*yv(3)*zv(2)-32.d0*yv(1)*zv(4)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + -cost3i*fun0*(-2.d0*xv(5)-12.d0*xv(3)*yv(2)-10.d0*xv(1)*yv(4)& + +32.d0*xv(3)*zv(2)+96.d0*xv(1)*yv(2)*zv(2)-32.d0*xv(1)*zv(4)) + z(indorbp,indt+3)=z(indorbp,indt+3) & + -cost3i*fun0*(64.d0*xv(3)*yv(1)*zv(1)+64.d0*xv(1)*yv(3)*zv(1)-128.d0*xv(1)*yv(1)*zv(3)) + elseif(ic.eq.6) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost4i*fun0*(-15.d0*xv(4)*zv(1)+18.d0*xv(2)*yv(2)*zv(1)+9.d0*yv(4)*zv(1)& + +24.d0*xv(2)*zv(3)-24.d0*yv(2)*zv(3)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost4i*fun0*(12.d0*xv(3)*yv(1)*zv(1)+36.d0*xv(1)*yv(3)*zv(1)-48.d0*xv(1)*yv(1)*zv(3)) + z(indorbp,indt+3)=z(indorbp,indt+3) & + +cost4i*fun0*(-3.d0*xv(5)+6.d0*xv(3)*yv(2)+9.d0*xv(1)*yv(4)+24.d0*xv(3)*zv(2)& + -72.d0*xv(1)*yv(2)*zv(2)) + elseif(ic.eq.7) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + -cost4i*fun0*(36.d0*xv(3)*yv(1)*zv(1)+12.d0*xv(1)*yv(3)*zv(1)-48.d0*xv(1)*yv(1)*zv(3)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + -cost4i*fun0*(9.d0*xv(4)*zv(1)+18.d0*xv(2)*yv(2)*zv(1)-15.d0*yv(4)*zv(1)& + -24.d0*xv(2)*zv(3)+24.d0*yv(2)*zv(3)) + z(indorbp,indt+3)=z(indorbp,indt+3) & + -cost4i*fun0*(9.d0*xv(4)*yv(1)+6.d0*xv(2)*yv(3)-3.d0*yv(5)& + -72.d0*xv(2)*yv(1)*zv(2)+24.d0*yv(3)*zv(2)) + elseif(ic.eq.8) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost5i*fun0*(-6.d0*xv(5)+20.d0*xv(3)*yv(2)+10.d0*xv(1)*yv(4)& + +40.d0*xv(3)*zv(2)-120.d0*xv(1)*yv(2)*zv(2)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost5i*fun0*(10.d0*xv(4)*yv(1)+20.d0*xv(2)*yv(3)-6.d0*yv(5)& + -120.d0*xv(2)*yv(1)*zv(2)+40.d0*yv(3)*zv(2)) + + z(indorbp,indt+3)=z(indorbp,indt+3) & + +cost5i*fun0*(20.d0*xv(4)*zv(1)-120.d0*xv(2)*yv(2)*zv(1)+20.d0*yv(4)*zv(1)) + elseif(ic.eq.9) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + -cost5i*fun0*(20.d0*xv(4)*yv(1)-4.d0*yv(5)-120.d0*xv(2)*yv(1)*zv(2)& + +40.d0*yv(3)*zv(2)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + -cost5i*fun0*(4.d0*xv(5)-20.d0*xv(1)*yv(4)-40.d0*xv(3)*zv(2)& + +120.d0*xv(1)*yv(2)*zv(2)) + z(indorbp,indt+3)=z(indorbp,indt+3) & + -cost5i*fun0*(-80.d0*xv(3)*yv(1)*zv(1)+80.d0*xv(1)*yv(3)*zv(1)) + elseif(ic.eq.10) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost6i*fun0*(5.d0*xv(4)*zv(1)-30.d0*xv(2)*yv(2)*zv(1)+5.d0*yv(4)*zv(1)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost6i*fun0*(-20.d0*xv(3)*yv(1)*zv(1)+20.d0*xv(1)*yv(3)*zv(1)) + z(indorbp,indt+3)=z(indorbp,indt+3) & + +cost6i*fun0*(xv(5)-10.d0*xv(3)*yv(2)+5.d0*xv(1)*yv(4)) + elseif(ic.eq.11) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + -cost6i*fun0*(-20.d0*xv(3)*yv(1)*zv(1)+20.d0*xv(1)*yv(3)*zv(1)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + -cost6i*fun0*(-5.d0*xv(4)*zv(1)+30.d0*xv(2)*yv(2)*zv(1)-5.d0*yv(4)*zv(1)) + z(indorbp,indt+3)=z(indorbp,indt+3) & + -cost6i*fun0*(-5.d0*xv(4)*yv(1)+10.d0*xv(2)*yv(3)-yv(5)) + elseif(ic.eq.12) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + +cost7i*fun0*(6.d0*xv(5)-60.d0*xv(3)*yv(2)+30.d0*xv(1)*yv(4)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + +cost7i*fun0*(-30.d0*xv(4)*yv(1)+60.d0*xv(2)*yv(3)-6.d0*yv(5)) + elseif(ic.eq.13) then + z(indorbp,indt+1)=z(indorbp,indt+1) & + -cost7i*fun0*(-30.d0*xv(4)*yv(1)+60.d0*xv(2)*yv(3)-6.d0*yv(5)) + z(indorbp,indt+2)=z(indorbp,indt+2) & + -cost7i*fun0*(-6.d0*xv(5)+60.d0*xv(3)*yv(2)-30.d0*xv(1)*yv(4)) + end if + z(indorbp,indt+4)=distp(0,1+ic)*(14.d0*fun+fun2) + !endif for iocc + ! endif + end do ! enddo fot ic + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+13 + indorb=indorbp + + + + ! 2s gaussian for pseudo diff --git a/devel_tools/makefun_factory/orb_8.f90 b/devel_tools/makefun_factory/orb_8.f90 new file mode 100644 index 0000000..bd054f5 --- /dev/null +++ b/devel_tools/makefun_factory/orb_8.f90 @@ -0,0 +1,48 @@ + ! normalized + ! exp(-dd1*r) + (dd1-zeta) * r * exp(-dd2*r) + + + indshellp=indshell+1 + + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + dd1=dd(indpar+1) + dd2=dd(indpar+2) + peff=dd1-zeta(1) + + do k=indtmin,indtm + distp(k,1)=dexp(-dd1*r(k)) + distp(k,2)=dexp(-dd2*r(k)) + end do + + ! if(iflagnorm.gt.2) then + c=1.d0/dsqrt(1/4.d0/dd1**3+12*peff/(dd1+dd2)**4+ & + 3*peff**2/4/dd2**5)/dsqrt(4.0*pi) + ! endif + + do i=i0,indtm + z(indorbp,i)=c*(distp(i,1)+r(i)*distp(i,2)*peff) + end do + + if(typec.ne.1) then + + fun=-dd1*distp(0,1)+peff*distp(0,2)*(1.d0-dd2*r(0)) + fun2=distp(0,1)*dd1**2 & + +peff*distp(0,2)*(dd2**2*r(0)-2.d0*dd2) + + do i=1,3 + z(indorbp,indt+i)=fun*c*rmu(i,0)/r(0) + end do + z(indorbp,indt+4)=c*(2.d0*fun/r(0)+fun2) + + end if + + indorb=indorbp + + ! endif + indpar=indpar+2 + indshell=indshellp + + ! 3s single zeta diff --git a/devel_tools/makefun_factory/orb_80.f90 b/devel_tools/makefun_factory/orb_80.f90 new file mode 100644 index 0000000..21b0847 --- /dev/null +++ b/devel_tools/makefun_factory/orb_80.f90 @@ -0,0 +1,45 @@ + ! R(r)=exp(-z*r**2) single zeta + + indshellp=indshell+1 + indorbp=indorb+1 + + dd1=dd(indpar+1) + dd2=dsqrt(dd1) + + ! if(iflagnorm.gt.2) then + ! c=(2.d0*dd1/pi)**(3.d0/4.d0)*ratiocs + ! ratiocs--> ratiocs*(2/pi)**3/4 + c=dd1**0.75d0*ratiocs + ! endif + + do k=indtmin,indtm + cost=dd1*r(k)**2/(1.d0+dd2*r(k)) + distp(k,1)=c*dexp(-cost) + end do + + do i=i0,indtm + z(indorbp,i)=distp(i,1) + end do + + if(typec.ne.1) then + ! the first derivative /r + rp1=dd1*r(0)**2 + rp2=dd2*r(0) + rp3=(1.d0+rp2)**2 + + fun=-dd1*distp(0,1)*(2.d0+rp2)/rp3 + + ! the second derivative + fun2=dd1*distp(0,1)*(-2.d0-2.d0*rp2+4.d0*rp1+4.d0*rp1*rp2+rp1**2)/rp3**2 + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*fun+fun2 + end if + + indorb=indorbp + indpar=indpar+1 + indshell=indshellp + diff --git a/devel_tools/makefun_factory/orb_81.f90 b/devel_tools/makefun_factory/orb_81.f90 new file mode 100644 index 0000000..b9fd564 --- /dev/null +++ b/devel_tools/makefun_factory/orb_81.f90 @@ -0,0 +1,50 @@ + ! R(r)=c*exp(-z*r**2)*(3/4/z-r**2) + + indshellp=indshell+1 + + ! if(iocc(indshellp).eq.1) then + + indorbp=indorb+1 + + dd1=dd(indpar+1) + dd2=dsqrt(dd1) + + ! c=(2.d0*dd1/pi)**(3.d0/4.d0)*ratiocs + c=dd1**0.75d0*ratiocs + + do k=indtmin,indtm + cost=dd1*r(k)**2/(1.d0+dd2*r(k)) + distp(k,1)=c*dexp(-cost) + end do + + do i=i0,indtm + cost=(1.d0+0.5d0*dd2*r(i))/(1.d0+dd2*r(i))**2 + z(indorbp,i)=distp(i,1)*(3.d0/4.d0/dd1-r(i)**2*cost) + end do + + if(typec.ne.1) then + ! the first derivative /r + + rp1=dd1*r(0)**2 + rp2=dd2*r(0) + rp3=(1.d0+rp2)**2 + + fun=0.25d0*distp(0,1)* & + (-14.d0-29.d0*rp2-12.d0*rp1+3.d0*rp1*rp2+2.d0*rp1**2)/rp3**2 + ! the second derivative + fun2=0.25d0*distp(0,1)* & + (-14.d0-30.d0*rp2+34.d0*rp1+118.d0*rp1*rp2+87.d0*rp1**2 & + +18.d0*rp1**2*rp2-5.d0*rp1**3-2.d0*rp1**3*rp2)/rp3**3 + + do i=1,3 + z(indorbp,indt+i)=fun*rmu(i,0) + end do + + z(indorbp,indt+4)=2.d0*fun+fun2 + end if + + indorb=indorbp + + indpar=indpar+1 + indshell=indshellp + diff --git a/devel_tools/makefun_factory/orb_82.f90 b/devel_tools/makefun_factory/orb_82.f90 new file mode 100644 index 0000000..f187499 --- /dev/null +++ b/devel_tools/makefun_factory/orb_82.f90 @@ -0,0 +1,52 @@ + + dd1=dd(indpar+1) + dd2=dsqrt(dd1) + + ! if(iflagnorm.gt.2) then + ! ratiocp--> ratiocp*dsqrt(2.d0)*pi**(-0.75d0)*2**1.25 + ! c=dsqrt(2.d0)*pi**(-0.75d0)*(2.d0*dd1)**1.25d0*ratiocp + c=dd1**1.25d0*ratiocp + ! endif + + do k=indtmin,indtm + cost=dd1*r(k)**2/(1.d0+dd2*r(k)) + distp(k,1)=c*dexp(-cost) + end do + ! indorbp=indorb + ! + do ic=1,3 + indorbp=indorb+ic + do i=i0,indtm + z(indorbp,i)=rmu(ic,i)*distp(i,1) + end do + end do + + if(typec.ne.1) then + fun0=distp(0,1) + ! fun=-2.d0*dd1*distp(0,1) + ! fun2=fun*(1.d0-2.d0*dd1*r(0)**2) + rp1=dd1*r(0)**2 + rp2=dd2*r(0) + rp3=(1.d0+rp2)**2 + + fun=-dd1*distp(0,1)*(2.d0+rp2)/rp3 + + ! the second derivative + fun2=dd1*distp(0,1)*(-2.d0-2.d0*rp2+4.d0*rp1+4.d0*rp1*rp2+rp1**2)/rp3**2 + ! indorbp=indorb + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0)*(4.d0*fun+fun2) + end do + end if + + indpar=indpar+1 + indshell=indshell+3 + indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_83.f90 b/devel_tools/makefun_factory/orb_83.f90 new file mode 100644 index 0000000..55caae9 --- /dev/null +++ b/devel_tools/makefun_factory/orb_83.f90 @@ -0,0 +1,56 @@ + ! R(r)=x*exp(-z*r**2)*(5/4/z-r**2) + + dd1=dd(indpar+1) + dd2=dsqrt(dd1) + c=dd1**1.25d0*ratiocp + + do k=indtmin,indtm + cost=dd1*r(k)**2/(1.d0+dd2*r(k)) + distp(k,1)=c*dexp(-cost) + end do + ! indorbp=indorb + ! + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=i0,indtm + cost=(1.d0+0.5d0*dd2*r(i))/(1.d0+dd2*r(i))**2 + z(indorbp,i)=rmu(ic,i)*distp(i,1)*(1.25d0/dd1-r(i)**2*cost) + end do + ! endif + end do + + if(typec.ne.1) then + rp1=dd1*r(0)**2 + rp2=dd2*r(0) + rp3=(1.d0+rp2)**2 + cost=(1.d0+0.5d0*rp2)/rp3 + fun0=distp(0,1)*(1.25d0/dd1-r(0)**2*cost) + fun=0.25d0*distp(0,1)* & + (-18.d0-39.d0*rp2-20.d0*rp1+rp1*rp2+2.d0*rp1**2)/rp3**2 + fun2=0.25d0*distp(0,1)* & + (-18.d0-42.d0*rp2+30.d0*rp1+138.d0*rp1*rp2+113.d0*rp1**2 & + +30.d0*rp1**2*rp2-3.d0*rp1**3-2.d0*rp1**3*rp2)/rp3**3 + + ! indorbp=indorb + + do ic=1,3 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=rmu(ic,0)*rmu(i,0)* & + fun + if(i.eq.ic) z(indorbp,indt+i)=z(indorbp,indt+i)+fun0 + end do + z(indorbp,indt+4)=rmu(ic,0)*(4.d0*fun+fun2) + ! endif + end do + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+3 + indorb=indorbp + + + diff --git a/devel_tools/makefun_factory/orb_84.f90 b/devel_tools/makefun_factory/orb_84.f90 new file mode 100644 index 0000000..1417ff1 --- /dev/null +++ b/devel_tools/makefun_factory/orb_84.f90 @@ -0,0 +1,131 @@ + ! d orbitals + ! R(r)= exp(-alpha r^2) + ! each gaussian term is normalized + + + + ! indorbp=indorb + indparp=indpar+1 + + dd1=dd(indparp) + dd2=dsqrt(dd1) + + ! if(iflagnorm.gt.2) then + ! overall normalization + ! c=4.d0/dsqrt(3.d0)*(2.d0/pi)**(3.d0/4.d0)*dd1**(7.d0/4.d0)*ratiocd + c=ratiocd*dd1**1.75d0 + ! endif + + do k=indtmin,indtm + cost=dd1*r(k)**2/(1.d0+dd2*r(k)) + distp(k,1)=c*dexp(-cost) + end do + + + + + + do i=indtmin,indtm + ! lz=0 + distp(i,2)=(3.d0*rmu(3,i)**2-r(i)**2)*cost1d + ! lz=+/-2 + distp(i,3)=(rmu(1,i)**2-rmu(2,i)**2)*cost2d + ! lz=+/-2 + distp(i,4)=rmu(1,i)*rmu(2,i)*cost3d + ! lz=+/-1 + distp(i,5)=rmu(2,i)*rmu(3,i)*cost3d + ! lz=+/-1 + distp(i,6)=rmu(1,i)*rmu(3,i)*cost3d + end do + + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + z(indorbp,k)=distp(k,1)*distp(k,1+ic) + end do + ! endif + end do + + + if(typec.ne.1) then + + fun0=distp(0,1) + rp1=dd1*r(0)**2 + rp2=dd2*r(0) + rp3=(1.d0+rp2)**2 + + fun=-dd1*distp(0,1)*(2.d0+rp2)/rp3 + + + ! the second derivative + fun2=dd1*distp(0,1)*(-2.d0-2.d0*rp2+4.d0*rp1+4.d0*rp1*rp2+rp1**2)/rp3**2 + + + + ! indorbp=indorb + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0) & + *fun + if(ic.eq.1) then + if(i.ne.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost1d + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 4.d0*rmu(i,0)*fun0*cost1d + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*rmu(i,0)*fun0*cost2d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost2d + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + end if + elseif(ic.eq.4) then + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + !endif for i + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,1+ic)*(6.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+5 + indorb=indorbp + + ! derivative of 37 with respect to z diff --git a/devel_tools/makefun_factory/orb_85.f90 b/devel_tools/makefun_factory/orb_85.f90 new file mode 100644 index 0000000..7b9dee4 --- /dev/null +++ b/devel_tools/makefun_factory/orb_85.f90 @@ -0,0 +1,130 @@ + ! d orbitals + ! R(r)= c*exp(-z r^2)*(7/4/z-r^2) + + + + ! indorbp=indorb + indparp=indpar+1 + dd1=dd(indparp) + dd2=dsqrt(dd1) + + ! if(iflagnorm.gt.2) then + ! overall normalization + ! c=4.d0/dsqrt(3.d0)*(2.d0/pi)**(3.d0/4.d0)*dd1**(7.d0/4.d0)*ratiocd + c=dd1**1.75d0*ratiocd + ! endif + + + do k=indtmin,indtm + cost=dd1*r(k)**2/(1.d0+dd2*r(k)) + distp(k,1)=c*dexp(-cost) + end do + + + + + do i=indtmin,indtm + ! lz=0 + distp(i,2)=(3.d0*rmu(3,i)**2-r(i)**2)*cost1d + ! lz=+/-2 + distp(i,3)=(rmu(1,i)**2-rmu(2,i)**2)*cost2d + ! lz=+/-2 + distp(i,4)=rmu(1,i)*rmu(2,i)*cost3d + ! lz=+/-1 + distp(i,5)=rmu(2,i)*rmu(3,i)*cost3d + ! lz=+/-1 + distp(i,6)=rmu(1,i)*rmu(3,i)*cost3d + end do + + + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + cost=(1.d0+0.5d0*dd2*r(k))/(1.d0+dd2*r(k))**2 + z(indorbp,k)=distp(k,1)*(7.d0/4.d0/dd1-r(k)**2*cost)* & + distp(k,1+ic) + end do + ! endif + end do + + + if(typec.ne.1) then + rp1=dd1*r(0)**2 + rp2=dd2*r(0) + rp3=(1.d0+rp2)**2 + + cost=(1.d0+0.5d0*rp2)/rp3 + fun0=distp(0,1)*(7.d0/4.d0/dd1-r(0)**2*cost) + + fun=0.25d0*distp(0,1)* & + (-22.d0-49.d0*rp2-28.d0*rp1-rp1*rp2+2.d0*rp1**2)/rp3**2 + fun2=-0.25d0*distp(0,1)* & + (22.d0+54.d0*rp2-26.d0*rp1-158.d0*rp1*rp2-139.d0*rp1**2 & + -42.d0*rp1**2*rp2+rp1**3+2.d0*rp1**3*rp2)/rp3**3 + + ! indorbp=indorb + do ic=1,5 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0) & + *fun + if(ic.eq.1) then + if(i.ne.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost1d + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 4.d0*rmu(i,0)*fun0*cost1d + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*rmu(i,0)*fun0*cost2d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*rmu(i,0)*fun0*cost2d + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + end if + elseif(ic.eq.4) then + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(2,0)*fun0*cost3d + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(3,0)*fun0*cost3d + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + rmu(1,0)*fun0*cost3d + !endif for i + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,1+ic)*(6.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+5 + indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_86.f90 b/devel_tools/makefun_factory/orb_86.f90 new file mode 100644 index 0000000..a6a0e1c --- /dev/null +++ b/devel_tools/makefun_factory/orb_86.f90 @@ -0,0 +1,161 @@ + ! f single gaussian orbital + ! R(r)= exp(-alpha r^2) + ! normalized + + + ! indorbp=indorb + indparp=indpar+1 + + dd1=dd(indparp) + dd2=dsqrt(dd1) + + ! if(iflagnorm.gt.2) then + ! overall normalization + ! c=8.d0/dsqrt(15.d0)*(2.d0/pi)**(3.d0/4.d0)*dd1**(9.d0/4.d0)*ratiocf + c=dd1**2.25d0*ratiocf + ! endif + + do k=indtmin,indtm + cost=dd1*r(k)**2/(1.d0+dd2*r(k)) + distp(k,1)=c*dexp(-cost) + end do + + do i=indtmin,indtm + distp(i,2)=cost1f*rmu(3,i) & + *(5.d0*rmu(3,i)**2-3.d0*r(i)**2) + ! lz=0 + distp(i,3)=cost2f*rmu(1,i) & + *(5.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-1 + distp(i,4)=cost2f*rmu(2,i) & + *(5.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-1 + distp(i,5)=cost3f*rmu(3,i) & + *(rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-2 + distp(i,6)=cost3f*2.d0*rmu(3,i) & + *rmu(1,i)*rmu(2,i) + ! lz=+/-2 + distp(i,7)=cost4f*rmu(1,i) & + *(rmu(1,i)**2-3.d0*rmu(2,i)**2) + ! lz=+/-3 + distp(i,8)=cost4f*rmu(2,i) & + *(3.d0*rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-3 + end do + + do ic=1,7 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + z(indorbp,k)=distp(k,1)*distp(k,1+ic) + end do + ! endif + end do + + if(typec.ne.1) then + + fun0=distp(0,1) + rp1=dd1*r(0)**2 + rp2=dd2*r(0) + rp3=(1.d0+rp2)**2 + + fun=-dd1*distp(0,1)*(2.d0+rp2)/rp3 + + + ! the second derivative + fun2=dd1*distp(0,1)*(-2.d0-2.d0*rp2+4.d0*rp1+4.d0*rp1*rp2+rp1**2)/rp3**2 + + + + ! indorbp=indorb + do ic=1,7 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0) & + *fun + if(ic.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 6.d0*cost1f*fun0*rmu(i,0)*rmu(3,0) + if(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost1f*fun0*(15.d0*rmu(i,0)**2-3.d0*r(0)**2) + end if + elseif(ic.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*cost2f*fun0*rmu(i,0)*rmu(1,0) + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost2f*fun0*(5.d0*rmu(3,0)**2-r(0)**2) + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 10.d0*cost2f*fun0*rmu(i,0)*rmu(1,0) + end if + elseif(ic.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*cost2f*fun0*rmu(i,0)*rmu(2,0) + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost2f*fun0*(5.d0*rmu(3,0)**2-r(0)**2) + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 10.d0*cost2f*fun0*rmu(i,0)*rmu(2,0) + end if + elseif(ic.eq.4) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*cost3f*fun0*rmu(2,0)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost3f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(2,0)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(2,0) + end if + elseif(ic.eq.6) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 3.d0*cost4f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 6.d0*cost4f*fun0*rmu(1,0)*rmu(2,0) + end if + else + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 6.d0*cost4f*fun0*rmu(1,0)*rmu(2,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 3.d0*cost4f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,1+ic)*(8.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+7 + indorb=indorbp + + + ! derivative of 48 with respect to z diff --git a/devel_tools/makefun_factory/orb_87.f90 b/devel_tools/makefun_factory/orb_87.f90 new file mode 100644 index 0000000..c4397d7 --- /dev/null +++ b/devel_tools/makefun_factory/orb_87.f90 @@ -0,0 +1,165 @@ + ! f orbitals + ! R(r)= c*exp(-z r^2)*(9/4/z-r^2) + + + + ! indorbp=indorb + indparp=indpar+1 + dd1=dd(indparp) + dd2=dsqrt(dd1) + + ! if(iflagnorm.gt.2) then + ! overall normalization + ! c=8.d0/dsqrt(15.d0)*(2.d0/pi)**(3.d0/4.d0)*dd1**(9.d0/4.d0)*ratiocf + c=dd1**2.25d0*ratiocf + ! endif + + do k=indtmin,indtm + cost=dd1*r(k)**2/(1.d0+dd2*r(k)) + distp(k,1)=c*dexp(-cost) + end do + + + + do i=indtmin,indtm + distp(i,2)=cost1f*rmu(3,i) & + *(5.d0*rmu(3,i)**2-3.d0*r(i)**2) + ! lz=0 + distp(i,3)=cost2f*rmu(1,i) & + *(5.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-1 + distp(i,4)=cost2f*rmu(2,i) & + *(5.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-1 + distp(i,5)=cost3f*rmu(3,i) & + *(rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-2 + distp(i,6)=cost3f*2.d0*rmu(3,i) & + *rmu(1,i)*rmu(2,i) + ! lz=+/-2 + distp(i,7)=cost4f*rmu(1,i) & + *(rmu(1,i)**2-3.d0*rmu(2,i)**2) + ! lz=+/-3 + distp(i,8)=cost4f*rmu(2,i) & + *(3.d0*rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-3 + end do + + + do ic=1,7 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + cost=(1.d0+0.5d0*dd2*r(k))/(1.d0+dd2*r(k))**2 + z(indorbp,k)=distp(k,1)*(9.d0/4.d0/dd1-r(k)**2*cost)* & + distp(k,1+ic) + end do + ! endif + end do + + + if(typec.ne.1) then + + rp1=dd1*r(0)**2 + rp2=dd2*r(0) + rp3=(1.d0+rp2)**2 + + cost=(1.d0+0.5d0*rp2)/rp3 + fun0=distp(0,1)*(9.d0/4.d0/dd1-r(0)**2*cost) + + fun=0.25d0*distp(0,1)* & + (-26.d0-59.d0*rp2-36.d0*rp1-3.d0*rp1*rp2+2.d0*rp1**2)/rp3**2 + fun2=0.25d0*distp(0,1)* & + (-26.d0-66.d0*rp2+22.d0*rp1+178.d0*rp1*rp2+165.d0*rp1**2 & + +54.d0*rp1**2*rp2+rp1**3-2.d0*rp1**3*rp2)/rp3**3 + + + ! indorbp=indorb + do ic=1,7 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0) & + *fun + if(ic.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 6.d0*cost1f*fun0*rmu(i,0)*rmu(3,0) + if(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost1f*fun0*(15.d0*rmu(i,0)**2-3.d0*r(0)**2) + end if + elseif(ic.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*cost2f*fun0*rmu(i,0)*rmu(1,0) + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost2f*fun0*(5.d0*rmu(3,0)**2-r(0)**2) + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 10.d0*cost2f*fun0*rmu(i,0)*rmu(1,0) + end if + elseif(ic.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*cost2f*fun0*rmu(i,0)*rmu(2,0) + if(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost2f*fun0*(5.d0*rmu(3,0)**2-r(0)**2) + elseif(i.eq.3) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 10.d0*cost2f*fun0*rmu(i,0)*rmu(2,0) + end if + elseif(ic.eq.4) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 2.d0*cost3f*fun0*rmu(2,0)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + cost3f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(2,0)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 2.d0*cost3f*fun0*rmu(1,0)*rmu(2,0) + end if + elseif(ic.eq.6) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 3.d0*cost4f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)- & + 6.d0*cost4f*fun0*rmu(1,0)*rmu(2,0) + end if + else + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 6.d0*cost4f*fun0*rmu(1,0)*rmu(2,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i)+ & + 3.d0*cost4f*fun0*(rmu(1,0)**2-rmu(2,0)**2) + end if + !endif for ic + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,1+ic)*(8.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+7 + indorb=indorbp + diff --git a/devel_tools/makefun_factory/orb_88.f90 b/devel_tools/makefun_factory/orb_88.f90 new file mode 100644 index 0000000..7a8aeb3 --- /dev/null +++ b/devel_tools/makefun_factory/orb_88.f90 @@ -0,0 +1,197 @@ + ! g single gaussian orbital + ! R(r)= exp(-alpha r^2) + ! normalized + + ! indorbp=indorb + indparp=indpar+1 + + dd1=dd(indparp) + dd2=dsqrt(dd1) + + ! if(iflagnorm.gt.2) then + ! overall normalization + ! c=16.d0/dsqrt(105.d0)*(2.d0/pi)**(3.d0/4.d0)*dd1**(11.d0/4.d0)*ratiocg + c=dd1**2.75d0*ratiocg + ! endif + + do k=indtmin,indtm + cost=dd1*r(k)**2/(1.d0+dd2*r(k)) + distp(k,1)=c*dexp(-cost) + end do + + + + + do i=indtmin,indtm + distp(i,2)=cost1g*(35.d0*rmu(3,i)**4 & + -30.d0*rmu(3,i)**2*r(i)**2+3.d0*r(i)**4) + ! lz=0 + distp(i,3)=cost2g*rmu(1,i)*rmu(3,i) & + *(7.d0*rmu(3,i)**2-3.d0*r(i)**2) + ! lz=+/-1 + distp(i,4)=cost2g*rmu(2,i)*rmu(3,i) & + *(7.d0*rmu(3,i)**2-3.d0*r(i)**2) + ! lz=+/-1 + distp(i,5)=cost3g*(rmu(1,i)**2-rmu(2,i)**2) & + *(7.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-2 + distp(i,6)=cost3g*2.d0*rmu(1,i)*rmu(2,i) & + *(7.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-2 + distp(i,7)=cost4g*rmu(1,i)*rmu(3,i) & + *(rmu(1,i)**2-3.0*rmu(2,i)**2) + ! lz=+/-3 + distp(i,8)=cost4g*rmu(2,i)*rmu(3,i) & + *(3.d0*rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-3 + distp(i,9)=cost5g*(rmu(1,i)**4 & + -6.d0*rmu(1,i)**2*rmu(2,i)**2+rmu(2,i)**4) + ! lz=+/-4 + distp(i,10)=cost5g*4.d0*rmu(1,i)*rmu(2,i) & + *(rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-4 + end do + + + do ic=1,9 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + z(indorbp,k)=distp(k,1)*distp(k,1+ic) + end do + ! endif + end do + + + if(typec.ne.1) then + + + fun0=distp(0,1) + rp1=dd1*r(0)**2 + rp2=dd2*r(0) + rp3=(1.d0+rp2)**2 + + fun=-dd1*distp(0,1)*(2.d0+rp2)/rp3 + + + ! the second derivative + fun2=dd1*distp(0,1)*(-2.d0-2.d0*rp2+4.d0*rp1+4.d0*rp1*rp2+rp1**2)/rp3**2 + + + + + ! indorbp=indorb + do ic=1,9 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0)*fun + if(ic.eq.1) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost1g*fun0*(-60.d0*rmu(1,0)*rmu(3,0)**2+12.d0*rmu(1,0)*r(0)**2) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost1g*fun0*(-60.d0*rmu(2,0)*rmu(3,0)**2+12.d0*rmu(2,0)*r(0)**2) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost1g*fun0*(80.d0*rmu(3,0)**3-48.d0*rmu(3,0)*r(0)**2) + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-9.d0*rmu(1,0)**2*rmu(3,0)-3.d0*rmu(2,0)**2*rmu(3,0)+4.d0*rmu(3,0)**3) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0)) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-3.d0*rmu(1,0)*(rmu(1,0)**2+rmu(2,0)**2-4.d0*rmu(3,0)**2)) + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0)) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-3.d0*rmu(1,0)**2*rmu(3,0)-9.d0*rmu(2,0)**2*rmu(3,0)+4.d0*rmu(3,0)**3) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-3.d0*rmu(2,0)*(rmu(1,0)**2+rmu(2,0)**2-4.d0*rmu(3,0)**2)) + end if + elseif(ic.eq.4) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(-4.d0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(3,0)**2)) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(4.d0*(rmu(2,0)**3-3.d0*rmu(2,0)*rmu(3,0)**2)) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(12.d0*(rmu(1,0)**2-rmu(2,0)**2)*rmu(3,0)) + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(-2.d0*rmu(2,0)*(3.d0*rmu(1,0)**2+rmu(2,0)**2-6.d0*rmu(3,0)**2)) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(-2.d0*rmu(1,0)*(rmu(1,0)**2+3.d0*rmu(2,0)**2-6.d0*rmu(3,0)**2)) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*24.d0*rmu(1,0)*rmu(2,0)*rmu(3,0) + end if + elseif(ic.eq.6) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*3.d0*(rmu(1,0)**2-rmu(2,0)**2)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + -cost4g*fun0*6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(2,0)**2) + end if + elseif(ic.eq.7) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*3.d0*(rmu(1,0)**2-rmu(2,0)**2)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*(3.d0*rmu(1,0)**2*rmu(2,0)-rmu(2,0)**3) + end if + elseif(ic.eq.8) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost5g*fun0*4.d0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(2,0)**2) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost5g*fun0*4.d0*(rmu(2,0)**3-3.d0*rmu(1,0)**2*rmu(2,0)) + end if + elseif(ic.eq.9) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost5g*fun0*4.d0*(3.d0*rmu(1,0)**2*rmu(2,0)-rmu(2,0)**3) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost5g*fun0*4.d0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(2,0)**2) + end if + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,1+ic)*(10.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+9 + indorb=indorbp + + diff --git a/devel_tools/makefun_factory/orb_89.f90 b/devel_tools/makefun_factory/orb_89.f90 new file mode 100644 index 0000000..dbc0acf --- /dev/null +++ b/devel_tools/makefun_factory/orb_89.f90 @@ -0,0 +1,206 @@ + ! g single gaussian orbital + ! derivative of 51 + ! R(r)= exp(-alpha r^2) + ! normalized + + + ! indorbp=indorb + indparp=indpar+1 + + dd1=dd(indparp) + dd2=dsqrt(dd1) + + ! if(iflagnorm.gt.2) then + ! overall normalization + ! c=16.d0/dsqrt(105.d0)*(2.d0/pi)**(3.d0/4.d0)*dd1**(11.d0/4.d0)*ratiocg + c=dd1**2.75d0*ratiocg + ! endif + + do k=indtmin,indtm + cost=dd1*r(k)**2/(1.d0+dd2*r(k)) + distp(k,1)=c*dexp(-cost) + end do + + + + + do i=indtmin,indtm + distp(i,2)=cost1g*(35.d0*rmu(3,i)**4 & + -30.d0*rmu(3,i)**2*r(i)**2+3.d0*r(i)**4) + ! lz=0 + distp(i,3)=cost2g*rmu(1,i)*rmu(3,i) & + *(7.d0*rmu(3,i)**2-3.d0*r(i)**2) + ! lz=+/-1 + distp(i,4)=cost2g*rmu(2,i)*rmu(3,i) & + *(7.d0*rmu(3,i)**2-3.d0*r(i)**2) + ! lz=+/-1 + distp(i,5)=cost3g*(rmu(1,i)**2-rmu(2,i)**2) & + *(7.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-2 + distp(i,6)=cost3g*2.d0*rmu(1,i)*rmu(2,i) & + *(7.d0*rmu(3,i)**2-r(i)**2) + ! lz=+/-2 + distp(i,7)=cost4g*rmu(1,i)*rmu(3,i) & + *(rmu(1,i)**2-3.0*rmu(2,i)**2) + ! lz=+/-3 + distp(i,8)=cost4g*rmu(2,i)*rmu(3,i) & + *(3.d0*rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-3 + distp(i,9)=cost5g*(rmu(1,i)**4 & + -6.d0*rmu(1,i)**2*rmu(2,i)**2+rmu(2,i)**4) + ! lz=+/-4 + distp(i,10)=cost5g*4.d0*rmu(1,i)*rmu(2,i) & + *(rmu(1,i)**2-rmu(2,i)**2) + ! lz=+/-4 + end do + + + do ic=1,9 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do k=i0,indtm + cost=(1.d0+0.5d0*dd2*r(k))/(1.d0+dd2*r(k))**2 + z(indorbp,k)=distp(k,1)*(11.d0/4.d0/dd1-r(k)**2*cost)* & + distp(k,1+ic) + end do + ! endif + end do + + + if(typec.ne.1) then + + rp1=dd1*r(0)**2 + rp2=dd2*r(0) + rp3=(1.d0+rp2)**2 + + cost=(1.d0+0.5d0*rp2)/rp3 + fun0=distp(0,1)*(11.d0/4.d0/dd1-r(0)**2*cost) + + fun=0.25d0*distp(0,1)* & + (-30.d0-69.d0*rp2-44.d0*rp1-5.d0*rp1*rp2+2.d0*rp1**2)/rp3**2 + fun2=0.25d0*distp(0,1)* & + (-30.d0-78.d0*rp2+18.d0*rp1+198.d0*rp1*rp2+191.d0*rp1**2 & + +66.d0*rp1**2*rp2+3.d0*rp1**3-2.d0*rp1**3*rp2)/rp3**3 + + + ! indorbp=indorb + do ic=1,9 + ! if(iocc(indshell+ic).eq.1) then + indorbp=indorb+ic + do i=1,3 + z(indorbp,indt+i)=distp(0,1+ic)*rmu(i,0)*fun + if(ic.eq.1) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost1g*fun0*(-60.d0*rmu(1,0)*rmu(3,0)**2+12.d0*rmu(1,0)*r(0)**2) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost1g*fun0*(-60.d0*rmu(2,0)*rmu(3,0)**2+12.d0*rmu(2,0)*r(0)**2) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost1g*fun0*(80.d0*rmu(3,0)**3-48.d0*rmu(3,0)*r(0)**2) + end if + elseif(ic.eq.2) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-9.d0*rmu(1,0)**2*rmu(3,0)-3.d0*rmu(2,0)**2*rmu(3,0)+4.d0*rmu(3,0)**3) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0)) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-3.d0*rmu(1,0)*(rmu(1,0)**2+rmu(2,0)**2-4.d0*rmu(3,0)**2)) + end if + elseif(ic.eq.3) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0)) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-3.d0*rmu(1,0)**2*rmu(3,0)-9.d0*rmu(2,0)**2*rmu(3,0)+4.d0*rmu(3,0)**3) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost2g*fun0*(-3.d0*rmu(2,0)*(rmu(1,0)**2+rmu(2,0)**2-4.d0*rmu(3,0)**2)) + end if + elseif(ic.eq.4) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(-4.d0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(3,0)**2)) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(4.d0*(rmu(2,0)**3-3.d0*rmu(2,0)*rmu(3,0)**2)) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(12.d0*(rmu(1,0)**2-rmu(2,0)**2)*rmu(3,0)) + end if + elseif(ic.eq.5) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(-2.d0*rmu(2,0)*(3.d0*rmu(1,0)**2+rmu(2,0)**2-6.d0*rmu(3,0)**2)) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*(-2.d0*rmu(1,0)*(rmu(1,0)**2+3.d0*rmu(2,0)**2-6.d0*rmu(3,0)**2)) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost3g*fun0*24.d0*rmu(1,0)*rmu(2,0)*rmu(3,0) + end if + elseif(ic.eq.6) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*3.d0*(rmu(1,0)**2-rmu(2,0)**2)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + -cost4g*fun0*6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(2,0)**2) + end if + elseif(ic.eq.7) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*6.d0*rmu(1,0)*rmu(2,0)*rmu(3,0) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*3.d0*(rmu(1,0)**2-rmu(2,0)**2)*rmu(3,0) + else + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost4g*fun0*(3.d0*rmu(1,0)**2*rmu(2,0)-rmu(2,0)**3) + end if + elseif(ic.eq.8) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost5g*fun0*4.d0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(2,0)**2) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost5g*fun0*4.d0*(rmu(2,0)**3-3.d0*rmu(1,0)**2*rmu(2,0)) + end if + elseif(ic.eq.9) then + if(i.eq.1) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost5g*fun0*4.d0*(3.d0*rmu(1,0)**2*rmu(2,0)-rmu(2,0)**3) + elseif(i.eq.2) then + z(indorbp,indt+i)=z(indorbp,indt+i) & + +cost5g*fun0*4.d0*(rmu(1,0)**3-3.d0*rmu(1,0)*rmu(2,0)**2) + end if + end if + !enddo for i + end do + z(indorbp,indt+4)=distp(0,1+ic)*(10.d0*fun+fun2) + !endif for iocc + ! endif + ! enddo fot ic + end do + + !endif for indt + end if + + indpar=indpar+1 + indshell=indshell+9 + indorb=indorbp + + ! WARNING IN DFT it is assumed that UMRIGAR orbitals could be extended + ! up to number 99, so i,h,... are possible extensions. + + + + ! 1s single Z NO CUSP! diff --git a/devel_tools/makefun_factory/orb_90:99.f90 b/devel_tools/makefun_factory/orb_90:99.f90 new file mode 100644 index 0000000..c46c4de --- /dev/null +++ b/devel_tools/makefun_factory/orb_90:99.f90 @@ -0,0 +1,273 @@ + ! cartesian orbitals + ! + ! - angmom := iopt - 90 + ! - type = Gaussian + ! - normalized = yes + ! - angtype = cartesian + ! - npar = 1 + ! - multiplicity := (iopt - 90 + 2) * (iopt - 90 + 1) // 2 + ! + + indshellp=indshell+1 + indorbp=indorb+1 + dd1=dd(indpar+1) + + multiplicity = (iopt - 90 + 2) * (iopt - 90 + 1) / 2 + + powers(:,-2,:) = 0.0d0 + powers(:,-1,:) = 0.0d0 + powers(:,0,:) = 1.0d0 + + do ii = 1, max_power + do k = indtmin, indtm + powers(1, ii, k) = powers(1, ii-1, k) * rmu(1, k) + powers(2, ii, k) = powers(2, ii-1, k) * rmu(2, k) + powers(3, ii, k) = powers(3, ii-1, k) * rmu(3, k) + end do + end do + + c = 0.712705470354990_8 * dd1 ** 0.75_8! * 2.829 + if (iopt - 90 .ne. 0) then + c = c * (8_4 * dd1) ** ((iopt - 90)/2.0_8) + end if + do k = i0, indtm + distp(k,1) = dexp(-1.0_8 * dd1 * r(k) * r(k)) * c + end do + do k = i0, indtm + count = 0 + do ii = (iopt - 90), 0, -1 + do jj = (iopt - 90) - ii, 0, -1 + kk = (iopt - 90) - ii - jj + z(indorbp + count, k) = 1.0_8 + rp1 = 1.0_8 + do i = ii + 1, 2 * ii + rp1 = rp1 * i + end do + z(indorbp + count, k) = z(indorbp + count, k) / dsqrt(rp1) + rp1 = 1.0_8 + do i = jj + 1, 2 * jj + rp1 = rp1 * i + end do + z(indorbp + count, k) = z(indorbp + count, k) / dsqrt(rp1) + rp1 = 1.0_8 + do i = kk + 1, 2 * kk + rp1 = rp1 * i + end do + z(indorbp + count, k) = z(indorbp + count, k) / dsqrt(rp1) + count = count + 1 + end do + end do + end do + + ! We need to calculate it again for derivatives, it could not be done in previous loop because of case if i0 /= indtmin + if (typec .ne. 1) then + count = 0 + do ii = (iopt - 90), 0, -1 + do jj = (iopt - 90) - ii, 0, -1 + kk = (iopt - 90) - ii - jj + z(indorbp + count, indt + 1) = 1.0_8 + z(indorbp + count, indt + 2) = 1.0_8 + z(indorbp + count, indt + 3) = 1.0_8 + z(indorbp + count, indt + 4) = 1.0_8 + rp1 = 1.0_8 + do i = ii + 1, 2 * ii + rp1 = rp1 * i + end do + z(indorbp + count, indt + 1) = z(indorbp + count, indt + 1) / dsqrt(rp1) + z(indorbp + count, indt + 2) = z(indorbp + count, indt + 2) / dsqrt(rp1) + z(indorbp + count, indt + 3) = z(indorbp + count, indt + 3) / dsqrt(rp1) + z(indorbp + count, indt + 4) = z(indorbp + count, indt + 4) / dsqrt(rp1) + rp1 = 1.0_8 + do i = jj + 1, 2 * jj + rp1 = rp1 * i + end do + z(indorbp + count, indt + 1) = z(indorbp + count, indt + 1) / dsqrt(rp1) + z(indorbp + count, indt + 2) = z(indorbp + count, indt + 2) / dsqrt(rp1) + z(indorbp + count, indt + 3) = z(indorbp + count, indt + 3) / dsqrt(rp1) + z(indorbp + count, indt + 4) = z(indorbp + count, indt + 4) / dsqrt(rp1) + rp1 = 1.0_8 + do i = kk + 1, 2 * kk + rp1 = rp1 * i + end do + z(indorbp + count, indt + 1) = z(indorbp + count, indt + 1) / dsqrt(rp1) + z(indorbp + count, indt + 2) = z(indorbp + count, indt + 2) / dsqrt(rp1) + z(indorbp + count, indt + 3) = z(indorbp + count, indt + 3) / dsqrt(rp1) + z(indorbp + count, indt + 4) = z(indorbp + count, indt + 4) / dsqrt(rp1) + count = count + 1 + end do + end do + end if + + ! Initialize gradients and laplacians (radial part) + + if (typec .ne. 1) then + distp(indt + 1, 1) = -2.0d0 * dd1 * rmu(1, 0) * distp(0, 1) + distp(indt + 2, 1) = -2.0d0 * dd1 * rmu(2, 0) * distp(0, 1) + distp(indt + 3, 1) = -2.0d0 * dd1 * rmu(3, 0) * distp(0, 1) + distp(indt + 4, 1) = dd1 * (4.0d0 * dd1 * (r(0) * r(0)) - 6.0d0) * distp(0, 1) + end if + + do k = i0, indtm + count = 0 + do ii = (iopt - 90), 0, -1 + do jj = (iopt - 90) - ii, 0, -1 + kk = (iopt - 90) - ii - jj + z(indorbp + count, k) = z(indorbp + count, k) * powers(1, ii, k) + z(indorbp + count, k) = z(indorbp + count, k) * powers(2, jj, k) + z(indorbp + count, k) = z(indorbp + count, k) * powers(3, kk, k) + count = count + 1 + end do + end do + end do + + if (typec .ne. 1) then + ! Solve ang_mom = 0, 1 separately + if (iopt - 90 .eq. 0) then + z(indorbp, indt + 1) = distp(indt + 1, 1) + z(indorbp, indt + 2) = distp(indt + 2, 1) + z(indorbp, indt + 3) = distp(indt + 3, 1) + z(indorbp, indt + 4) = distp(indt + 4, 1) + else if (iopt - 90 .eq. 1) then + rp1 = dsqrt(2.0_8) + z(indorbp , indt + 1) = (distp(indt + 1, 1) * rmu(1, indtmin) + distp(0, 1)) / rp1 + z(indorbp , indt + 2) = (distp(indt + 2, 1) * rmu(1, indtmin)) / rp1 + z(indorbp , indt + 3) = (distp(indt + 3, 1) * rmu(1, indtmin)) / rp1 + + z(indorbp + 1, indt + 1) = (distp(indt + 1, 1) * rmu(2, indtmin)) / rp1 + z(indorbp + 1, indt + 2) = (distp(indt + 2, 1) * rmu(2, indtmin) + distp(0, 1)) / rp1 + z(indorbp + 1, indt + 3) = (distp(indt + 3, 1) * rmu(2, indtmin)) / rp1 + + z(indorbp + 2, indt + 1) = (distp(indt + 1, 1) * rmu(3, indtmin)) / rp1 + z(indorbp + 2, indt + 2) = (distp(indt + 2, 1) * rmu(3, indtmin)) / rp1 + z(indorbp + 2, indt + 3) = (distp(indt + 3, 1) * rmu(3, indtmin) + distp(0, 1)) / rp1 + + z(indorbp , indt + 4) = (distp(indt + 4, 1) * rmu(1, indtmin) + 2.0d0 * distp(indt + 1, 1)) / rp1 + z(indorbp + 1, indt + 4) = (distp(indt + 4, 1) * rmu(2, indtmin) + 2.0d0 * distp(indt + 2, 1)) / rp1 + z(indorbp + 2, indt + 4) = (distp(indt + 4, 1) * rmu(3, indtmin) + 2.0d0 * distp(indt + 3, 1)) / rp1 + else if (iopt - 90 .eq. 2) then + rp1 = 2.0_8 + rp2 = dsqrt(12.0_8) + z(indorbp , indt + 1) = (distp(indt + 1, 1) & + & * rmu(1, indtmin) * rmu(1, indtmin) + 2 * rmu(1, indtmin) * distp(0, 1)) / rp2 + z(indorbp , indt + 2) = (distp(indt + 2, 1) & + & * rmu(1, indtmin) * rmu(1, indtmin)) / rp2 + z(indorbp , indt + 3) = (distp(indt + 3, 1) & + & * rmu(1, indtmin) * rmu(1, indtmin)) / rp2 + + z(indorbp + 1, indt + 1) = (distp(indt + 1, 1) & + & * rmu(1, indtmin) * rmu(2, indtmin) + rmu(2, indtmin) * distp(0, 1)) / rp1 + z(indorbp + 1, indt + 2) = (distp(indt + 2, 1) & + & * rmu(1, indtmin) * rmu(2, indtmin) + rmu(1, indtmin) * distp(0, 1)) / rp1 + z(indorbp + 1, indt + 3) = (distp(indt + 3, 1) & + & * rmu(1, indtmin) * rmu(2, indtmin)) / rp1 + + z(indorbp + 2, indt + 1) = (distp(indt + 1, 1) & + & * rmu(1, indtmin) * rmu(3, indtmin) + rmu(3, indtmin) * distp(0, 1)) / rp1 + z(indorbp + 2, indt + 2) = (distp(indt + 2, 1) & + & * rmu(1, indtmin) * rmu(3, indtmin)) / rp1 + z(indorbp + 2, indt + 3) = (distp(indt + 3, 1) & + & * rmu(1, indtmin) * rmu(3, indtmin)) + rmu(1, indtmin) * distp(0, 1)/ rp1 + + z(indorbp + 3, indt + 1) = (distp(indt + 1, 1) & + & * rmu(2, indtmin) * rmu(2, indtmin)) / rp2 + z(indorbp + 3, indt + 2) = (distp(indt + 2, 1) & + & * rmu(2, indtmin) * rmu(2, indtmin) + 2 * rmu(2, indtmin) * distp(0, 1)) / rp2 + z(indorbp + 3, indt + 3) = (distp(indt + 3, 1) & + & * rmu(2, indtmin) * rmu(2, indtmin)) / rp2 + + z(indorbp + 4, indt + 1) = (distp(indt + 1, 1) & + & * rmu(2, indtmin) * rmu(3, indtmin)) / rp1 + z(indorbp + 4, indt + 2) = (distp(indt + 2, 1) & + & * rmu(2, indtmin) * rmu(3, indtmin) + rmu(3, indtmin) * distp(0, 1)) / rp1 + z(indorbp + 4, indt + 3) = (distp(indt + 3, 1) & + & * rmu(2, indtmin) * rmu(3, indtmin) + rmu(2, indtmin) * distp(0, 1)) / rp1 + + z(indorbp + 5, indt + 1) = (distp(indt + 1, 1) & + & * rmu(3, indtmin) * rmu(3, indtmin)) / rp2 + z(indorbp + 5, indt + 2) = (distp(indt + 2, 1) & + & * rmu(3, indtmin) * rmu(3, indtmin)) / rp2 + z(indorbp + 5, indt + 3) = (distp(indt + 3, 1) & + & * rmu(3, indtmin) * rmu(3, indtmin) + 2 * rmu(3, indtmin) * distp(0, 1)) / rp2 + + z(indorbp , indt + 4) = (1.0d0 * distp(indt + 4, 1) * rmu(1, indtmin) * rmu(1, indtmin)& + & + 4.0d0 * distp(indt + 1, 1) * rmu(1, indtmin)& + & + 2.0d0 * distp(0, 1)) / rp2 + z(indorbp + 1, indt + 4) = (1.0d0 * distp(indt + 4, 1) * rmu(1, indtmin) * rmu(2, indtmin)& + & + 2.0d0 * distp(indt + 2, 1) * rmu(1, indtmin)& + & + 2.0d0 * distp(indt + 1, 1) * rmu(2, indtmin)) / rp1 + z(indorbp + 2, indt + 4) = (1.0d0 * distp(indt + 4, 1) * rmu(1, indtmin) * rmu(3, indtmin)& + & + 2.0d0 * distp(indt + 3, 1) * rmu(1, indtmin)& + & + 2.0d0 * distp(indt + 1, 1) * rmu(3, indtmin)) / rp1 + z(indorbp + 3, indt + 4) = (1.0d0 * distp(indt + 4, 1) * rmu(2, indtmin) * rmu(2, indtmin)& + & + 4.0d0 * distp(indt + 2, 1) * rmu(2, indtmin)& + & + 2.0d0 * distp(0, 1)) / rp2 + z(indorbp + 4, indt + 4) = (1.0d0 * distp(indt + 4, 1) * rmu(2, indtmin) * rmu(3, indtmin)& + & + 2.0d0 * distp(indt + 3, 1) * rmu(2, indtmin)& + & + 2.0d0 * distp(indt + 2, 1) * rmu(3, indtmin)) / rp1 + z(indorbp + 5, indt + 4) = (1.0d0 * distp(indt + 4, 1) * rmu(3, indtmin) * rmu(3, indtmin)& + & + 4.0d0 * distp(indt + 3, 1) * rmu(3, indtmin)& + & + 2.0d0 * distp(0, 1)) / rp2 + else + count = 0 + do ii = (iopt - 90), 0, -1 + do jj = (iopt - 90) - ii, 0, -1 + kk = (iopt - 90) - ii - jj + + ! First store polynomial part into respective places + ! Then solve full laplacian using using lower derivatives + ! Then do the same thing for gradients + ! Then finally the values + + z(indorbp + count, indt + 1) = z(indorbp + count, indt + 1) * powers(1, ii-1, 0) + z(indorbp + count, indt + 1) = z(indorbp + count, indt + 1) * powers(2, jj, 0) + z(indorbp + count, indt + 1) = z(indorbp + count, indt + 1) * powers(3, kk, 0) + z(indorbp + count, indt + 1) = z(indorbp + count, indt + 1) * ii + + z(indorbp + count, indt + 2) = z(indorbp + count, indt + 2) * powers(1, ii, 0) + z(indorbp + count, indt + 2) = z(indorbp + count, indt + 2) * powers(2, jj-1, 0) + z(indorbp + count, indt + 2) = z(indorbp + count, indt + 2) * powers(3, kk, 0) + z(indorbp + count, indt + 2) = z(indorbp + count, indt + 2) * jj + + z(indorbp + count, indt + 3) = z(indorbp + count, indt + 3) * powers(1, ii, 0) + z(indorbp + count, indt + 3) = z(indorbp + count, indt + 3) * powers(2, jj, 0) + z(indorbp + count, indt + 3) = z(indorbp + count, indt + 3) * powers(3, kk-1, 0) + z(indorbp + count, indt + 3) = z(indorbp + count, indt + 3) * kk + + z(indorbp + count, indt + 4) = z(indorbp + count, indt + 4) & + & * (powers(1, ii-2, 0) * powers(2, jj, 0) * powers(3, kk, 0) * ii * (ii-1)& + & + powers(1, ii, 0) * powers(2, jj-2, 0) * powers(3, kk, 0) * jj * (jj-1)& + & + powers(1, ii, 0) * powers(2, jj, 0) * powers(3, kk-2, 0) * kk * (kk-1)) + + + ! All polynomial parts are now stored + ! Now solve laplacian + z(indorbp + count, indt + 4) = z(indorbp + count, indt + 4) * distp(0, 1) & + & + 2.0_8 * z(indorbp + count, indt + 1) * distp(indt + 1, 1) & + & + 2.0_8 * z(indorbp + count, indt + 2) * distp(indt + 2, 1) & + & + 2.0_8 * z(indorbp + count, indt + 3) * distp(indt + 3, 1) & + & + z(indorbp + count, indtmin) * distp(indt + 4, 1) + + ! Now solve gradients + z(indorbp + count, indt + 1) = z(indorbp + count, indt + 1) * distp(0, 1) & + & + z(indorbp + count, indtmin) * distp(indt + 1, 1) + z(indorbp + count, indt + 2) = z(indorbp + count, indt + 2) * distp(0, 1) & + & + z(indorbp + count, indtmin) * distp(indt + 2, 1) + z(indorbp + count, indt + 3) = z(indorbp + count, indt + 3) * distp(0, 1) & + & + z(indorbp + count, indtmin) * distp(indt + 3, 1) + count = count + 1 + end do + end do + end if + + end if + + ! Multiply by radial part for values + do ii = 1, multiplicity + do kk = i0, indtm + z(indorbp + ii - 1, kk) = z(indorbp + ii - 1, kk) * distp(kk, 1) + end do + end do + + indpar=indpar + 1 + indshell=indshell + multiplicity + indorb=indorb + multiplicity