NEB/0000755000700200004540000000000012053440273010461 5ustar marsamoscmNEB/examples/0000755000700200004540000000000012053440276012302 5ustar marsamoscmNEB/examples/clean_all0000755000700200004540000000005512053145633014141 0ustar marsamoscm#!/bin/bash \rm -rf */results* >& /dev/null NEB/examples/example01/0000755000700200004540000000000012053440301014063 5ustar marsamoscmNEB/examples/example01/reference/0000755000700200004540000000000012053440303016023 5ustar marsamoscmNEB/examples/example01/reference/H2+H.int0000644000700200004540000002210712053145633017205 0ustar marsamoscm 0.0000000000 0.0000000000 0.0040000000 0.0000111109 0.0080000000 0.0000446885 0.0120000000 0.0001011002 0.0160000000 0.0001807136 0.0200000000 0.0002838961 0.0240000000 0.0004110151 0.0280000000 0.0005624380 0.0320000000 0.0007385324 0.0360000000 0.0009396657 0.0400000000 0.0011662053 0.0440000000 0.0014185188 0.0480000000 0.0016969734 0.0520000000 0.0020019368 0.0560000000 0.0023337763 0.0600000000 0.0026928594 0.0640000000 0.0030795536 0.0680000000 0.0034942263 0.0720000000 0.0039372450 0.0760000000 0.0044089770 0.0800000000 0.0049097900 0.0840000000 0.0054400512 0.0880000000 0.0060001283 0.0920000000 0.0065903886 0.0960000000 0.0072111995 0.1000000000 0.0078629286 0.1040000000 0.0085459433 0.1080000000 0.0092606110 0.1120000000 0.0100072992 0.1160000000 0.0107863753 0.1200000000 0.0115982069 0.1240000000 0.0124431613 0.1280000000 0.0133216060 0.1320000000 0.0142339084 0.1360000000 0.0151804361 0.1400000000 0.0161615564 0.1440000000 0.0171776369 0.1480000000 0.0182290449 0.1520000000 0.0193161479 0.1560000000 0.0204393134 0.1600000000 0.0215989089 0.1640000000 0.0227953017 0.1680000000 0.0240288594 0.1720000000 0.0252999493 0.1760000000 0.0266089390 0.1800000000 0.0279561959 0.1840000000 0.0293420874 0.1880000000 0.0307669810 0.1920000000 0.0322312442 0.1960000000 0.0337362983 0.2000000000 0.0352883203 0.2040000000 0.0368878557 0.2080000000 0.0385344263 0.2120000000 0.0402275537 0.2160000000 0.0419667594 0.2200000000 0.0437515651 0.2240000000 0.0455814924 0.2280000000 0.0474560629 0.2320000000 0.0493747984 0.2360000000 0.0513372203 0.2400000000 0.0533428503 0.2440000000 0.0553912101 0.2480000000 0.0574818212 0.2520000000 0.0596142053 0.2560000000 0.0617878839 0.2600000000 0.0640023789 0.2640000000 0.0662572116 0.2680000000 0.0685519038 0.2720000000 0.0708859772 0.2760000000 0.0732589532 0.2800000000 0.0756703536 0.2840000000 0.0781196999 0.2880000000 0.0806065138 0.2920000000 0.0831303169 0.2960000000 0.0856906309 0.3000000000 0.0882869772 0.3040000000 0.0909188777 0.3080000000 0.0935858539 0.3120000000 0.0962874274 0.3160000000 0.0990231198 0.3200000000 0.1017924528 0.3240000000 0.1045949479 0.3280000000 0.1074301269 0.3320000000 0.1102975113 0.3360000000 0.1131966228 0.3400000000 0.1161269830 0.3440000000 0.1190881134 0.3480000000 0.1220795358 0.3520000000 0.1251007717 0.3560000000 0.1281513428 0.3600000000 0.1312307706 0.3640000000 0.1343266211 0.3680000000 0.1374212724 0.3720000000 0.1405094183 0.3760000000 0.1435857738 0.3800000000 0.1466450542 0.3840000000 0.1496819745 0.3880000000 0.1526912499 0.3920000000 0.1556675955 0.3960000000 0.1586057265 0.4000000000 0.1615003580 0.4040000000 0.1643462052 0.4080000000 0.1671379831 0.4120000000 0.1698704070 0.4160000000 0.1725381920 0.4200000000 0.1751360532 0.4240000000 0.1776587057 0.4280000000 0.1801008648 0.4320000000 0.1824572454 0.4360000000 0.1847225629 0.4400000000 0.1868915322 0.4440000000 0.1889588686 0.4480000000 0.1909192872 0.4520000000 0.1927675032 0.4560000000 0.1944982316 0.4600000000 0.1961061876 0.4640000000 0.1975860864 0.4680000000 0.1989326431 0.4720000000 0.2001405728 0.4760000000 0.2012045906 0.4800000000 0.2021194118 0.4840000000 0.2028797515 0.4880000000 0.2034803247 0.4920000000 0.2039158467 0.4960000000 0.2041810325 0.5000000000 0.2042705973 0.5040000000 0.2041810188 0.5080000000 0.2039158209 0.5120000000 0.2034802883 0.5160000000 0.2028797059 0.5200000000 0.2021193585 0.5240000000 0.2012045309 0.5280000000 0.2001405078 0.5320000000 0.1989325740 0.5360000000 0.1975860144 0.5400000000 0.1961061136 0.5440000000 0.1944981565 0.5480000000 0.1927674280 0.5520000000 0.1909192126 0.5560000000 0.1889587954 0.5600000000 0.1868914610 0.5640000000 0.1847224942 0.5680000000 0.1824571798 0.5720000000 0.1801008026 0.5760000000 0.1776586474 0.5800000000 0.1751359990 0.5840000000 0.1725381421 0.5880000000 0.1698703616 0.5920000000 0.1671379422 0.5960000000 0.1643461688 0.6000000000 0.1615003260 0.6040000000 0.1586056988 0.6080000000 0.1556675718 0.6120000000 0.1526912299 0.6160000000 0.1496819579 0.6200000000 0.1466450405 0.6240000000 0.1435857626 0.6280000000 0.1405094088 0.6320000000 0.1374212641 0.6360000000 0.1343266132 0.6400000000 0.1312307624 0.6440000000 0.1281513351 0.6480000000 0.1251007647 0.6520000000 0.1220795293 0.6560000000 0.1190881076 0.6600000000 0.1161269777 0.6640000000 0.1131966180 0.6680000000 0.1102975071 0.6720000000 0.1074301231 0.6760000000 0.1045949446 0.6800000000 0.1017924499 0.6840000000 0.0990231173 0.6880000000 0.0962874252 0.6920000000 0.0935858521 0.6960000000 0.0909188763 0.7000000000 0.0882869761 0.7040000000 0.0856906300 0.7080000000 0.0831303164 0.7120000000 0.0806065135 0.7160000000 0.0781196998 0.7200000000 0.0756703537 0.7240000000 0.0732589535 0.7280000000 0.0708859776 0.7320000000 0.0685519045 0.7360000000 0.0662572124 0.7400000000 0.0640023797 0.7440000000 0.0617878849 0.7480000000 0.0596142062 0.7520000000 0.0574818222 0.7560000000 0.0553912111 0.7600000000 0.0533428513 0.7640000000 0.0513372213 0.7680000000 0.0493747993 0.7720000000 0.0474560638 0.7760000000 0.0455814932 0.7800000000 0.0437515657 0.7840000000 0.0419667599 0.7880000000 0.0402275540 0.7920000000 0.0385344265 0.7960000000 0.0368878558 0.8000000000 0.0352883201 0.8040000000 0.0337362979 0.8080000000 0.0322312434 0.8120000000 0.0307669797 0.8160000000 0.0293420856 0.8200000000 0.0279561936 0.8240000000 0.0266089364 0.8280000000 0.0252999464 0.8320000000 0.0240288561 0.8360000000 0.0227952982 0.8400000000 0.0215989051 0.8440000000 0.0204393095 0.8480000000 0.0193161438 0.8520000000 0.0182290407 0.8560000000 0.0171776325 0.8600000000 0.0161615520 0.8640000000 0.0151804317 0.8680000000 0.0142339040 0.8720000000 0.0133216015 0.8760000000 0.0124431569 0.8800000000 0.0115982025 0.8840000000 0.0107863710 0.8880000000 0.0100072950 0.8920000000 0.0092606069 0.8960000000 0.0085459393 0.9000000000 0.0078629248 0.9040000000 0.0072111959 0.9080000000 0.0065903851 0.9120000000 0.0060001250 0.9160000000 0.0054400481 0.9200000000 0.0049097871 0.9240000000 0.0044089743 0.9280000000 0.0039372424 0.9320000000 0.0034942240 0.9360000000 0.0030795515 0.9400000000 0.0026928575 0.9440000000 0.0023337746 0.9480000000 0.0020019353 0.9520000000 0.0016969721 0.9560000000 0.0014185176 0.9600000000 0.0011662044 0.9640000000 0.0009396649 0.9680000000 0.0007385318 0.9720000000 0.0005624375 0.9760000000 0.0004110147 0.9800000000 0.0002838958 0.9840000000 0.0001807134 0.9880000000 0.0001011001 0.9920000000 0.0000446884 0.9960000000 0.0000111109 1.0000000000 0.0000000000 NEB/examples/example01/reference/H2+H.out0000644000700200004540000004110312053145633017217 0ustar marsamoscm Program PWSCF v.4.0 starts ... Today is 28Apr2008 at 16: 2:51 For Norm-Conserving or Ultrasoft (Vanderbilt) Pseudopotentials or PAW Current dimensions of program pwscf are: Max number of different atomic species (ntypx) = 10 Max number of k-points (npk) = 40000 Max angular momentum in pseudopotentials (lmaxx) = 3 gamma-point specific algorithms are used initial path length = 4.2553 bohr initial inter-image distance = 0.7092 bohr calculation = neb restart_mode = from_scratch opt_scheme = broyden num_of_images = 7 nstep = 50 CI_scheme = auto first_last_opt = F coarse-grained phase-space = F use_freezing = F ds = 2.0000 a.u. k_max = 0.3000 a.u. k_min = 0.2000 a.u. suggested k_max = 0.1542 a.u. suggested k_min = 0.1028 a.u. path_thr = 0.1000 eV / A ------------------------------ iteration 1 ------------------------------ tcpu = 0.0 self-consistency for image 1 tcpu = 0.4 self-consistency for image 2 tcpu = 0.9 self-consistency for image 3 tcpu = 1.4 self-consistency for image 4 tcpu = 1.9 self-consistency for image 5 tcpu = 2.4 self-consistency for image 6 tcpu = 2.8 self-consistency for image 7 activation energy (->) = 1.705764 eV activation energy (<-) = 1.705764 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.0010335 2.084250 F 3 -48.1936447 2.303345 F 4 -47.7958079 1.708818 F 5 -48.1936447 2.303352 F 6 -49.0010335 2.084248 F 7 -49.5015717 0.010106 T climbing image = 4 path length = 4.255 bohr inter-image distance = 0.709 bohr ------------------------------ iteration 2 ------------------------------ tcpu = 3.2 self-consistency for image 2 tcpu = 3.7 self-consistency for image 3 tcpu = 4.1 self-consistency for image 4 tcpu = 4.7 self-consistency for image 5 tcpu = 5.2 self-consistency for image 6 activation energy (->) = 1.463729 eV activation energy (<-) = 1.463729 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.1182224 1.626556 F 3 -48.3973162 2.006061 F 4 -48.0378432 1.727851 F 5 -48.3973172 2.006061 F 6 -49.1182222 1.626556 F 7 -49.5015717 0.010106 T climbing image = 4 path length = 4.293 bohr inter-image distance = 0.715 bohr ------------------------------ iteration 3 ------------------------------ tcpu = 5.7 self-consistency for image 2 tcpu = 6.1 self-consistency for image 3 tcpu = 6.6 self-consistency for image 4 tcpu = 7.0 self-consistency for image 5 tcpu = 7.5 self-consistency for image 6 activation energy (->) = 1.098989 eV activation energy (<-) = 1.098989 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.3117485 1.332428 F 3 -48.7120300 1.599538 F 4 -48.4025832 1.696518 F 5 -48.7120303 1.599537 F 6 -49.3117490 1.332424 F 7 -49.5015717 0.010106 T climbing image = 4 path length = 4.457 bohr inter-image distance = 0.743 bohr ------------------------------ iteration 4 ------------------------------ tcpu = 7.9 self-consistency for image 2 tcpu = 8.3 self-consistency for image 3 tcpu = 8.8 self-consistency for image 4 tcpu = 9.3 self-consistency for image 5 tcpu = 9.9 self-consistency for image 6 activation energy (->) = 0.736032 eV activation energy (<-) = 0.736032 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.4419538 0.967940 F 3 -49.0138211 1.611376 F 4 -48.7655401 1.535157 F 5 -49.0138209 1.611375 F 6 -49.4419540 0.967935 F 7 -49.5015717 0.010106 T climbing image = 4 path length = 4.720 bohr inter-image distance = 0.787 bohr ------------------------------ iteration 5 ------------------------------ tcpu = 10.4 self-consistency for image 2 tcpu = 10.8 self-consistency for image 3 tcpu = 11.3 self-consistency for image 4 tcpu = 11.7 self-consistency for image 5 tcpu = 12.2 self-consistency for image 6 activation energy (->) = 0.416523 eV activation energy (<-) = 0.416523 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.4475593 1.270664 F 3 -49.2552417 1.404518 F 4 -49.0850482 1.145325 F 5 -49.2552413 1.404517 F 6 -49.4475591 1.270664 F 7 -49.5015717 0.010106 T climbing image = 4 path length = 5.051 bohr inter-image distance = 0.842 bohr ------------------------------ iteration 6 ------------------------------ tcpu = 12.7 self-consistency for image 2 tcpu = 13.0 self-consistency for image 3 tcpu = 13.6 self-consistency for image 4 tcpu = 14.0 self-consistency for image 5 tcpu = 14.6 self-consistency for image 6 activation energy (->) = 0.212480 eV activation energy (<-) = 0.212480 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.3551546 2.335058 F 3 -49.3494621 1.813497 F 4 -49.2890913 0.273185 F 5 -49.3494621 1.813491 F 6 -49.3551544 2.335058 F 7 -49.5015717 0.010106 T climbing image = 4 path length = 5.415 bohr inter-image distance = 0.903 bohr ------------------------------ iteration 7 ------------------------------ tcpu = 14.9 self-consistency for image 2 tcpu = 15.3 self-consistency for image 3 tcpu = 15.8 self-consistency for image 4 tcpu = 16.3 self-consistency for image 5 tcpu = 16.7 self-consistency for image 6 activation energy (->) = 0.309394 eV activation energy (<-) = 0.309394 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.4633298 0.843368 F 3 -49.3387899 0.644622 F 4 -49.1921777 0.868610 F 5 -49.3387896 0.644623 F 6 -49.4633298 0.843365 F 7 -49.5015717 0.010106 T climbing image = 4 path length = 5.104 bohr inter-image distance = 0.851 bohr ------------------------------ iteration 8 ------------------------------ tcpu = 17.1 self-consistency for image 2 tcpu = 17.5 self-consistency for image 3 tcpu = 17.9 self-consistency for image 4 tcpu = 18.3 self-consistency for image 5 tcpu = 18.7 self-consistency for image 6 activation energy (->) = 0.258082 eV activation energy (<-) = 0.258082 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.4700498 0.152243 F 3 -49.3626600 0.444364 F 4 -49.2434895 0.651593 F 5 -49.3626597 0.444365 F 6 -49.4700498 0.152243 F 7 -49.5015717 0.010106 T climbing image = 4 path length = 5.153 bohr inter-image distance = 0.859 bohr ------------------------------ iteration 9 ------------------------------ tcpu = 19.1 self-consistency for image 2 tcpu = 19.4 self-consistency for image 3 tcpu = 19.8 self-consistency for image 4 tcpu = 20.2 self-consistency for image 5 tcpu = 20.6 self-consistency for image 6 activation energy (->) = 0.223970 eV activation energy (<-) = 0.223970 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.4688392 0.343489 F 3 -49.3763949 0.367419 F 4 -49.2776018 0.412481 F 5 -49.3763947 0.367419 F 6 -49.4688391 0.343489 F 7 -49.5015717 0.010106 T climbing image = 4 path length = 5.215 bohr inter-image distance = 0.869 bohr ------------------------------ iteration 10 ------------------------------ tcpu = 20.9 self-consistency for image 2 tcpu = 21.3 self-consistency for image 3 tcpu = 21.7 self-consistency for image 4 tcpu = 22.0 self-consistency for image 5 tcpu = 22.4 self-consistency for image 6 activation energy (->) = 0.219823 eV activation energy (<-) = 0.219823 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.4707563 0.170855 F 3 -49.3718313 0.271386 F 4 -49.2817489 0.369262 F 5 -49.3718311 0.271386 F 6 -49.4707563 0.170856 F 7 -49.5015717 0.010106 T climbing image = 4 path length = 5.215 bohr inter-image distance = 0.869 bohr ------------------------------ iteration 11 ------------------------------ tcpu = 22.8 self-consistency for image 2 tcpu = 23.2 self-consistency for image 3 tcpu = 23.6 self-consistency for image 4 tcpu = 24.0 self-consistency for image 5 tcpu = 24.4 self-consistency for image 6 activation energy (->) = 0.213924 eV activation energy (<-) = 0.213924 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.4700770 0.049788 F 3 -49.3706616 0.177726 F 4 -49.2876475 0.295103 F 5 -49.3706614 0.177726 F 6 -49.4700770 0.049788 F 7 -49.5015717 0.010106 T climbing image = 4 path length = 5.240 bohr inter-image distance = 0.873 bohr ------------------------------ iteration 12 ------------------------------ tcpu = 24.8 self-consistency for image 2 tcpu = 25.2 self-consistency for image 3 tcpu = 25.6 self-consistency for image 4 tcpu = 26.0 self-consistency for image 5 tcpu = 26.4 self-consistency for image 6 activation energy (->) = 0.205188 eV activation energy (<-) = 0.205188 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.4688491 0.140232 F 3 -49.3705456 0.080977 F 4 -49.2963836 0.094863 F 5 -49.3705455 0.080977 F 6 -49.4688490 0.140232 F 7 -49.5015717 0.010106 T climbing image = 4 path length = 5.294 bohr inter-image distance = 0.882 bohr ------------------------------ iteration 13 ------------------------------ tcpu = 26.8 self-consistency for image 2 tcpu = 27.2 self-consistency for image 3 tcpu = 27.5 self-consistency for image 4 tcpu = 27.9 self-consistency for image 5 tcpu = 28.3 self-consistency for image 6 activation energy (->) = 0.204271 eV activation energy (<-) = 0.204271 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.4686052 0.045064 F 3 -49.3702112 0.042258 F 4 -49.2973011 0.015888 F 5 -49.3702110 0.042258 F 6 -49.4686052 0.045064 F 7 -49.5015717 0.010106 T climbing image = 4 path length = 5.312 bohr inter-image distance = 0.885 bohr --------------------------------------------------------------------------- neb: convergence achieved in 13 iterations PWSCF : 28.62s CPU time, 33.03s wall time init_run : 4.20s CPU ( 67 calls, 0.063 s avg) electrons : 19.76s CPU ( 67 calls, 0.295 s avg) update_pot : 2.13s CPU ( 60 calls, 0.036 s avg) forces : 0.54s CPU ( 67 calls, 0.008 s avg) Called by init_run: wfcinit : 0.01s CPU ( 67 calls, 0.000 s avg) potinit : 1.58s CPU ( 67 calls, 0.024 s avg) Called by electrons: c_bands : 2.66s CPU ( 565 calls, 0.005 s avg) sum_band : 2.80s CPU ( 565 calls, 0.005 s avg) v_of_rho : 13.19s CPU ( 692 calls, 0.019 s avg) newd : 0.55s CPU ( 632 calls, 0.001 s avg) mix_rho : 0.94s CPU ( 565 calls, 0.002 s avg) Called by c_bands: init_us_2 : 0.09s CPU ( 2518 calls, 0.000 s avg) regterg : 2.55s CPU ( 1130 calls, 0.002 s avg) Called by *egterg: h_psi : 1.87s CPU ( 2956 calls, 0.001 s avg) s_psi : 0.04s CPU ( 3066 calls, 0.000 s avg) g_psi : 0.07s CPU ( 1812 calls, 0.000 s avg) rdiaghg : 0.30s CPU ( 2822 calls, 0.000 s avg) Called by h_psi: add_vuspsi : 0.05s CPU ( 2956 calls, 0.000 s avg) General routines calbec : 0.10s CPU ( 4842 calls, 0.000 s avg) cft3 : 3.72s CPU ( 19013 calls, 0.000 s avg) cft3s : 2.08s CPU ( 21918 calls, 0.000 s avg) interpolate : 1.09s CPU ( 2394 calls, 0.000 s avg) davcio : 0.03s CPU ( 4208 calls, 0.000 s avg) NEB/examples/example01/reference/asymmetric_H2+H.path0000644000700200004540000000634212053145633021607 0ustar marsamoscmRESTART INFORMATION 13 50 0 NUMBER OF IMAGES 8 ENERGIES, POSITIONS AND GRADIENTS Image: 1 -1.8191493670 -4.566700090000 0.000000000000 0.000000000000 0.000196343081 0.000000000000 0.000000000000 1 0 0 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0 0 0 1.557766760000 0.000000000000 0.000000000000 -0.000059384720 0.000000000000 0.000000000000 1 0 0 Image: 2 -1.8184879041 -3.804273528277 0.000000000000 0.000000000000 0.001669630927 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 1.567970109090 0.000000000000 0.000000000000 0.000068071931 0.000000000000 0.000000000000 Image: 3 -1.8164304063 -3.094010841772 0.000000000000 0.000000000000 0.004185822357 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 1.601090810105 0.000000000000 0.000000000000 0.000691299136 0.000000000000 0.000000000000 Image: 4 -1.8135234290 -2.501780400502 0.000000000000 0.000000000000 0.004422828964 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 1.700932101588 0.000000000000 0.000000000000 0.002552825542 0.000000000000 0.000000000000 Image: 5 -1.8116680356 -2.031233204495 0.000000000000 0.000000000000 0.000400681969 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 1.947379632121 0.000000000000 0.000000000000 0.000816283140 0.000000000000 0.000000000000 Image: 6 -1.8139800043 -1.674084834526 0.000000000000 0.000000000000 -0.002316259418 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 2.605024126462 0.000000000000 0.000000000000 -0.004656177595 0.000000000000 0.000000000000 Image: 7 -1.8178322255 -1.577518149646 0.000000000000 0.000000000000 -0.000245961557 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 3.496435536903 0.000000000000 0.000000000000 -0.002705410775 0.000000000000 0.000000000000 Image: 8 -1.8191493670 -1.557766760000 0.000000000000 0.000000000000 0.000059379232 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 4.566700090000 0.000000000000 0.000000000000 -0.000196340306 0.000000000000 0.000000000000 NEB/examples/example01/reference/asymmetric_H2+H.int0000644000700200004540000002210712053145633021442 0ustar marsamoscm 0.0000000000 0.0000000000 0.0040000000 0.0000150289 0.0080000000 0.0000600002 0.0120000000 0.0001347406 0.0160000000 0.0002390768 0.0200000000 0.0003728355 0.0240000000 0.0005358435 0.0280000000 0.0007279274 0.0320000000 0.0009489140 0.0360000000 0.0011986300 0.0400000000 0.0014769021 0.0440000000 0.0017835570 0.0480000000 0.0021184215 0.0520000000 0.0024813223 0.0560000000 0.0028720861 0.0600000000 0.0032905396 0.0640000000 0.0037365095 0.0680000000 0.0042098226 0.0720000000 0.0047103055 0.0760000000 0.0052377851 0.0800000000 0.0057920880 0.0840000000 0.0063730409 0.0880000000 0.0069804705 0.0920000000 0.0076142036 0.0960000000 0.0082740670 0.1000000000 0.0089598872 0.1040000000 0.0096714911 0.1080000000 0.0104087053 0.1120000000 0.0111713566 0.1160000000 0.0119592717 0.1200000000 0.0127722773 0.1240000000 0.0136102001 0.1280000000 0.0144728668 0.1320000000 0.0153601043 0.1360000000 0.0162717391 0.1400000000 0.0172075980 0.1440000000 0.0181677205 0.1480000000 0.0191611610 0.1520000000 0.0201930788 0.1560000000 0.0212638668 0.1600000000 0.0223739176 0.1640000000 0.0235236239 0.1680000000 0.0247133787 0.1720000000 0.0259435744 0.1760000000 0.0272146041 0.1800000000 0.0285268603 0.1840000000 0.0298807358 0.1880000000 0.0312766234 0.1920000000 0.0327149157 0.1960000000 0.0341960057 0.2000000000 0.0357202860 0.2040000000 0.0372881493 0.2080000000 0.0388999884 0.2120000000 0.0405561960 0.2160000000 0.0422571650 0.2200000000 0.0440032880 0.2240000000 0.0457949578 0.2280000000 0.0476325671 0.2320000000 0.0495165087 0.2360000000 0.0514471753 0.2400000000 0.0534249597 0.2440000000 0.0554502546 0.2480000000 0.0575234528 0.2520000000 0.0596449470 0.2560000000 0.0618151299 0.2600000000 0.0640343944 0.2640000000 0.0663031331 0.2680000000 0.0686217388 0.2720000000 0.0709906043 0.2760000000 0.0734101222 0.2800000000 0.0758767948 0.2840000000 0.0783810055 0.2880000000 0.0809209390 0.2920000000 0.0834951312 0.2960000000 0.0861021179 0.3000000000 0.0887404348 0.3040000000 0.0914086178 0.3080000000 0.0941052027 0.3120000000 0.0968287252 0.3160000000 0.0995777213 0.3200000000 0.1023507266 0.3240000000 0.1051462771 0.3280000000 0.1079629084 0.3320000000 0.1107991565 0.3360000000 0.1136535570 0.3400000000 0.1165246459 0.3440000000 0.1194109589 0.3480000000 0.1223110318 0.3520000000 0.1252234005 0.3560000000 0.1281466006 0.3600000000 0.1310791681 0.3640000000 0.1340196388 0.3680000000 0.1369665483 0.3720000000 0.1399184327 0.3760000000 0.1428738275 0.3800000000 0.1458312688 0.3840000000 0.1487892922 0.3880000000 0.1517464335 0.3920000000 0.1546974901 0.3960000000 0.1576205273 0.4000000000 0.1605074079 0.4040000000 0.1633524429 0.4080000000 0.1661499435 0.4120000000 0.1688942206 0.4160000000 0.1715795854 0.4200000000 0.1742003488 0.4240000000 0.1767508220 0.4280000000 0.1792253161 0.4320000000 0.1816181421 0.4360000000 0.1839236110 0.4400000000 0.1861360340 0.4440000000 0.1882497221 0.4480000000 0.1902589863 0.4520000000 0.1921581378 0.4560000000 0.1939414876 0.4600000000 0.1956033468 0.4640000000 0.1971380264 0.4680000000 0.1985398375 0.4720000000 0.1998030912 0.4760000000 0.2009220986 0.4800000000 0.2018911706 0.4840000000 0.2027046185 0.4880000000 0.2033567531 0.4920000000 0.2038385150 0.4960000000 0.2041342900 0.5000000000 0.2042472957 0.5040000000 0.2041827181 0.5080000000 0.2039457434 0.5120000000 0.2035415576 0.5160000000 0.2029753469 0.5200000000 0.2022522974 0.5240000000 0.2013775952 0.5280000000 0.2003564263 0.5320000000 0.1991939769 0.5360000000 0.1978954330 0.5400000000 0.1964659809 0.5440000000 0.1949108065 0.5480000000 0.1932350960 0.5520000000 0.1914440354 0.5560000000 0.1895428110 0.5600000000 0.1875366087 0.5640000000 0.1854306147 0.5680000000 0.1832300151 0.5720000000 0.1809399960 0.5760000000 0.1785657435 0.5800000000 0.1761124436 0.5840000000 0.1735852825 0.5880000000 0.1709894464 0.5920000000 0.1683301212 0.5960000000 0.1656124931 0.6000000000 0.1628417482 0.6040000000 0.1600230726 0.6080000000 0.1571616524 0.6120000000 0.1542626736 0.6160000000 0.1513313225 0.6200000000 0.1483727851 0.6240000000 0.1453922475 0.6280000000 0.1423948958 0.6320000000 0.1393871966 0.6360000000 0.1363835909 0.6400000000 0.1333879672 0.6440000000 0.1304016558 0.6480000000 0.1274259867 0.6520000000 0.1244622901 0.6560000000 0.1215118961 0.6600000000 0.1185761349 0.6640000000 0.1156563367 0.6680000000 0.1127538315 0.6720000000 0.1098699495 0.6760000000 0.1070060209 0.6800000000 0.1041633757 0.6840000000 0.1013433442 0.6880000000 0.0985472564 0.6920000000 0.0957764426 0.6960000000 0.0930322328 0.7000000000 0.0903159572 0.7040000000 0.0876289460 0.7080000000 0.0849725292 0.7120000000 0.0823480370 0.7160000000 0.0797567996 0.7200000000 0.0772001471 0.7240000000 0.0746794097 0.7280000000 0.0721959174 0.7320000000 0.0697510005 0.7360000000 0.0673459890 0.7400000000 0.0649822131 0.7440000000 0.0626610030 0.7480000000 0.0603836888 0.7520000000 0.0581516006 0.7560000000 0.0559660686 0.7600000000 0.0538284228 0.7640000000 0.0517399936 0.7680000000 0.0497021109 0.7720000000 0.0477161050 0.7760000000 0.0457833060 0.7800000000 0.0439050440 0.7840000000 0.0420826491 0.7880000000 0.0403174516 0.7920000000 0.0386107815 0.7960000000 0.0369639689 0.8000000000 0.0353773717 0.8040000000 0.0338361252 0.8080000000 0.0323345169 0.8120000000 0.0308721964 0.8160000000 0.0294488129 0.8200000000 0.0280640159 0.8240000000 0.0267174548 0.8280000000 0.0254087789 0.8320000000 0.0241376377 0.8360000000 0.0229036804 0.8400000000 0.0217065566 0.8440000000 0.0205459156 0.8480000000 0.0194214069 0.8520000000 0.0183326797 0.8560000000 0.0172793834 0.8600000000 0.0162611676 0.8640000000 0.0152776815 0.8680000000 0.0143285745 0.8720000000 0.0134134961 0.8760000000 0.0125320956 0.8800000000 0.0116840224 0.8840000000 0.0108689259 0.8880000000 0.0100864555 0.8920000000 0.0093362606 0.8960000000 0.0086179906 0.9000000000 0.0079312948 0.9040000000 0.0072758227 0.9080000000 0.0066512236 0.9120000000 0.0060571470 0.9160000000 0.0054932421 0.9200000000 0.0049591585 0.9240000000 0.0044545455 0.9280000000 0.0039790525 0.9320000000 0.0035323288 0.9360000000 0.0031140239 0.9400000000 0.0027237872 0.9440000000 0.0023612680 0.9480000000 0.0020261158 0.9520000000 0.0017179798 0.9560000000 0.0014365096 0.9600000000 0.0011813545 0.9640000000 0.0009521639 0.9680000000 0.0007485872 0.9720000000 0.0005702737 0.9760000000 0.0004168730 0.9800000000 0.0002880342 0.9840000000 0.0001834069 0.9880000000 0.0001026405 0.9920000000 0.0000453842 0.9960000000 0.0000112876 1.0000000000 0.0000000000 NEB/examples/example01/reference/H2+H.xyz0000644000700200004540000000214012053145633017240 0ustar marsamoscm 3 H -2.4165936061 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 0.8243346657 0.0000000000 0.0000000000 3 H -1.8714286233 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 0.8349215369 0.0000000000 0.0000000000 3 H -1.4065859742 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 0.8818384013 0.0000000000 0.0000000000 3 H -1.0524649767 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 1.0524643124 0.0000000000 0.0000000000 3 H -0.8818385490 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 1.4065853106 0.0000000000 0.0000000000 3 H -0.8349215547 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 1.8714281947 0.0000000000 0.0000000000 3 H -0.8243346657 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 2.4165936061 0.0000000000 0.0000000000 NEB/examples/example01/reference/H2+H-cp.out0000644000700200004540000005602312053145633017626 0ustar marsamoscm=------------------------------------------------------------------------------= CP: variable-cell Car-Parrinello molecular dynamics using norm-conserving and ultrasoft Vanderbilt pseudopotentials Version: 4.0 - Mon Apr 28 15:32:33 CEST 2008 Authors: Alfredo Pasquarello, Kari Laasonen, Andrea Trave, Roberto Car, Paolo Giannozzi, Nicola Marzari, Carlo Cavazzoni, Guido Chiarotti, Sandro Scandolo, Paolo Focher, Gerardo Ballabio, and others =------------------------------------------------------------------------------= This run was started on: 16: 4:37 28Apr2008 Serial Build Warning: card K_POINTS { GAMMA } ignored Job Title: MD Simulation Atomic Pseudopotentials Parameters ---------------------------------- Reading pseudopotential for specie # 1 from file : /home/giannozz/espresso/pseudo/HUSPBE.RRKJ3 file type is 2: RRKJ3 Main Simulation Parameters (from input) --------------------------------------- Restart Mode = -1 from_scratch Number of MD Steps = 50 Print out every 50 MD Steps Reads from unit = 50 Writes to unit = 50 MD Simulation time step = 10.00 Electronic fictitious mass (emass) = 250.00 emass cut-off = 2.50 Simulation Cell Parameters (from input) external pressure = 0.00 [GPa] wmass (calculated) = 418.87 [AU] initial cell from CELL_PARAMETERS card 12.00000000 0.00000000 0.00000000 0.00000000 5.00000000 0.00000000 0.00000000 0.00000000 5.00000000 ibrav = 0 alat = 1.00000000 a1 = 12.00000000 0.00000000 0.00000000 a2 = 0.00000000 5.00000000 0.00000000 a3 = 0.00000000 0.00000000 5.00000000 b1 = 0.08333333 0.00000000 0.00000000 b2 = 0.00000000 0.20000000 0.00000000 b3 = 0.00000000 0.00000000 0.20000000 omega = 300.00000000 Energy Cut-offs --------------- Ecutwfc = 20.0 Ry, Ecutrho = 100.0 Ry, Ecuts = 80.0 Ry Gcutwfc = 0.7 , Gcutrho = 1.6 Gcuts = 1.4 NOTA BENE: refg, mmx = 0.050000 2400 Eigenvalues calculated without the kinetic term contribution Orthog. with lagrange multipliers : eps = 0.10E-07, max = 250 verlet algorithm for electron dynamics with friction frice = 0.2000 , grease = 1.0000 Electron dynamics : the temperature is not controlled initial random displacement of el. coordinates with amplitude= 0.020000 Electronic states ----------------- Local Spin Density calculation Number of Electron = 3 Spins up = 2, occupations: 1.00 1.00 Spins down = 1, occupations: 1.00 Exchange and correlations functionals ------------------------------------- Using Local Density Approximation with Exchange functional: SLATER Correlation functional: PERDEW AND WANG Using Generalized Gradient Corrections with Exchange functional: PERDEW BURKE ERNZERHOF Correlation functional: PERDEW BURKE ERNZERHOF Exchange-correlation = SLA -PW -PBX -PBC (1434) Ions Simulation Parameters -------------------------- Ions are not allowed to move Ionic position (from input) sorted by specie, and converted to real a.u. coordinates Species 1 atoms = 3 mass = 1837.36 (a.u.), 1.01 (amu) rcmax = 0.50 (a.u.) 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 Ionic position read from input file Cell Dynamics Parameters (from STDIN) ------------------------------------- Starting cell generated from CELLDM Constant VOLUME Molecular dynamics cell parameters are not allowed to move Verbosity: iprsta = 1 initial path length = 4.2553 bohr initial inter-image distance = 0.7092 bohr calculation = neb restart_mode = from_scratch opt_scheme = broyden num_of_images = 7 nstep = 50 CI_scheme = auto first_last_opt = F coarse-grained phase-space = F use_freezing = F ds = 2.0000 a.u. k_max = 0.3000 a.u. k_min = 0.2000 a.u. suggested k_max = 0.1542 a.u. suggested k_min = 0.1028 a.u. path_thr = 0.1000 eV / A ------------------------------ iteration 1 ------------------------------ tcpu = 0.0 self-consistency for image 1 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 1.0 self-consistency for image 2 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 2.0 self-consistency for image 3 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 3.4 self-consistency for image 4 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 4.4 self-consistency for image 5 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 6.0 self-consistency for image 6 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 7.1 self-consistency for image 7 Delta V(G=0): 0.007854Ry, 0.213707eV activation energy (->) = 1.706820 eV activation energy (<-) = 1.707019 eV image energy (eV) error (eV/A) frozen 1 -49.5053029 0.013776 T 2 -49.0039505 2.083667 F 3 -48.1964753 2.304139 F 4 -47.7984832 1.716077 F 5 -48.1965105 2.304518 F 6 -49.0040482 2.086521 F 7 -49.5055023 0.018591 T climbing image = 4 path length = 4.255 bohr inter-image distance = 0.709 bohr ------------------------------ iteration 2 ------------------------------ tcpu = 8.0 self-consistency for image 2 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 8.6 self-consistency for image 3 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 9.3 self-consistency for image 4 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 10.0 self-consistency for image 5 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 10.7 self-consistency for image 6 Delta V(G=0): 0.007854Ry, 0.213707eV activation energy (->) = 1.464164 eV activation energy (<-) = 1.464364 eV image energy (eV) error (eV/A) frozen 1 -49.5053029 0.013776 T 2 -49.1210138 1.603467 F 3 -48.4003663 2.013713 F 4 -48.0411387 1.704188 F 5 -48.4004563 2.010021 F 6 -49.1214711 1.602840 F 7 -49.5055023 0.018591 T climbing image = 4 path length = 4.293 bohr inter-image distance = 0.715 bohr ------------------------------ iteration 3 ------------------------------ tcpu = 11.3 self-consistency for image 2 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 12.0 self-consistency for image 3 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 12.7 self-consistency for image 4 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 13.4 self-consistency for image 5 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 14.1 self-consistency for image 6 Delta V(G=0): 0.007854Ry, 0.213707eV activation energy (->) = 1.101964 eV activation energy (<-) = 1.102163 eV image energy (eV) error (eV/A) frozen 1 -49.5053029 0.013776 T 2 -49.3125870 1.362486 F 3 -48.7179788 1.613610 F 4 -48.4033392 1.707762 F 5 -48.7186163 1.615709 F 6 -49.3128139 1.365536 F 7 -49.5055023 0.018591 T climbing image = 4 path length = 4.456 bohr inter-image distance = 0.743 bohr ------------------------------ iteration 4 ------------------------------ tcpu = 14.8 self-consistency for image 2 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 15.5 self-consistency for image 3 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 16.2 self-consistency for image 4 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 16.9 self-consistency for image 5 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 17.6 self-consistency for image 6 Delta V(G=0): 0.007854Ry, 0.213707eV activation energy (->) = 0.740525 eV activation energy (<-) = 0.740725 eV image energy (eV) error (eV/A) frozen 1 -49.5053029 0.013776 T 2 -49.4442681 0.994205 F 3 -49.0198636 1.615521 F 4 -48.7647775 1.556996 F 5 -49.0205216 1.611525 F 6 -49.4445084 0.995376 F 7 -49.5055023 0.018591 T climbing image = 4 path length = 4.719 bohr inter-image distance = 0.787 bohr ------------------------------ iteration 5 ------------------------------ tcpu = 18.3 self-consistency for image 2 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 19.0 self-consistency for image 3 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 19.7 self-consistency for image 4 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 20.4 self-consistency for image 5 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 21.1 self-consistency for image 6 Delta V(G=0): 0.007854Ry, 0.213707eV activation energy (->) = 0.421357 eV activation energy (<-) = 0.421557 eV image energy (eV) error (eV/A) frozen 1 -49.5053029 0.013776 T 2 -49.4523419 1.233088 F 3 -49.2598346 1.426914 F 4 -49.0839456 1.175916 F 5 -49.2603274 1.422410 F 6 -49.4524385 1.235352 F 7 -49.5055023 0.018591 T climbing image = 4 path length = 5.051 bohr inter-image distance = 0.842 bohr ------------------------------ iteration 6 ------------------------------ tcpu = 21.8 self-consistency for image 2 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 22.5 self-consistency for image 3 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 23.2 self-consistency for image 4 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 23.9 self-consistency for image 5 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 24.6 self-consistency for image 6 Delta V(G=0): 0.007854Ry, 0.213707eV activation energy (->) = 0.214883 eV activation energy (<-) = 0.215083 eV image energy (eV) error (eV/A) frozen 1 -49.5053029 0.013776 T 2 -49.3533841 2.402947 F 3 -49.3517161 1.826382 F 4 -49.2904198 0.322579 F 5 -49.3518471 1.826289 F 6 -49.3534898 2.406525 F 7 -49.5055023 0.018591 T climbing image = 4 path length = 5.419 bohr inter-image distance = 0.903 bohr ------------------------------ iteration 7 ------------------------------ tcpu = 25.2 self-consistency for image 2 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 25.8 self-consistency for image 3 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 26.5 self-consistency for image 4 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 27.2 self-consistency for image 5 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 27.9 self-consistency for image 6 Delta V(G=0): 0.007854Ry, 0.213707eV activation energy (->) = 0.312407 eV activation energy (<-) = 0.312607 eV image energy (eV) error (eV/A) frozen 1 -49.5053029 0.013776 T 2 -49.4667503 0.841746 F 3 -49.3427158 0.634265 F 4 -49.1928956 0.868299 F 5 -49.3429931 0.631461 F 6 -49.4669234 0.841671 F 7 -49.5055023 0.018591 T climbing image = 4 path length = 5.108 bohr inter-image distance = 0.851 bohr ------------------------------ iteration 8 ------------------------------ tcpu = 28.5 self-consistency for image 2 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 29.1 self-consistency for image 3 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 29.6 self-consistency for image 4 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 30.3 self-consistency for image 5 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 30.8 self-consistency for image 6 Delta V(G=0): 0.007854Ry, 0.213707eV activation energy (->) = 0.259295 eV activation energy (<-) = 0.259495 eV image energy (eV) error (eV/A) frozen 1 -49.5053029 0.013776 T 2 -49.4738151 0.126010 F 3 -49.3664683 0.476758 F 4 -49.2460077 0.640546 F 5 -49.3666244 0.475901 F 6 -49.4739795 0.126609 F 7 -49.5055023 0.018591 T climbing image = 4 path length = 5.158 bohr inter-image distance = 0.860 bohr ------------------------------ iteration 9 ------------------------------ tcpu = 31.4 self-consistency for image 2 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 31.9 self-consistency for image 3 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 32.4 self-consistency for image 4 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 33.0 self-consistency for image 5 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 33.6 self-consistency for image 6 Delta V(G=0): 0.007854Ry, 0.213707eV activation energy (->) = 0.224273 eV activation energy (<-) = 0.224473 eV image energy (eV) error (eV/A) frozen 1 -49.5053029 0.013776 T 2 -49.4722725 0.335928 F 3 -49.3809791 0.341345 F 4 -49.2810295 0.391091 F 5 -49.3811032 0.342656 F 6 -49.4724243 0.336179 F 7 -49.5055023 0.018591 T climbing image = 4 path length = 5.227 bohr inter-image distance = 0.871 bohr ------------------------------ iteration 10 ------------------------------ tcpu = 34.1 self-consistency for image 2 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 34.5 self-consistency for image 3 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 34.9 self-consistency for image 4 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 35.3 self-consistency for image 5 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 35.7 self-consistency for image 6 Delta V(G=0): 0.007854Ry, 0.213707eV activation energy (->) = 0.220754 eV activation energy (<-) = 0.220954 eV image energy (eV) error (eV/A) frozen 1 -49.5053029 0.013776 T 2 -49.4742267 0.162027 F 3 -49.3767259 0.259062 F 4 -49.2845486 0.468793 F 5 -49.3768406 0.259544 F 6 -49.4743823 0.162278 F 7 -49.5055023 0.018591 T climbing image = 4 path length = 5.222 bohr inter-image distance = 0.870 bohr ------------------------------ iteration 11 ------------------------------ tcpu = 36.1 self-consistency for image 2 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 36.7 self-consistency for image 3 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 37.1 self-consistency for image 4 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 37.6 self-consistency for image 5 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 38.1 self-consistency for image 6 Delta V(G=0): 0.007854Ry, 0.213707eV activation energy (->) = 0.211773 eV activation energy (<-) = 0.211972 eV image energy (eV) error (eV/A) frozen 1 -49.5053029 0.013776 T 2 -49.4737553 0.080149 F 3 -49.3748274 0.151361 F 4 -49.2935300 0.266174 F 5 -49.3749462 0.151961 F 6 -49.4739116 0.080431 F 7 -49.5055023 0.018591 T climbing image = 4 path length = 5.253 bohr inter-image distance = 0.875 bohr ------------------------------ iteration 12 ------------------------------ tcpu = 38.6 self-consistency for image 2 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 39.0 self-consistency for image 3 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 39.5 self-consistency for image 4 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 40.0 self-consistency for image 5 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 40.4 self-consistency for image 6 Delta V(G=0): 0.007854Ry, 0.213707eV activation energy (->) = 0.205463 eV activation energy (<-) = 0.205663 eV image energy (eV) error (eV/A) frozen 1 -49.5053029 0.013776 T 2 -49.4725003 0.159280 F 3 -49.3737690 0.064155 F 4 -49.2998396 0.093780 F 5 -49.3738751 0.064558 F 6 -49.4726533 0.159521 F 7 -49.5055023 0.018591 T climbing image = 4 path length = 5.301 bohr inter-image distance = 0.883 bohr ------------------------------ iteration 13 ------------------------------ tcpu = 40.9 self-consistency for image 2 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 41.3 self-consistency for image 3 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 41.6 self-consistency for image 4 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 42.1 self-consistency for image 5 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 42.4 self-consistency for image 6 Delta V(G=0): 0.007854Ry, 0.213707eV activation energy (->) = 0.205203 eV activation energy (<-) = 0.205403 eV image energy (eV) error (eV/A) frozen 1 -49.5053029 0.013776 T 2 -49.4720920 0.089708 F 3 -49.3727786 0.129620 F 4 -49.3000997 0.069168 F 5 -49.3728742 0.129744 F 6 -49.4722415 0.089827 F 7 -49.5055023 0.018591 T climbing image = 4 path length = 5.316 bohr inter-image distance = 0.886 bohr ------------------------------ iteration 14 ------------------------------ tcpu = 42.8 self-consistency for image 2 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 43.2 self-consistency for image 3 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 43.6 self-consistency for image 4 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 43.8 self-consistency for image 5 Delta V(G=0): 0.007854Ry, 0.213707eV tcpu = 44.2 self-consistency for image 6 Delta V(G=0): 0.007854Ry, 0.213707eV activation energy (->) = 0.205154 eV activation energy (<-) = 0.205354 eV image energy (eV) error (eV/A) frozen 1 -49.5053029 0.013776 T 2 -49.4716578 0.050724 F 3 -49.3723127 0.073745 F 4 -49.3001487 0.033927 F 5 -49.3724038 0.073851 F 6 -49.4718036 0.050893 F 7 -49.5055023 0.018591 T climbing image = 4 path length = 5.327 bohr inter-image distance = 0.888 bohr --------------------------------------------------------------------------- neb: convergence achieved in 14 iterations CP : 44.55s CPU time, 47.82s wall time This run was terminated on: 16: 5:25 28Apr2008 =------------------------------------------------------------------------------= JOB DONE. =------------------------------------------------------------------------------= NEB/examples/example01/reference/asymmetric_H2+H.dat0000644000700200004540000000067012053145633021421 0ustar marsamoscm 0.0000000000 0.0000000000 0.0100963663 0.1433063024 0.0179993198 0.0009983401 0.2769409464 0.0739866830 0.0332125059 0.3898177167 0.1530895575 0.0263775812 0.4896495899 0.2035773796 0.0415057207 0.6303004094 0.1406655125 0.0356538303 0.7988159856 0.0358412408 0.0089619046 1.0000000000 0.0000000000 0.0100962236 NEB/examples/example01/reference/asymmetric_H2+H.out0000644000700200004540000004332712053145633021466 0ustar marsamoscm Program PWSCF v.4.0 starts ... Today is 28Apr2008 at 16: 4: 4 For Norm-Conserving or Ultrasoft (Vanderbilt) Pseudopotentials or PAW Current dimensions of program pwscf are: Max number of different atomic species (ntypx) = 10 Max number of k-points (npk) = 40000 Max angular momentum in pseudopotentials (lmaxx) = 3 gamma-point specific algorithms are used reading file 'asymmetric_H2+H.path' calculation = neb restart_mode = restart opt_scheme = broyden num_of_images = 8 nstep = 50 CI_scheme = manual first_last_opt = F coarse-grained phase-space = F use_freezing = F ds = 2.0000 a.u. k_max = 0.3000 a.u. k_min = 0.2000 a.u. suggested k_max = 0.1542 a.u. suggested k_min = 0.1028 a.u. path_thr = 0.0500 eV / A list of climbing images : 5, ------------------------------ iteration 1 ------------------------------ tcpu = 0.0 self-consistency for image 1 tcpu = 0.4 self-consistency for image 2 tcpu = 0.9 self-consistency for image 3 tcpu = 1.3 self-consistency for image 4 tcpu = 1.8 self-consistency for image 5 tcpu = 2.3 self-consistency for image 6 tcpu = 2.8 self-consistency for image 7 tcpu = 3.2 self-consistency for image 8 activation energy (->) = 0.187378 eV activation energy (<-) = 0.187378 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010096 T 2 -49.4774302 0.113478 F 3 -49.4008026 0.049398 F 4 -49.3141933 0.067750 F 5 -49.3141932 0.192473 F 6 -49.4008026 0.049396 F 7 -49.4774302 0.113478 F 8 -49.5015717 0.010096 T path length = 5.308 bohr inter-image distance = 0.758 bohr ------------------------------ iteration 2 ------------------------------ tcpu = 3.7 self-consistency for image 2 tcpu = 3.9 self-consistency for image 3 tcpu = 4.2 self-consistency for image 4 tcpu = 4.4 self-consistency for image 5 tcpu = 4.7 self-consistency for image 6 tcpu = 5.0 self-consistency for image 7 activation energy (->) = 0.189149 eV activation energy (<-) = 0.189149 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010096 T 2 -49.4769474 0.003956 F 3 -49.4010805 0.082582 F 4 -49.3139435 0.134011 F 5 -49.3124224 0.194121 F 6 -49.4010805 0.164267 F 7 -49.4769474 0.003956 F 8 -49.5015717 0.010096 T path length = 5.311 bohr inter-image distance = 0.759 bohr ------------------------------ iteration 3 ------------------------------ tcpu = 5.3 self-consistency for image 2 tcpu = 5.6 self-consistency for image 3 tcpu = 5.8 self-consistency for image 4 tcpu = 6.1 self-consistency for image 5 tcpu = 6.5 self-consistency for image 6 tcpu = 6.8 self-consistency for image 7 activation energy (->) = 0.192038 eV activation energy (<-) = 0.192038 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010096 T 2 -49.4769470 0.071773 F 3 -49.3994647 0.181555 F 4 -49.3163218 0.029046 F 5 -49.3095334 0.183653 F 6 -49.3977523 0.079662 F 7 -49.4769470 0.157609 F 8 -49.5015717 0.010096 T path length = 5.317 bohr inter-image distance = 0.760 bohr ------------------------------ iteration 4 ------------------------------ tcpu = 7.1 self-consistency for image 2 tcpu = 7.3 self-consistency for image 3 tcpu = 7.6 self-consistency for image 4 tcpu = 8.0 self-consistency for image 5 tcpu = 8.3 self-consistency for image 6 tcpu = 8.7 self-consistency for image 7 activation energy (->) = 0.195400 eV activation energy (<-) = 0.195400 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010096 T 2 -49.4766365 0.034165 F 3 -49.4000984 0.211539 F 4 -49.3182326 0.107686 F 5 -49.3061720 0.152027 F 6 -49.3941356 0.102662 F 7 -49.4762623 0.195274 F 8 -49.5015717 0.010096 T path length = 5.324 bohr inter-image distance = 0.761 bohr ------------------------------ iteration 5 ------------------------------ tcpu = 9.0 self-consistency for image 2 tcpu = 9.2 self-consistency for image 3 tcpu = 9.6 self-consistency for image 4 tcpu = 9.9 self-consistency for image 5 tcpu = 10.4 self-consistency for image 6 tcpu = 10.7 self-consistency for image 7 activation energy (->) = 0.199625 eV activation energy (<-) = 0.199625 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010096 T 2 -49.4765285 0.160271 F 3 -49.4018047 0.257557 F 4 -49.3215498 0.198449 F 5 -49.3019466 0.086410 F 6 -49.3881423 0.140185 F 7 -49.4748028 0.209403 F 8 -49.5015717 0.010096 T path length = 5.334 bohr inter-image distance = 0.762 bohr ------------------------------ iteration 6 ------------------------------ tcpu = 11.0 self-consistency for image 2 tcpu = 11.3 self-consistency for image 3 tcpu = 11.6 self-consistency for image 4 tcpu = 12.0 self-consistency for image 5 tcpu = 12.5 self-consistency for image 6 tcpu = 12.9 self-consistency for image 7 activation energy (->) = 0.203647 eV activation energy (<-) = 0.203647 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010096 T 2 -49.4769983 0.287124 F 3 -49.4057130 0.281846 F 4 -49.3270607 0.272051 F 5 -49.2979247 0.091678 F 6 -49.3792132 0.168367 F 7 -49.4721138 0.172866 F 8 -49.5015717 0.010096 T path length = 5.347 bohr inter-image distance = 0.764 bohr ------------------------------ iteration 7 ------------------------------ tcpu = 13.2 self-consistency for image 2 tcpu = 13.5 self-consistency for image 3 tcpu = 14.0 self-consistency for image 4 tcpu = 14.4 self-consistency for image 5 tcpu = 14.8 self-consistency for image 6 tcpu = 15.3 self-consistency for image 7 activation energy (->) = 0.205849 eV activation energy (<-) = 0.205849 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010096 T 2 -49.4784065 0.314140 F 3 -49.4115903 0.304261 F 4 -49.3348670 0.237444 F 5 -49.2957224 0.131525 F 6 -49.3689823 0.113501 F 7 -49.4686221 0.113339 F 8 -49.5015717 0.010096 T path length = 5.357 bohr inter-image distance = 0.765 bohr ------------------------------ iteration 8 ------------------------------ tcpu = 15.6 self-consistency for image 2 tcpu = 16.0 self-consistency for image 3 tcpu = 16.4 self-consistency for image 4 tcpu = 16.8 self-consistency for image 5 tcpu = 17.3 self-consistency for image 6 tcpu = 17.7 self-consistency for image 7 activation energy (->) = 0.202920 eV activation energy (<-) = 0.202920 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010096 T 2 -49.4827947 0.077763 F 3 -49.4256962 0.230817 F 4 -49.3517716 0.028452 F 5 -49.2986522 0.193375 F 6 -49.3524389 0.181586 F 7 -49.4619944 0.015421 F 8 -49.5015717 0.010096 T path length = 5.349 bohr inter-image distance = 0.764 bohr ------------------------------ iteration 9 ------------------------------ tcpu = 18.1 self-consistency for image 2 tcpu = 18.4 self-consistency for image 3 tcpu = 18.7 self-consistency for image 4 tcpu = 19.2 self-consistency for image 5 tcpu = 19.6 self-consistency for image 6 tcpu = 20.0 self-consistency for image 7 activation energy (->) = 0.203288 eV activation energy (<-) = 0.203288 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010096 T 2 -49.4817891 0.156545 F 3 -49.4228309 0.118817 F 4 -49.3461761 0.139930 F 5 -49.2982840 0.102704 F 6 -49.3598131 0.039646 F 7 -49.4645375 0.031809 F 8 -49.5015717 0.010096 T path length = 5.337 bohr inter-image distance = 0.762 bohr ------------------------------ iteration 10 ------------------------------ tcpu = 20.3 self-consistency for image 2 tcpu = 20.7 self-consistency for image 3 tcpu = 21.0 self-consistency for image 4 tcpu = 21.3 self-consistency for image 5 tcpu = 21.6 self-consistency for image 6 tcpu = 22.0 self-consistency for image 7 activation energy (->) = 0.203076 eV activation energy (<-) = 0.203076 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010096 T 2 -49.4823791 0.085936 F 3 -49.4240539 0.138135 F 4 -49.3476273 0.047371 F 5 -49.2984959 0.073186 F 6 -49.3601684 0.052550 F 7 -49.4646856 0.029408 F 8 -49.5015717 0.010096 T path length = 5.331 bohr inter-image distance = 0.762 bohr ------------------------------ iteration 11 ------------------------------ tcpu = 22.2 self-consistency for image 2 tcpu = 22.5 self-consistency for image 3 tcpu = 22.9 self-consistency for image 4 tcpu = 23.2 self-consistency for image 5 tcpu = 23.6 self-consistency for image 6 tcpu = 24.0 self-consistency for image 7 activation energy (->) = 0.203338 eV activation energy (<-) = 0.203338 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010096 T 2 -49.4831711 0.076684 F 3 -49.4272905 0.050912 F 4 -49.3484726 0.030972 F 5 -49.2982338 0.046480 F 6 -49.3619657 0.035207 F 7 -49.4652501 0.040443 F 8 -49.5015717 0.010096 T path length = 5.321 bohr inter-image distance = 0.760 bohr ------------------------------ iteration 12 ------------------------------ tcpu = 24.3 self-consistency for image 2 tcpu = 24.5 self-consistency for image 3 tcpu = 24.8 self-consistency for image 4 tcpu = 25.2 self-consistency for image 5 tcpu = 25.5 self-consistency for image 6 tcpu = 25.8 self-consistency for image 7 activation energy (->) = 0.203567 eV activation energy (<-) = 0.203567 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010096 T 2 -49.4837747 0.049946 F 3 -49.4275612 0.034964 F 4 -49.3493257 0.088492 F 5 -49.2980046 0.050744 F 6 -49.3628491 0.039936 F 7 -49.4656940 0.021716 F 8 -49.5015717 0.010096 T path length = 5.319 bohr inter-image distance = 0.760 bohr ------------------------------ iteration 13 ------------------------------ tcpu = 26.1 self-consistency for image 2 tcpu = 26.4 self-consistency for image 3 tcpu = 26.6 self-consistency for image 4 tcpu = 26.9 self-consistency for image 5 tcpu = 27.2 self-consistency for image 6 tcpu = 27.4 self-consistency for image 7 activation energy (->) = 0.203577 eV activation energy (<-) = 0.203577 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010096 T 2 -49.4835724 0.000998 F 3 -49.4275850 0.033213 F 4 -49.3484822 0.026378 F 5 -49.2979943 0.041506 F 6 -49.3609062 0.035654 F 7 -49.4657305 0.008962 F 8 -49.5015717 0.010096 T path length = 5.321 bohr inter-image distance = 0.760 bohr --------------------------------------------------------------------------- neb: convergence achieved in 13 iterations PWSCF : 27.57s CPU time, 33.32s wall time init_run : 4.93s CPU ( 80 calls, 0.062 s avg) electrons : 17.19s CPU ( 80 calls, 0.215 s avg) update_pot : 2.53s CPU ( 72 calls, 0.035 s avg) forces : 0.64s CPU ( 80 calls, 0.008 s avg) Called by init_run: wfcinit : 0.01s CPU ( 80 calls, 0.000 s avg) potinit : 1.86s CPU ( 80 calls, 0.023 s avg) Called by electrons: c_bands : 2.41s CPU ( 518 calls, 0.005 s avg) sum_band : 2.58s CPU ( 518 calls, 0.005 s avg) v_of_rho : 12.17s CPU ( 647 calls, 0.019 s avg) newd : 0.48s CPU ( 575 calls, 0.001 s avg) mix_rho : 0.72s CPU ( 518 calls, 0.001 s avg) Called by c_bands: init_us_2 : 0.07s CPU ( 2380 calls, 0.000 s avg) regterg : 2.33s CPU ( 1036 calls, 0.002 s avg) Called by *egterg: h_psi : 1.71s CPU ( 2751 calls, 0.001 s avg) s_psi : 0.04s CPU ( 2883 calls, 0.000 s avg) g_psi : 0.07s CPU ( 1699 calls, 0.000 s avg) rdiaghg : 0.25s CPU ( 2545 calls, 0.000 s avg) Called by h_psi: add_vuspsi : 0.04s CPU ( 2751 calls, 0.000 s avg) General routines calbec : 0.08s CPU ( 4691 calls, 0.000 s avg) cft3 : 3.41s CPU ( 17637 calls, 0.000 s avg) cft3s : 1.99s CPU ( 20182 calls, 0.000 s avg) interpolate : 0.99s CPU ( 2186 calls, 0.000 s avg) davcio : 0.02s CPU ( 4088 calls, 0.000 s avg) NEB/examples/example01/reference/asymmetric_H2+H.axsf0000644000700200004540000000525412053145633021615 0ustar marsamoscm ANIMSTEPS 8 CRYSTAL PRIMVEC 6.3501265031 0.0000000000 0.0000000000 0.0000000000 2.6458860429 0.0000000000 0.0000000000 0.0000000000 2.6458860429 PRIMCOORD 1 3 1 H -2.4165936061 0.0000000000 0.0000000000 -0.0003710347 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 0.8243346657 0.0000000000 0.0000000000 0.0001122209 0.0000000000 0.0000000000 PRIMCOORD 2 3 1 H -2.0131348464 0.0000000000 0.0000000000 -0.0031551452 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 0.8297340455 0.0000000000 0.0000000000 -0.0001286373 0.0000000000 0.0000000000 PRIMCOORD 3 3 1 H -1.6372800206 0.0000000000 0.0000000000 -0.0079100579 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 0.8472607656 0.0000000000 0.0000000000 -0.0013063660 0.0000000000 0.0000000000 PRIMCOORD 4 3 1 H -1.3238851688 0.0000000000 0.0000000000 -0.0083579355 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 0.9000945015 0.0000000000 0.0000000000 -0.0048241411 0.0000000000 0.0000000000 PRIMCOORD 5 3 1 H -1.0748823172 0.0000000000 0.0000000000 -0.0007571792 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 1.0305089178 0.0000000000 0.0000000000 -0.0015425516 0.0000000000 0.0000000000 PRIMCOORD 6 3 1 H -0.8858875397 0.0000000000 0.0000000000 0.0043770960 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 1.3785193956 0.0000000000 0.0000000000 0.0087989005 0.0000000000 0.0000000000 PRIMCOORD 7 3 1 H -0.8347866509 0.0000000000 0.0000000000 0.0004648000 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 1.8502339974 0.0000000000 0.0000000000 0.0051124854 0.0000000000 0.0000000000 PRIMCOORD 8 3 1 H -0.8243346657 0.0000000000 0.0000000000 -0.0001122105 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 2.4165936061 0.0000000000 0.0000000000 0.0003710294 0.0000000000 0.0000000000 NEB/examples/example01/reference/H2+H-cp.int0000644000700200004540000002210712053145633017605 0ustar marsamoscm 0.0000000000 0.0000000000 0.0040000000 0.0000251497 0.0080000000 0.0000996785 0.0120000000 0.0002222055 0.0160000000 0.0003913501 0.0200000000 0.0006057315 0.0240000000 0.0008639690 0.0280000000 0.0011646819 0.0320000000 0.0015064895 0.0360000000 0.0018880110 0.0400000000 0.0023078658 0.0440000000 0.0027646731 0.0480000000 0.0032570522 0.0520000000 0.0037836223 0.0560000000 0.0043430028 0.0600000000 0.0049338129 0.0640000000 0.0055546720 0.0680000000 0.0062041992 0.0720000000 0.0068810139 0.0760000000 0.0075837353 0.0800000000 0.0083109828 0.0840000000 0.0090613756 0.0880000000 0.0098335329 0.0920000000 0.0106260741 0.0960000000 0.0114376185 0.1000000000 0.0122667853 0.1040000000 0.0131121938 0.1080000000 0.0139724632 0.1120000000 0.0148462130 0.1160000000 0.0157320622 0.1200000000 0.0166286303 0.1240000000 0.0175345365 0.1280000000 0.0184484001 0.1320000000 0.0193688403 0.1360000000 0.0202944765 0.1400000000 0.0212239278 0.1440000000 0.0221558137 0.1480000000 0.0230887534 0.1520000000 0.0240213661 0.1560000000 0.0249522711 0.1600000000 0.0258800878 0.1640000000 0.0268034353 0.1680000000 0.0277209330 0.1720000000 0.0286312002 0.1760000000 0.0295328561 0.1800000000 0.0304245200 0.1840000000 0.0313048112 0.1880000000 0.0321723490 0.1920000000 0.0330257526 0.1960000000 0.0338684550 0.2000000000 0.0347952853 0.2040000000 0.0358408521 0.2080000000 0.0370016530 0.2120000000 0.0382741858 0.2160000000 0.0396549480 0.2200000000 0.0411404374 0.2240000000 0.0427271516 0.2280000000 0.0444115883 0.2320000000 0.0461902451 0.2360000000 0.0480596197 0.2400000000 0.0500162098 0.2440000000 0.0520565130 0.2480000000 0.0541770271 0.2520000000 0.0563742496 0.2560000000 0.0586446782 0.2600000000 0.0609848106 0.2640000000 0.0633911444 0.2680000000 0.0658601774 0.2720000000 0.0683884072 0.2760000000 0.0709723314 0.2800000000 0.0736084477 0.2840000000 0.0762932538 0.2880000000 0.0790232473 0.2920000000 0.0817949260 0.2960000000 0.0846047874 0.3000000000 0.0874493292 0.3040000000 0.0903250491 0.3080000000 0.0932284448 0.3120000000 0.0961560139 0.3160000000 0.0991042542 0.3200000000 0.1020696631 0.3240000000 0.1050487385 0.3280000000 0.1080379780 0.3320000000 0.1110338792 0.3360000000 0.1140329398 0.3400000000 0.1170316575 0.3440000000 0.1200265299 0.3480000000 0.1230140547 0.3520000000 0.1259907296 0.3560000000 0.1289530522 0.3600000000 0.1318975203 0.3640000000 0.1348295583 0.3680000000 0.1377777764 0.3720000000 0.1407391613 0.3760000000 0.1437074794 0.3800000000 0.1466764972 0.3840000000 0.1496399812 0.3880000000 0.1525916979 0.3920000000 0.1555254138 0.3960000000 0.1584348954 0.4000000000 0.1613139091 0.4040000000 0.1641562216 0.4080000000 0.1669555991 0.4120000000 0.1697058083 0.4160000000 0.1724006157 0.4200000000 0.1750337877 0.4240000000 0.1775990909 0.4280000000 0.1800902916 0.4320000000 0.1825011565 0.4360000000 0.1848254520 0.4400000000 0.1870569446 0.4440000000 0.1891894008 0.4480000000 0.1912165871 0.4520000000 0.1931322699 0.4560000000 0.1949302159 0.4600000000 0.1966041914 0.4640000000 0.1981479629 0.4680000000 0.1995552970 0.4720000000 0.2008199602 0.4760000000 0.2019357189 0.4800000000 0.2028963397 0.4840000000 0.2036955889 0.4880000000 0.2043272332 0.4920000000 0.2047850390 0.4960000000 0.2050627728 0.5000000000 0.2051542011 0.5040000000 0.2050554471 0.5080000000 0.2047709280 0.5120000000 0.2043068527 0.5160000000 0.2036694298 0.5200000000 0.2028648683 0.5240000000 0.2018993767 0.5280000000 0.2007791638 0.5320000000 0.1995104384 0.5360000000 0.1980994093 0.5400000000 0.1965522852 0.5440000000 0.1948752748 0.5480000000 0.1930745869 0.5520000000 0.1911564302 0.5560000000 0.1891270135 0.5600000000 0.1869925456 0.5640000000 0.1847592351 0.5680000000 0.1824332909 0.5720000000 0.1800209216 0.5760000000 0.1775283362 0.5800000000 0.1749617431 0.5840000000 0.1723273514 0.5880000000 0.1696313696 0.5920000000 0.1668800065 0.5960000000 0.1640794710 0.6000000000 0.1612359716 0.6040000000 0.1583557173 0.6080000000 0.1554449167 0.6120000000 0.1525097786 0.6160000000 0.1495565117 0.6200000000 0.1465913248 0.6240000000 0.1436204266 0.6280000000 0.1406500259 0.6320000000 0.1376863315 0.6360000000 0.1347355520 0.6400000000 0.1318006664 0.6440000000 0.1288532128 0.6480000000 0.1258878678 0.6520000000 0.1229081436 0.6560000000 0.1199175522 0.6600000000 0.1169196057 0.6640000000 0.1139178165 0.6680000000 0.1109156965 0.6720000000 0.1079167580 0.6760000000 0.1049245131 0.6800000000 0.1019424739 0.6840000000 0.0989741526 0.6880000000 0.0960230613 0.6920000000 0.0930927123 0.6960000000 0.0901866176 0.7000000000 0.0873082893 0.7040000000 0.0844612397 0.7080000000 0.0816489809 0.7120000000 0.0788750250 0.7160000000 0.0761428841 0.7200000000 0.0734560705 0.7240000000 0.0708180963 0.7280000000 0.0682324736 0.7320000000 0.0657027146 0.7360000000 0.0632323313 0.7400000000 0.0608248361 0.7440000000 0.0584837409 0.7480000000 0.0562125581 0.7520000000 0.0540147996 0.7560000000 0.0518939777 0.7600000000 0.0498536045 0.7640000000 0.0478971921 0.7680000000 0.0460282528 0.7720000000 0.0442502986 0.7760000000 0.0425668417 0.7800000000 0.0409813942 0.7840000000 0.0394974684 0.7880000000 0.0381185763 0.7920000000 0.0368482300 0.7960000000 0.0356899419 0.8000000000 0.0346472239 0.8040000000 0.0337235882 0.8080000000 0.0328844475 0.8120000000 0.0320342775 0.8160000000 0.0311695499 0.8200000000 0.0302916606 0.8240000000 0.0294020057 0.8280000000 0.0285019812 0.8320000000 0.0275929831 0.8360000000 0.0266764074 0.8400000000 0.0257536501 0.8440000000 0.0248261073 0.8480000000 0.0238951749 0.8520000000 0.0229622489 0.8560000000 0.0220287254 0.8600000000 0.0210960003 0.8640000000 0.0201654696 0.8680000000 0.0192385295 0.8720000000 0.0183165758 0.8760000000 0.0174010046 0.8800000000 0.0164932118 0.8840000000 0.0155945936 0.8880000000 0.0147065459 0.8920000000 0.0138304647 0.8960000000 0.0129677460 0.9000000000 0.0121197858 0.9040000000 0.0112879802 0.9080000000 0.0104737251 0.9120000000 0.0096784165 0.9160000000 0.0089034505 0.9200000000 0.0081502231 0.9240000000 0.0074201302 0.9280000000 0.0067145679 0.9320000000 0.0060349322 0.9360000000 0.0053826191 0.9400000000 0.0047590245 0.9440000000 0.0041655446 0.9480000000 0.0036035753 0.9520000000 0.0030745126 0.9560000000 0.0025797526 0.9600000000 0.0021206911 0.9640000000 0.0016987243 0.9680000000 0.0013152482 0.9720000000 0.0009716587 0.9760000000 0.0006693519 0.9800000000 0.0004097237 0.9840000000 0.0001941703 0.9880000000 0.0000240875 0.9920000000 -0.0000991286 0.9960000000 -0.0001740820 1.0000000000 -0.0001993767 NEB/examples/example01/reference/symmetric_H2+H.dat0000644000700200004540000000067012053145633021260 0ustar marsamoscm 0.0000000000 0.0000000000 0.0100883972 0.1673387179 0.0241414710 0.1134272495 0.3179683723 0.1007691292 0.0492475957 0.4420301869 0.1873784872 0.0673854589 0.5579697920 0.1873784974 0.0673852613 0.6820316102 0.1007691413 0.0492475305 0.8326612694 0.0241414747 0.1134271891 1.0000000000 0.0000000000 0.0100928659 NEB/examples/example01/reference/H2+H-cp.dat0000644000700200004540000000060112053145633017556 0ustar marsamoscm 0.0000000000 0.0000000000 0.0137758694 0.1949492083 0.0336451097 0.0507244549 0.3614916313 0.1329902558 0.0737447875 0.4999977016 0.2051542033 0.0339273795 0.6385020659 0.1328991192 0.0738505322 0.8050597164 0.0334992878 0.0508928871 1.0000000000 -0.0001993767 0.0185906610 NEB/examples/example01/reference/H2+H.axsf0000644000700200004540000000455312053145633017361 0ustar marsamoscm ANIMSTEPS 7 CRYSTAL PRIMVEC 6.3501265031 0.0000000000 0.0000000000 0.0000000000 2.6458860429 0.0000000000 0.0000000000 0.0000000000 2.6458860429 PRIMCOORD 1 3 1 H -2.4165936061 0.0000000000 0.0000000000 -0.0003707418 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 0.8243346657 0.0000000000 0.0000000000 0.0001126308 0.0000000000 0.0000000000 PRIMCOORD 2 3 1 H -1.8714286233 0.0000000000 0.0000000000 -0.0048265909 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 0.8349215369 0.0000000000 0.0000000000 -0.0011166706 0.0000000000 0.0000000000 PRIMCOORD 3 3 1 H -1.4065859742 0.0000000000 0.0000000000 -0.0086893889 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 0.8818384013 0.0000000000 0.0000000000 -0.0052679903 0.0000000000 0.0000000000 PRIMCOORD 4 3 1 H -1.0524649767 0.0000000000 0.0000000000 0.0005838707 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 1.0524643124 0.0000000000 0.0000000000 -0.0005838707 0.0000000000 0.0000000000 PRIMCOORD 5 3 1 H -0.8818385490 0.0000000000 0.0000000000 0.0052680014 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 1.4065853106 0.0000000000 0.0000000000 0.0086893860 0.0000000000 0.0000000000 PRIMCOORD 6 3 1 H -0.8349215547 0.0000000000 0.0000000000 0.0011166728 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 1.8714281947 0.0000000000 0.0000000000 0.0048265973 0.0000000000 0.0000000000 PRIMCOORD 7 3 1 H -0.8243346657 0.0000000000 0.0000000000 -0.0001127384 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 2.4165936061 0.0000000000 0.0000000000 0.0003713962 0.0000000000 0.0000000000 NEB/examples/example01/reference/symmetric_H2+H.path0000644000700200004540000000634212053145633021446 0ustar marsamoscmRESTART INFORMATION 13 50 0 NUMBER OF IMAGES 8 ENERGIES, POSITIONS AND GRADIENTS Image: 1 -1.8191493668 -4.566700090000 0.000000000000 0.000000000000 0.000196188107 0.000000000000 0.000000000000 1 0 0 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0 0 0 1.557766760000 0.000000000000 0.000000000000 -0.000059601667 0.000000000000 0.000000000000 1 0 0 Image: 2 -1.8182621840 -3.678563476308 0.000000000000 0.000000000000 0.002026199802 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 1.571054185527 0.000000000000 0.000000000000 0.000046051987 0.000000000000 0.000000000000 Image: 3 -1.8154461693 -2.881139605548 0.000000000000 0.000000000000 0.004566290003 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 1.629242818455 0.000000000000 0.000000000000 0.002245854370 0.000000000000 0.000000000000 Image: 4 -1.8122633338 -2.249028908304 0.000000000000 0.000000000000 0.002230846468 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 1.813869048446 0.000000000000 0.000000000000 0.003734774901 0.000000000000 0.000000000000 Image: 5 -1.8122633334 -1.813869090445 0.000000000000 0.000000000000 -0.003734773309 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 2.249028804047 0.000000000000 0.000000000000 -0.002230845994 0.000000000000 0.000000000000 Image: 6 -1.8154461689 -1.629242823029 0.000000000000 0.000000000000 -0.002245853081 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 2.881139510245 0.000000000000 0.000000000000 -0.004566290385 0.000000000000 0.000000000000 Image: 7 -1.8182621839 -1.571054226689 0.000000000000 0.000000000000 -0.000046060630 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 3.678563409628 0.000000000000 0.000000000000 -0.002026200109 0.000000000000 0.000000000000 Image: 8 -1.8191493668 -1.557766760000 0.000000000000 0.000000000000 0.000059618188 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 4.566700090000 0.000000000000 0.000000000000 -0.000196275008 0.000000000000 0.000000000000 NEB/examples/example01/reference/H2+H.path0000644000700200004540000000552612053145633017355 0ustar marsamoscmRESTART INFORMATION 13 50 0 NUMBER OF IMAGES 7 ENERGIES, POSITIONS AND GRADIENTS Image: 1 -1.8191493668 -4.566700090000 0.000000000000 0.000000000000 0.000196188107 0.000000000000 0.000000000000 1 0 0 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0 0 0 1.557766760000 0.000000000000 0.000000000000 -0.000059601667 0.000000000000 0.000000000000 1 0 0 Image: 2 -1.8179378712 -3.536487575296 0.000000000000 0.000000000000 0.002554121876 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 1.577773047230 0.000000000000 0.000000000000 0.000590916608 0.000000000000 0.000000000000 Image: 3 -1.8143219561 -2.658062273619 0.000000000000 0.000000000000 0.004598226564 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 1.666433071926 0.000000000000 0.000000000000 0.002787700380 0.000000000000 0.000000000000 Image: 4 -1.8116425602 -1.988870570413 0.000000000000 0.000000000000 -0.000308971083 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 1.988869315109 0.000000000000 0.000000000000 0.000308971083 0.000000000000 0.000000000000 Image: 5 -1.8143219496 -1.666433350938 0.000000000000 0.000000000000 -0.002787706290 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 2.658061019490 0.000000000000 0.000000000000 -0.004598225047 0.000000000000 0.000000000000 Image: 6 -1.8179378691 -1.577773080829 0.000000000000 0.000000000000 -0.000590917798 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 3.536486765389 0.000000000000 0.000000000000 -0.002554125307 0.000000000000 0.000000000000 Image: 7 -1.8191493668 -1.557766760000 0.000000000000 0.000000000000 0.000059658605 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 4.566700090000 0.000000000000 0.000000000000 -0.000196534386 0.000000000000 0.000000000000 NEB/examples/example01/reference/symmetric_H2+H.xyz0000644000700200004540000000240012053145633021333 0ustar marsamoscm 3 H -2.4165936061 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 0.8243346657 0.0000000000 0.0000000000 3 H -1.9466119520 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 0.8313660684 0.0000000000 0.0000000000 3 H -1.5246334140 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 0.8621581668 0.0000000000 0.0000000000 3 H -1.1901348397 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 0.9598581598 0.0000000000 0.0000000000 3 H -0.9598581820 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 1.1901347846 0.0000000000 0.0000000000 3 H -0.8621581692 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 1.5246333636 0.0000000000 0.0000000000 3 H -0.8313660902 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 1.9466119167 0.0000000000 0.0000000000 3 H -0.8243346657 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 2.4165936061 0.0000000000 0.0000000000 NEB/examples/example01/reference/H2+H-cp.path0000644000700200004540000000552612053145633017755 0ustar marsamoscmRESTART INFORMATION 14 50 0 NUMBER OF IMAGES 7 ENERGIES, POSITIONS AND GRADIENTS Image: 1 -1.8192864861 -4.566700090000 0.000000000000 0.000000000000 0.000267898029 0.000000000000 0.000000000000 1 0 0 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0 0 0 1.557766760000 0.000000000000 0.000000000000 0.000006106027 0.000000000000 0.000000000000 1 0 0 Image: 2 -1.8180500510 -3.528275430649 0.000000000000 0.000000000000 0.001330896814 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 1.573969406673 0.000000000000 0.000000000000 0.001190461723 0.000000000000 0.000000000000 Image: 3 -1.8143991839 -2.645102851247 0.000000000000 0.000000000000 0.005374014310 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 1.658617366759 0.000000000000 0.000000000000 0.000491026966 0.000000000000 0.000000000000 Image: 4 -1.8117472075 -1.981744704051 0.000000000000 0.000000000000 0.000650776898 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 1.981721681182 0.000000000000 0.000000000000 -0.000660068673 0.000000000000 0.000000000000 Image: 5 -1.8144025331 -1.658644369866 0.000000000000 0.000000000000 -0.000492715118 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 2.645071657827 0.000000000000 0.000000000000 -0.005378774131 0.000000000000 0.000000000000 Image: 6 -1.8180554099 -1.573967399259 0.000000000000 0.000000000000 -0.001193447428 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 3.528322949685 0.000000000000 0.000000000000 -0.001324105147 0.000000000000 0.000000000000 Image: 7 -1.8192938131 -1.557766760000 0.000000000000 0.000000000000 -0.000074261354 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 0.000000000000 4.566700090000 0.000000000000 0.000000000000 -0.000361530826 0.000000000000 0.000000000000 NEB/examples/example01/reference/H2+H-cp.xyz0000644000700200004540000000214012053145633017640 0ustar marsamoscm 3 H -2.4165936061 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 0.8243346657 0.0000000000 0.0000000000 3 H -1.8670829435 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 0.8329087370 0.0000000000 0.0000000000 3 H -1.3997281433 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 0.8777025083 0.0000000000 0.0000000000 3 H -1.0486941306 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 1.0486819475 0.0000000000 0.0000000000 3 H -0.8777167977 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 1.3997116364 0.0000000000 0.0000000000 3 H -0.8329076748 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 1.8671080895 0.0000000000 0.0000000000 3 H -0.8243346657 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 2.4165936061 0.0000000000 0.0000000000 NEB/examples/example01/reference/symmetric_H2+H.axsf0000644000700200004540000000525412053145633021454 0ustar marsamoscm ANIMSTEPS 8 CRYSTAL PRIMVEC 6.3501265031 0.0000000000 0.0000000000 0.0000000000 2.6458860429 0.0000000000 0.0000000000 0.0000000000 2.6458860429 PRIMCOORD 1 3 1 H -2.4165936061 0.0000000000 0.0000000000 -0.0003707418 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 0.8243346657 0.0000000000 0.0000000000 0.0001126308 0.0000000000 0.0000000000 PRIMCOORD 2 3 1 H -1.9466119520 0.0000000000 0.0000000000 -0.0038289627 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 0.8313660684 0.0000000000 0.0000000000 -0.0000870256 0.0000000000 0.0000000000 PRIMCOORD 3 3 1 H -1.5246334140 0.0000000000 0.0000000000 -0.0086290375 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 0.8621581668 0.0000000000 0.0000000000 -0.0042440497 0.0000000000 0.0000000000 PRIMCOORD 4 3 1 H -1.1901348397 0.0000000000 0.0000000000 -0.0042156889 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 0.9598581598 0.0000000000 0.0000000000 -0.0070577017 0.0000000000 0.0000000000 PRIMCOORD 5 3 1 H -0.9598581820 0.0000000000 0.0000000000 0.0070576987 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 1.1901347846 0.0000000000 0.0000000000 0.0042156880 0.0000000000 0.0000000000 PRIMCOORD 6 3 1 H -0.8621581692 0.0000000000 0.0000000000 0.0042440473 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 1.5246333636 0.0000000000 0.0000000000 0.0086290383 0.0000000000 0.0000000000 PRIMCOORD 7 3 1 H -0.8313660902 0.0000000000 0.0000000000 0.0000870420 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 1.9466119167 0.0000000000 0.0000000000 0.0038289633 0.0000000000 0.0000000000 PRIMCOORD 8 3 1 H -0.8243346657 0.0000000000 0.0000000000 -0.0001126620 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 2.4165936061 0.0000000000 0.0000000000 0.0003709060 0.0000000000 0.0000000000 NEB/examples/example01/reference/H2+H-cp.axsf0000644000700200004540000000455312053145633017761 0ustar marsamoscm ANIMSTEPS 7 CRYSTAL PRIMVEC 6.3501265031 0.0000000000 0.0000000000 0.0000000000 2.6458860429 0.0000000000 0.0000000000 0.0000000000 2.6458860429 PRIMCOORD 1 3 1 H -2.4165936061 0.0000000000 0.0000000000 -0.0005062539 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 0.8243346657 0.0000000000 0.0000000000 -0.0000115387 0.0000000000 0.0000000000 PRIMCOORD 2 3 1 H -1.8670829435 0.0000000000 0.0000000000 -0.0025150305 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 0.8329087370 0.0000000000 0.0000000000 -0.0022496466 0.0000000000 0.0000000000 PRIMCOORD 3 3 1 H -1.3997281433 0.0000000000 0.0000000000 -0.0101554153 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 0.8777025083 0.0000000000 0.0000000000 -0.0009279065 0.0000000000 0.0000000000 PRIMCOORD 4 3 1 H -1.0486941306 0.0000000000 0.0000000000 -0.0012297901 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 1.0486819475 0.0000000000 0.0000000000 0.0012473490 0.0000000000 0.0000000000 PRIMCOORD 5 3 1 H -0.8777167977 0.0000000000 0.0000000000 0.0009310966 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 1.3997116364 0.0000000000 0.0000000000 0.0101644100 0.0000000000 0.0000000000 PRIMCOORD 6 3 1 H -0.8329076748 0.0000000000 0.0000000000 0.0022552888 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 1.8671080895 0.0000000000 0.0000000000 0.0025021961 0.0000000000 0.0000000000 PRIMCOORD 7 3 1 H -0.8243346657 0.0000000000 0.0000000000 0.0001403336 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 H 2.4165936061 0.0000000000 0.0000000000 0.0006831943 0.0000000000 0.0000000000 NEB/examples/example01/reference/symmetric_H2+H.out0000644000700200004540000004336012053145633021322 0ustar marsamoscm Program PWSCF v.4.0 starts ... Today is 28Apr2008 at 16: 3:24 For Norm-Conserving or Ultrasoft (Vanderbilt) Pseudopotentials or PAW Current dimensions of program pwscf are: Max number of different atomic species (ntypx) = 10 Max number of k-points (npk) = 40000 Max angular momentum in pseudopotentials (lmaxx) = 3 gamma-point specific algorithms are used initial path length = 4.2553 bohr initial inter-image distance = 0.6079 bohr calculation = neb restart_mode = from_scratch opt_scheme = broyden num_of_images = 8 nstep = 50 CI_scheme = no-CI first_last_opt = F coarse-grained phase-space = F use_freezing = F ds = 2.0000 a.u. k_max = 0.3000 a.u. k_min = 0.2000 a.u. suggested k_max = 0.1542 a.u. suggested k_min = 0.1028 a.u. path_thr = 0.2000 eV / A ------------------------------ iteration 1 ------------------------------ tcpu = 0.0 self-consistency for image 1 tcpu = 0.4 self-consistency for image 2 tcpu = 0.9 self-consistency for image 3 tcpu = 1.4 self-consistency for image 4 tcpu = 1.9 self-consistency for image 5 tcpu = 2.4 self-consistency for image 6 tcpu = 2.9 self-consistency for image 7 tcpu = 3.4 self-consistency for image 8 activation energy (->) = 1.627022 eV activation energy (<-) = 1.627022 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.1100937 1.835344 F 3 -48.4128430 2.249257 F 4 -47.8745493 1.873407 F 5 -47.8745493 1.873413 F 6 -48.4128430 2.249255 F 7 -49.1100937 1.835338 F 8 -49.5015717 0.010093 T path length = 4.255 bohr inter-image distance = 0.608 bohr ------------------------------ iteration 2 ------------------------------ tcpu = 3.8 self-consistency for image 2 tcpu = 4.2 self-consistency for image 3 tcpu = 4.7 self-consistency for image 4 tcpu = 5.3 self-consistency for image 5 tcpu = 5.8 self-consistency for image 6 tcpu = 6.3 self-consistency for image 7 activation energy (->) = 1.385583 eV activation energy (<-) = 1.385583 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.2214735 1.451931 F 3 -48.6082420 1.970743 F 4 -48.1159885 1.928491 F 5 -48.1159893 1.928493 F 6 -48.6082417 1.970743 F 7 -49.2214729 1.451933 F 8 -49.5015717 0.010093 T path length = 4.295 bohr inter-image distance = 0.614 bohr ------------------------------ iteration 3 ------------------------------ tcpu = 6.7 self-consistency for image 2 tcpu = 7.1 self-consistency for image 3 tcpu = 7.6 self-consistency for image 4 tcpu = 8.0 self-consistency for image 5 tcpu = 8.5 self-consistency for image 6 tcpu = 9.0 self-consistency for image 7 activation energy (->) = 1.058298 eV activation energy (<-) = 1.058298 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.3736163 1.177830 F 3 -48.8763153 1.635196 F 4 -48.4432734 1.701393 F 5 -48.4432736 1.701394 F 6 -48.8763160 1.635202 F 7 -49.3736161 1.177833 F 8 -49.5015717 0.010093 T path length = 4.449 bohr inter-image distance = 0.636 bohr ------------------------------ iteration 4 ------------------------------ tcpu = 9.4 self-consistency for image 2 tcpu = 9.8 self-consistency for image 3 tcpu = 10.3 self-consistency for image 4 tcpu = 10.7 self-consistency for image 5 tcpu = 11.1 self-consistency for image 6 tcpu = 11.5 self-consistency for image 7 activation energy (->) = 0.729986 eV activation energy (<-) = 0.729986 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.4648004 0.703411 F 3 -49.1209357 1.468089 F 4 -48.7715863 1.582543 F 5 -48.7715862 1.582546 F 6 -49.1209363 1.468082 F 7 -49.4648004 0.703410 F 8 -49.5015717 0.010093 T path length = 4.688 bohr inter-image distance = 0.670 bohr ------------------------------ iteration 5 ------------------------------ tcpu = 12.0 self-consistency for image 2 tcpu = 12.4 self-consistency for image 3 tcpu = 12.9 self-consistency for image 4 tcpu = 13.3 self-consistency for image 5 tcpu = 13.8 self-consistency for image 6 tcpu = 14.2 self-consistency for image 7 activation energy (->) = 0.437319 eV activation energy (<-) = 0.437319 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.4604312 0.963408 F 3 -49.3093591 1.228156 F 4 -49.0642529 1.312634 F 5 -49.0642525 1.312638 F 6 -49.3093594 1.228151 F 7 -49.4604311 0.963407 F 8 -49.5015717 0.010093 T path length = 4.984 bohr inter-image distance = 0.712 bohr ------------------------------ iteration 6 ------------------------------ tcpu = 14.7 self-consistency for image 2 tcpu = 15.1 self-consistency for image 3 tcpu = 15.6 self-consistency for image 4 tcpu = 16.0 self-consistency for image 5 tcpu = 16.5 self-consistency for image 6 tcpu = 17.0 self-consistency for image 7 activation energy (->) = 0.230914 eV activation energy (<-) = 0.230914 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.3750319 2.172361 F 3 -49.3809319 1.351127 F 4 -49.2706578 0.882927 F 5 -49.2706575 0.882931 F 6 -49.3809318 1.351133 F 7 -49.3750315 2.172370 F 8 -49.5015717 0.010093 T path length = 5.311 bohr inter-image distance = 0.759 bohr ------------------------------ iteration 7 ------------------------------ tcpu = 17.4 self-consistency for image 2 tcpu = 17.9 self-consistency for image 3 tcpu = 18.3 self-consistency for image 4 tcpu = 18.7 self-consistency for image 5 tcpu = 19.1 self-consistency for image 6 tcpu = 19.5 self-consistency for image 7 activation energy (->) = 0.298844 eV activation energy (<-) = 0.298844 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.4725159 0.651347 F 3 -49.3807825 0.581731 F 4 -49.2027284 1.052881 F 5 -49.2027282 1.052885 F 6 -49.3807826 0.581727 F 7 -49.4725159 0.651347 F 8 -49.5015717 0.010093 T path length = 5.080 bohr inter-image distance = 0.726 bohr ------------------------------ iteration 8 ------------------------------ tcpu = 20.0 self-consistency for image 2 tcpu = 20.3 self-consistency for image 3 tcpu = 20.8 self-consistency for image 4 tcpu = 21.2 self-consistency for image 5 tcpu = 21.7 self-consistency for image 6 tcpu = 22.1 self-consistency for image 7 activation energy (->) = 0.225903 eV activation energy (<-) = 0.225903 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.4763129 0.242904 F 3 -49.3998549 0.170294 F 4 -49.2756691 0.682831 F 5 -49.2756691 0.682831 F 6 -49.3998549 0.170293 F 7 -49.4763129 0.242907 F 8 -49.5015717 0.010093 T path length = 5.183 bohr inter-image distance = 0.740 bohr ------------------------------ iteration 9 ------------------------------ tcpu = 22.5 self-consistency for image 2 tcpu = 22.8 self-consistency for image 3 tcpu = 23.1 self-consistency for image 4 tcpu = 23.5 self-consistency for image 5 tcpu = 24.0 self-consistency for image 6 tcpu = 24.3 self-consistency for image 7 activation energy (->) = 0.196775 eV activation energy (<-) = 0.196775 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.4770211 0.212660 F 3 -49.4056477 0.225879 F 4 -49.3047968 0.386084 F 5 -49.3047967 0.386085 F 6 -49.4056476 0.225880 F 7 -49.4770211 0.212661 F 8 -49.5015717 0.010093 T path length = 5.247 bohr inter-image distance = 0.750 bohr ------------------------------ iteration 10 ------------------------------ tcpu = 24.6 self-consistency for image 2 tcpu = 24.9 self-consistency for image 3 tcpu = 25.3 self-consistency for image 4 tcpu = 25.7 self-consistency for image 5 tcpu = 26.1 self-consistency for image 6 tcpu = 26.5 self-consistency for image 7 activation energy (->) = 0.189973 eV activation energy (<-) = 0.189973 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.4783379 0.149293 F 3 -49.4032631 0.149214 F 4 -49.3115985 0.306126 F 5 -49.3115985 0.306126 F 6 -49.4032631 0.149214 F 7 -49.4783379 0.149293 F 8 -49.5015717 0.010093 T path length = 5.262 bohr inter-image distance = 0.752 bohr ------------------------------ iteration 11 ------------------------------ tcpu = 26.8 self-consistency for image 2 tcpu = 27.1 self-consistency for image 3 tcpu = 27.4 self-consistency for image 4 tcpu = 27.8 self-consistency for image 5 tcpu = 28.1 self-consistency for image 6 tcpu = 28.4 self-consistency for image 7 activation energy (->) = 0.191342 eV activation energy (<-) = 0.191342 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.4777188 0.019079 F 3 -49.4031214 0.193809 F 4 -49.3102299 0.269075 F 5 -49.3102299 0.269075 F 6 -49.4031214 0.193809 F 7 -49.4777188 0.019080 F 8 -49.5015717 0.010093 T path length = 5.268 bohr inter-image distance = 0.753 bohr ------------------------------ iteration 12 ------------------------------ tcpu = 28.7 self-consistency for image 2 tcpu = 29.2 self-consistency for image 3 tcpu = 29.6 self-consistency for image 4 tcpu = 30.1 self-consistency for image 5 tcpu = 30.6 self-consistency for image 6 tcpu = 31.0 self-consistency for image 7 activation energy (->) = 0.347502 eV activation energy (<-) = 0.347502 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.4498141 1.050581 F 3 -49.3787783 0.436889 F 4 -49.1540696 1.942535 F 5 -49.1540695 1.942536 F 6 -49.3787783 0.436887 F 7 -49.4498145 1.050573 F 8 -49.5015717 0.010093 T path length = 5.722 bohr inter-image distance = 0.817 bohr ------------------------------ iteration 13 ------------------------------ tcpu = 31.5 self-consistency for image 2 tcpu = 32.0 self-consistency for image 3 tcpu = 32.4 self-consistency for image 4 tcpu = 32.9 self-consistency for image 5 tcpu = 33.3 self-consistency for image 6 tcpu = 33.8 self-consistency for image 7 activation energy (->) = 0.187378 eV activation energy (<-) = 0.187378 eV image energy (eV) error (eV/A) frozen 1 -49.5015717 0.010088 T 2 -49.4774302 0.113427 F 3 -49.4008026 0.049248 F 4 -49.3141932 0.067385 F 5 -49.3141932 0.067385 F 6 -49.4008026 0.049248 F 7 -49.4774302 0.113427 F 8 -49.5015717 0.010093 T path length = 5.308 bohr inter-image distance = 0.758 bohr --------------------------------------------------------------------------- neb: convergence achieved in 13 iterations PWSCF : 34.19s CPU time, 39.52s wall time init_run : 5.01s CPU ( 80 calls, 0.063 s avg) electrons : 23.71s CPU ( 80 calls, 0.296 s avg) update_pot : 2.54s CPU ( 72 calls, 0.035 s avg) forces : 0.64s CPU ( 80 calls, 0.008 s avg) Called by init_run: wfcinit : 0.01s CPU ( 80 calls, 0.000 s avg) potinit : 1.89s CPU ( 80 calls, 0.024 s avg) Called by electrons: c_bands : 3.25s CPU ( 678 calls, 0.005 s avg) sum_band : 3.38s CPU ( 678 calls, 0.005 s avg) v_of_rho : 15.74s CPU ( 828 calls, 0.019 s avg) newd : 0.65s CPU ( 756 calls, 0.001 s avg) mix_rho : 1.12s CPU ( 678 calls, 0.002 s avg) Called by c_bands: init_us_2 : 0.10s CPU ( 3020 calls, 0.000 s avg) regterg : 3.12s CPU ( 1356 calls, 0.002 s avg) Called by *egterg: h_psi : 2.34s CPU ( 3587 calls, 0.001 s avg) s_psi : 0.05s CPU ( 3719 calls, 0.000 s avg) g_psi : 0.09s CPU ( 2215 calls, 0.000 s avg) rdiaghg : 0.33s CPU ( 3423 calls, 0.000 s avg) Called by h_psi: add_vuspsi : 0.06s CPU ( 3587 calls, 0.000 s avg) General routines calbec : 0.12s CPU ( 5847 calls, 0.000 s avg) cft3 : 4.39s CPU ( 22760 calls, 0.000 s avg) cft3s : 2.61s CPU ( 26484 calls, 0.000 s avg) interpolate : 1.29s CPU ( 2868 calls, 0.000 s avg) davcio : 0.03s CPU ( 5048 calls, 0.000 s avg) NEB/examples/example01/reference/symmetric_H2+H.int0000644000700200004540000002210712053145633021301 0ustar marsamoscm 0.0000000000 0.0000000000 0.0040000000 0.0000134361 0.0080000000 0.0000537795 0.0120000000 0.0001210828 0.0160000000 0.0002153986 0.0200000000 0.0003367795 0.0240000000 0.0004852780 0.0280000000 0.0006609467 0.0320000000 0.0008638383 0.0360000000 0.0010940052 0.0400000000 0.0013515002 0.0440000000 0.0016363758 0.0480000000 0.0019486845 0.0520000000 0.0022884790 0.0560000000 0.0026558118 0.0600000000 0.0030507356 0.0640000000 0.0034733029 0.0680000000 0.0039235663 0.0720000000 0.0044015784 0.0760000000 0.0049073918 0.0800000000 0.0054410591 0.0840000000 0.0060026329 0.0880000000 0.0065921656 0.0920000000 0.0072097101 0.0960000000 0.0078553187 0.1000000000 0.0085290442 0.1040000000 0.0092309390 0.1080000000 0.0099610559 0.1120000000 0.0107194473 0.1160000000 0.0115061659 0.1200000000 0.0123212642 0.1240000000 0.0131647949 0.1280000000 0.0140368105 0.1320000000 0.0149373636 0.1360000000 0.0158665068 0.1400000000 0.0168242927 0.1440000000 0.0178107739 0.1480000000 0.0188260029 0.1520000000 0.0198700324 0.1560000000 0.0209429149 0.1600000000 0.0220447030 0.1640000000 0.0231754494 0.1680000000 0.0243354405 0.1720000000 0.0255356349 0.1760000000 0.0267819870 0.1800000000 0.0280744794 0.1840000000 0.0294130949 0.1880000000 0.0307978161 0.1920000000 0.0322286260 0.1960000000 0.0337055071 0.2000000000 0.0352284422 0.2040000000 0.0367974141 0.2080000000 0.0384124054 0.2120000000 0.0400733990 0.2160000000 0.0417803776 0.2200000000 0.0435333238 0.2240000000 0.0453322205 0.2280000000 0.0471770504 0.2320000000 0.0490677961 0.2360000000 0.0510044406 0.2400000000 0.0529869663 0.2440000000 0.0550153562 0.2480000000 0.0570895930 0.2520000000 0.0592096593 0.2560000000 0.0613755380 0.2600000000 0.0635872117 0.2640000000 0.0658446632 0.2680000000 0.0681478753 0.2720000000 0.0704968306 0.2760000000 0.0728915119 0.2800000000 0.0753319020 0.2840000000 0.0778179835 0.2880000000 0.0803497393 0.2920000000 0.0829271520 0.2960000000 0.0855502044 0.3000000000 0.0882188792 0.3040000000 0.0909331591 0.3080000000 0.0936930270 0.3120000000 0.0964984655 0.3160000000 0.0993494573 0.3200000000 0.1022413090 0.3240000000 0.1051462267 0.3280000000 0.1080583140 0.3320000000 0.1109760018 0.3360000000 0.1138977209 0.3400000000 0.1168219019 0.3440000000 0.1197469756 0.3480000000 0.1226713728 0.3520000000 0.1255935242 0.3560000000 0.1285118606 0.3600000000 0.1314248127 0.3640000000 0.1343308113 0.3680000000 0.1372282871 0.3720000000 0.1401156709 0.3760000000 0.1429913934 0.3800000000 0.1458538853 0.3840000000 0.1487015775 0.3880000000 0.1515329006 0.3920000000 0.1543462855 0.3960000000 0.1571401628 0.4000000000 0.1599129633 0.4040000000 0.1626631178 0.4080000000 0.1653890570 0.4120000000 0.1680892117 0.4160000000 0.1707620126 0.4200000000 0.1734058904 0.4240000000 0.1760192760 0.4280000000 0.1786006001 0.4320000000 0.1811482933 0.4360000000 0.1836607865 0.4400000000 0.1861365104 0.4440000000 0.1885582813 0.4480000000 0.1908285386 0.4520000000 0.1929306288 0.4560000000 0.1948645517 0.4600000000 0.1966303074 0.4640000000 0.1982278958 0.4680000000 0.1996573171 0.4720000000 0.2009185711 0.4760000000 0.2020116579 0.4800000000 0.2029365775 0.4840000000 0.2036933299 0.4880000000 0.2042819150 0.4920000000 0.2047023329 0.4960000000 0.2049545837 0.5000000000 0.2050386672 0.5040000000 0.2049545834 0.5080000000 0.2047023325 0.5120000000 0.2042819143 0.5160000000 0.2036933290 0.5200000000 0.2029365764 0.5240000000 0.2020116566 0.5280000000 0.2009185696 0.5320000000 0.1996573154 0.5360000000 0.1982278939 0.5400000000 0.1966303053 0.5440000000 0.1948645494 0.5480000000 0.1929306264 0.5520000000 0.1908285361 0.5560000000 0.1885582786 0.5600000000 0.1861365081 0.5640000000 0.1836607847 0.5680000000 0.1811482919 0.5720000000 0.1786005991 0.5760000000 0.1760192754 0.5800000000 0.1734058901 0.5840000000 0.1707620125 0.5880000000 0.1680892118 0.5920000000 0.1653890573 0.5960000000 0.1626631183 0.6000000000 0.1599129639 0.6040000000 0.1571401634 0.6080000000 0.1543462861 0.6120000000 0.1515329013 0.6160000000 0.1487015781 0.6200000000 0.1458538859 0.6240000000 0.1429913939 0.6280000000 0.1401156714 0.6320000000 0.1372282875 0.6360000000 0.1343308116 0.6400000000 0.1314248129 0.6440000000 0.1285118607 0.6480000000 0.1255935242 0.6520000000 0.1226713727 0.6560000000 0.1197469754 0.6600000000 0.1168219016 0.6640000000 0.1138977205 0.6680000000 0.1109760014 0.6720000000 0.1080583135 0.6760000000 0.1051462261 0.6800000000 0.1022413085 0.6840000000 0.0993494569 0.6880000000 0.0964984652 0.6920000000 0.0936930269 0.6960000000 0.0909331592 0.7000000000 0.0882188794 0.7040000000 0.0855502048 0.7080000000 0.0829271526 0.7120000000 0.0803497401 0.7160000000 0.0778179845 0.7200000000 0.0753319031 0.7240000000 0.0728915132 0.7280000000 0.0704968321 0.7320000000 0.0681478769 0.7360000000 0.0658446650 0.7400000000 0.0635872136 0.7440000000 0.0613755400 0.7480000000 0.0592096615 0.7520000000 0.0570895952 0.7560000000 0.0550153586 0.7600000000 0.0529869687 0.7640000000 0.0510044430 0.7680000000 0.0490677986 0.7720000000 0.0471770529 0.7760000000 0.0453322230 0.7800000000 0.0435333263 0.7840000000 0.0417803800 0.7880000000 0.0400734014 0.7920000000 0.0384124078 0.7960000000 0.0367974163 0.8000000000 0.0352284443 0.8040000000 0.0337055090 0.8080000000 0.0322286277 0.8120000000 0.0307978176 0.8160000000 0.0294130961 0.8200000000 0.0280744804 0.8240000000 0.0267819877 0.8280000000 0.0255356353 0.8320000000 0.0243354404 0.8360000000 0.0231754489 0.8400000000 0.0220447022 0.8440000000 0.0209429137 0.8480000000 0.0198700308 0.8520000000 0.0188260011 0.8560000000 0.0178107718 0.8600000000 0.0168242904 0.8640000000 0.0158665044 0.8680000000 0.0149373610 0.8720000000 0.0140368078 0.8760000000 0.0131647921 0.8800000000 0.0123212614 0.8840000000 0.0115061630 0.8880000000 0.0107194444 0.8920000000 0.0099610530 0.8960000000 0.0092309362 0.9000000000 0.0085290414 0.9040000000 0.0078553160 0.9080000000 0.0072097074 0.9120000000 0.0065921631 0.9160000000 0.0060026304 0.9200000000 0.0054410568 0.9240000000 0.0049073896 0.9280000000 0.0044015764 0.9320000000 0.0039235644 0.9360000000 0.0034733011 0.9400000000 0.0030507340 0.9440000000 0.0026558104 0.9480000000 0.0022884777 0.9520000000 0.0019486833 0.9560000000 0.0016363747 0.9600000000 0.0013514993 0.9640000000 0.0010940045 0.9680000000 0.0008638377 0.9720000000 0.0006609462 0.9760000000 0.0004852776 0.9800000000 0.0003367792 0.9840000000 0.0002153984 0.9880000000 0.0001210827 0.9920000000 0.0000537795 0.9960000000 0.0000134361 1.0000000000 0.0000000000 NEB/examples/example01/reference/H2+H.dat0000644000700200004540000000060112053145633017156 0ustar marsamoscm 0.0000000000 0.0000000000 0.0100883972 0.1939686614 0.0329664722 0.0450635505 0.3601677336 0.1313605248 0.0422584381 0.4999998398 0.2042705973 0.0158879326 0.6398320260 0.1313607025 0.0422582542 0.8060311860 0.0329665290 0.0450635459 1.0000000000 0.0000000000 0.0101062036 NEB/examples/example01/reference/asymmetric_H2+H.xyz0000644000700200004540000000240012053145633021474 0ustar marsamoscm 3 H -2.4165936061 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 0.8243346657 0.0000000000 0.0000000000 3 H -2.0131348464 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 0.8297340455 0.0000000000 0.0000000000 3 H -1.6372800206 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 0.8472607656 0.0000000000 0.0000000000 3 H -1.3238851688 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 0.9000945015 0.0000000000 0.0000000000 3 H -1.0748823172 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 1.0305089178 0.0000000000 0.0000000000 3 H -0.8858875397 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 1.3785193956 0.0000000000 0.0000000000 3 H -0.8347866509 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 1.8502339974 0.0000000000 0.0000000000 3 H -0.8243346657 0.0000000000 0.0000000000 H 0.0000000000 0.0000000000 0.0000000000 H 2.4165936061 0.0000000000 0.0000000000 NEB/examples/example01/check-neb.x.j0000755000700200004540000001175112053145633016345 0ustar marsamoscm#!/bin/sh # Automated checks for neb.x - PG 2011 # Same logic of "check-pw.x.j" # You shouldn't need to modify anything below this line. # taken from examples - not sure it is really needed if test "`echo -e`" = "-e" ; then ECHO=echo ; else ECHO="echo -e" ; fi ESPRESSO_ROOT=`cd ../.. ; pwd` . $ESPRESSO_ROOT/examples/environment_variables ESPRESSO_TMPDIR=$ESPRESSO_ROOT/tmp/ ESPRESSO_PSEUDO=$ESPRESSO_ROOT/pseudo/ # no need to specify outdir and pseudo_dir in all *.in files export ESPRESSO_TMPDIR ESPRESSO_PSEUDO if test ! -d $ESPRESSO_TMPDIR then mkdir $ESPRESSO_TMPDIR fi # this is the current directory, where the test is executed TESTDIR=`pwd` # With no arguments, checks all *.in files # With an argument, checks files (ending with .in) matching the argument if test $# = 0 then files=`/bin/ls *.in` else files=`/bin/ls $*| grep "\.in$"` fi ######################################################################## # function to get pseudopotentials from the web if missing ######################################################################## get_pp () { ppfiles=`grep UPF $1.in | awk '{print $3}'` for ppfile in $ppfiles do if ! test -f $ESPRESSO_PSEUDO/$ppfile ; then $ECHO "Downloading $ppfile to $ESPRESSO_PSEUDO...\c" $WGET $ESPRESSO_PSEUDO/$ppfile \ http://www.quantum-espresso.org/pseudo/1.3/UPF/$ppfile \ 2> /dev/null if test $? != 0; then $ECHO "failed!" $ECHO "test $1 will not be executed" # status=1 else $ECHO "success" # status=0 fi fi done } ######################################################################## # function to test NEB calculations - usage: check_neb "file prefix" ######################################################################## check_neb () { # get reference number of neb iterations n0=`grep 'neb: convergence' $1.ref | awk '{print $1}'` # get reference activation energy (truncated to 4 significant digits) e0=`grep 'activation energy' $1.ref | tail -1 | awk '{printf "%8.4f\n", $5}'` # n1=`grep 'neb: convergence' $1.out | awk '{print $1}'` e1=`grep 'activation energy' $1.out | tail -1 | awk '{printf "%8.4f\n", $5}'` if test "$e1" = "$e0" then if test "$n1" = "$n0" then $ECHO "passed" fi fi if test "$e1" != "$e0" then $ECHO "discrepancy in activation energy detected" $ECHO "Reference: $e0, You got: $e1" fi if test "$n1" != "$n0" then $ECHO "discrepancy in number of neb iterations detected" $ECHO "Reference: $n0, You got: $n1" fi } ######################################################################## # function to get wall times - usage: get_times "file prefix" ######################################################################## get_times () { # convert from "1h23m45.6s" to seconds # the following line prevents cases such as "2m 7.5s" grep 'WALL$' $1.ref | sed 's/m /m0/' > $1.tmp # in order to get cpu instead of wall time, replace $3 to $5 tref=`awk '{ str = $5; h = m = s = 0; if (split(str, x, "h") == 2) { h = x[1]; str = x[2]; } if (split(str, x, "m") == 2) { m = x[1]; str = x[2]; } if (split(str, x, "s") == 2) { s = x[1]; str = x[2]; } t += h * 3600 + m * 60 + s; } END { printf("%.2f\n", t); }' \ $1.tmp` # as above for file *.out grep 'WALL$' $1.out | sed 's/m /m0/' > $1.tmp tout=`awk '{ str = $5; h = m = s = 0; if (split(str, x, "h") == 2) { h = x[1]; str = x[2]; } if (split(str, x, "m") == 2) { m = x[1]; str = x[2]; } if (split(str, x, "s") == 2) { s = x[1]; str = x[2]; } t += h * 3600 + m * 60 + s; } END { printf("%.2f\n", t); }' \ $1.tmp` /bin/rm $1.tmp # accumulate data totref=`echo $totref $tref | awk '{print $1+$2}'` totout=`echo $totout $tout | awk '{print $1+$2}'` } ######################################################################## # Perform here required checks ######################################################################## for file in $files do name=`basename $file .in` get_pp $name $ECHO "Checking $name...\c" ### # run the code in the scratch directory # cd $ESPRESSO_TMPDIR $PARA_PREFIX $ESPRESSO_ROOT/bin/neb.x $PARA_POSTFIX \ -inp $TESTDIR/$name.in > $TESTDIR/$name.out 2> /dev/null if test $? != 0; then $ECHO "FAILED with error condition!" $ECHO "Input: $name.in, Output: $name.out, Reference: $name.ref" $ECHO "Aborting" exit 1 fi # cd $TESTDIR ### if test -f $name.ref ; then # reference file exists if grep 'neb: convergence achieved' $name.ref > /dev/null; then # Specific test for NEB check_neb $name # fi # # extract wall time statistics # get_times $name # else $ECHO "not checked, reference file not available " fi # done $ECHO "Total wall time (s) spent in this run: " $totout $ECHO "Reference : " $totref NEB/examples/example01/run_example0000755000700200004540000001755512053145633016357 0ustar marsamoscm#!/bin/sh # run from directory where this script is cd `echo $0 | sed 's/\(.*\)\/.*/\1/'` # extract pathname EXAMPLE_DIR=`pwd` # check whether echo has the -e option if test "`echo -e`" = "-e" ; then ECHO=echo ; else ECHO="echo -e" ; fi $ECHO $ECHO "$EXAMPLE_DIR : starting" $ECHO $ECHO "This example shows how to use neb.x to calculate the" $ECHO "minimum energy path (MEP) of the collinear proton transfer reaction:" $ECHO " H2+H <==> H+H2, within the Born-Oppenheimer approximation." $ECHO $ECHO "!!! Beware: neb.x DOES NOT READ FROM STANDARD INPUT" $ECHO "!!! run as 'neb.x -inp input_file_name > output_file_name'" $ECHO # set the needed environment variables . ../../../environment_variables # required executables and pseudopotentials BIN_LIST="neb.x" PSEUDO_LIST="HUSPBE.RRKJ3" $ECHO $ECHO " executables directory: $BIN_DIR" $ECHO " pseudo directory: $PSEUDO_DIR" $ECHO " temporary directory: $TMP_DIR" $ECHO " checking that needed directories and files exist...\c" # check for directories for DIR in "$BIN_DIR" "$PSEUDO_DIR" ; do if test ! -d $DIR ; then $ECHO $ECHO "ERROR: $DIR not existent or not a directory" $ECHO "Aborting" exit 1 fi done for DIR in "$TMP_DIR" "$EXAMPLE_DIR/results" ; do if test ! -d $DIR ; then mkdir $DIR fi done cd $EXAMPLE_DIR/results # check for executables for FILE in $BIN_LIST ; do if test ! -x $BIN_DIR/$FILE ; then $ECHO $ECHO "ERROR: $BIN_DIR/$FILE not existent or not executable" $ECHO "Aborting" exit 1 fi done # check for pseudopotentials for FILE in $PSEUDO_LIST ; do if test ! -r $PSEUDO_DIR/$FILE ; then $ECHO $ECHO "Downloading $FILE to $PSEUDO_DIR...\c" $WGET $PSEUDO_DIR/$FILE $NETWORK_PSEUDO/$FILE 2> /dev/null fi if test $? != 0; then $ECHO $ECHO "ERROR: $PSEUDO_DIR/$FILE not existent or not readable" $ECHO "Aborting" exit 1 fi done $ECHO " done" # how to run executables NEB_COMMAND="$PARA_PREFIX $BIN_DIR/neb.x $PARA_POSTFIX" $ECHO $ECHO " running Born-Oppenheimer NEB as: $NEB_COMMAND" $ECHO # clean TMP_DIR $ECHO " cleaning $TMP_DIR...\c" rm -rf $TMP_DIR/* $ECHO " done" # NEB calculation. Automatic choice of the climbing image. cat > H2+H.in << EOF BEGIN BEGIN_PATH_INPUT &PATH restart_mode = 'from_scratch' string_method = 'neb', nstep_path = 20, ds = 2.D0, opt_scheme = "broyden", num_of_images = 7, k_max = 0.3D0, k_min = 0.2D0, CI_scheme = "auto", path_thr = 0.1D0, / END_PATH_INPUT BEGIN_ENGINE_INPUT &CONTROL prefix = "H2+H" outdir = "$TMP_DIR", pseudo_dir = "$PSEUDO_DIR", / &SYSTEM ibrav = 0, celldm(1) = 1.D0, nat = 3, ntyp = 1, ecutwfc = 20.0D0, ecutrho = 100.0D0, nspin = 2, starting_magnetization = 0.5D0, occupations = "smearing", degauss = 0.03D0, / &ELECTRONS conv_thr = 1.D-8, mixing_beta = 0.3D0, / &IONS / ATOMIC_SPECIES H 1.00794 HUSPBE.RRKJ3 BEGIN_POSITIONS FIRST_IMAGE ATOMIC_POSITIONS { bohr } H -4.56670009 0.00000000 0.00000000 1 0 0 H 0.00000000 0.00000000 0.00000000 0 0 0 H 1.55776676 0.00000000 0.00000000 1 0 0 LAST_IMAGE ATOMIC_POSITIONS { bohr } H -1.55776676 0.00000000 0.00000000 H 0.00000000 0.00000000 0.00000000 H 4.56670009 0.00000000 0.00000000 END_POSITIONS K_POINTS { gamma } CELL_PARAMETERS { cubic } 12.00000 0.00000 0.00000 0.00000 5.00000 0.00000 0.00000 0.00000 5.00000 END_ENGINE_INPUT END EOF $ECHO " running Born-Oppenheimer NEB calculation for H2+H => H+H2...\c" $NEB_COMMAND -inp H2+H.in > H2+H.out check_failure $? $ECHO " done" # clean TMP_DIR $ECHO " cleaning $TMP_DIR...\c" rm -rf $TMP_DIR/* $ECHO " done" # NEB calculation. Climbing image is not used cat > symmetric_H2+H.in << EOF BEGIN BEGIN_PATH_INPUT &PATH restart_mode = 'from_scratch' string_method = 'neb', nstep_path = 20, ds = 2.D0, opt_scheme = "broyden", num_of_images = 8, k_max = 0.3D0, k_min = 0.2D0, path_thr = 0.2D0, / END_PATH_INPUT BEGIN_ENGINE_INPUT &CONTROL prefix = "symmetric_H2+H" outdir = "$TMP_DIR", pseudo_dir = "$PSEUDO_DIR", / &SYSTEM ibrav = 0, celldm(1) = 1.D0, nat = 3, ntyp = 1, ecutwfc = 20.0D0, ecutrho = 100.0D0, nspin = 2, starting_magnetization = 0.5D0, occupations = "smearing", degauss = 0.03D0, / &ELECTRONS conv_thr = 1.D-8, mixing_beta = 0.3D0, / &IONS / ATOMIC_SPECIES H 1.00794 HUSPBE.RRKJ3 K_POINTS { gamma } CELL_PARAMETERS { cubic } 12.00000 0.00000 0.00000 0.00000 5.00000 0.00000 0.00000 0.00000 5.00000 BEGIN_POSITIONS FIRST_IMAGE ATOMIC_POSITIONS { bohr } H -4.56670009 0.00000000 0.00000000 1 0 0 H 0.00000000 0.00000000 0.00000000 0 0 0 H 1.55776676 0.00000000 0.00000000 1 0 0 LAST_IMAGE ATOMIC_POSITIONS { bohr } H -1.55776676 0.00000000 0.00000000 H 0.00000000 0.00000000 0.00000000 H 4.56670009 0.00000000 0.00000000 END_POSITIONS END_ENGINE_INPUT END EOF $ECHO " running Born-Oppenheimer NEB calculation for symmetric H2+H => H+H2...\c" $NEB_COMMAND -inp symmetric_H2+H.in > symmetric_H2+H.out check_failure $? $ECHO " done" # clean TMP_DIR $ECHO " cleaning $TMP_DIR...\c" rm -rf $TMP_DIR/* $ECHO " done" # the name of the restart file is changed in order to conform to the # prefix of the new run # the restart file asymmetric_H2+H.neb is modified (second row) # since a new simulation (from the old path) is started cat symmetric_H2+H.path | \ awk '{if(NR==2){printf" 0\n"}; if(NR!=2){print}}' > asymmetric_H2+H.path # NEB calculation. The image that has to climb is manually chosen cat > asymmetric_H2+H.in << EOF BEGIN BEGIN_PATH_INPUT &PATH restart_mode = 'restart' string_method = 'neb', nstep_path = 20, ds = 2.D0, opt_scheme = "broyden", num_of_images = 8, k_max = 0.3D0, k_min = 0.2D0, path_thr = 0.05D0, CI_scheme = "manual" / CLIMBING_IMAGES 5 END_PATH_INPUT BEGIN_ENGINE_INPUT &CONTROL prefix = "asymmetric_H2+H" outdir = "$TMP_DIR", pseudo_dir = "$PSEUDO_DIR", / &SYSTEM ibrav = 0, celldm(1) = 1.D0, nat = 3, ntyp = 1, ecutwfc = 20.0D0, ecutrho = 100.0D0, nspin = 2, starting_magnetization = 0.5D0, occupations = "smearing", degauss = 0.03D0, / &ELECTRONS conv_thr = 1.D-8, mixing_beta = 0.3D0, / &IONS / ATOMIC_SPECIES H 1.00794 HUSPBE.RRKJ3 K_POINTS { gamma } CELL_PARAMETERS { cubic } 12.00000 0.00000 0.00000 0.00000 5.00000 0.00000 0.00000 0.00000 5.00000 BEGIN_POSITIONS FIRST_IMAGE ATOMIC_POSITIONS { bohr } H -4.56670009 0.00000000 0.00000000 1 0 0 H 0.00000000 0.00000000 0.00000000 0 0 0 H 1.55776676 0.00000000 0.00000000 1 0 0 LAST_IMAGE ATOMIC_POSITIONS { bohr } H -1.55776676 0.00000000 0.00000000 H 0.00000000 0.00000000 0.00000000 H 4.56670009 0.00000000 0.00000000 END_POSITIONS END_ENGINE_INPUT END EOF $ECHO " running Born-Oppenheimer NEB calculation for asymmetric H2+H => H+H2...\c" $NEB_COMMAND -inp asymmetric_H2+H.in > asymmetric_H2+H.out check_failure $? $ECHO " done" # clean TMP_DIR $ECHO " cleaning $TMP_DIR...\c" rm -rf $TMP_DIR/* $ECHO " done" $ECHO $ECHO "$EXAMPLE_DIR: done" NEB/examples/example01/run_xml_example0000755000700200004540000004755212053145633017237 0ustar marsamoscm#!/bin/sh # run from directory where this script is cd `echo $0 | sed 's/\(.*\)\/.*/\1/'` # extract pathname EXAMPLE_DIR=`pwd` # check whether echo has the -e option if test "`echo -e`" = "-e" ; then ECHO=echo ; else ECHO="echo -e" ; fi $ECHO $ECHO "$EXAMPLE_DIR : starting" $ECHO $ECHO "This example shows how to use neb.x to calculate the" $ECHO "minimum energy path (MEP) of the collinear proton transfer reaction:" $ECHO " H2+H <==> H+H2, within the Born-Oppenheimer approximation." $ECHO $ECHO "!!!!!Atention for neb.x NO STANDARD INPUT is allowed," $ECHO "run with neb.x -inp input_file_name > output_file_name." $ECHO $ECHO "xml format is automatically detected." # set the needed environment variables . ../../../environment_variables # required executables and pseudopotentials BIN_LIST="neb.x" PSEUDO_LIST="HUSPBE.RRKJ3" $ECHO $ECHO " executables directory: $BIN_DIR" $ECHO " pseudo directory: $PSEUDO_DIR" $ECHO " temporary directory: $TMP_DIR" $ECHO " checking that needed directories and files exist...\c" # check for directories for DIR in "$BIN_DIR" "$PSEUDO_DIR" ; do if test ! -d $DIR ; then $ECHO $ECHO "ERROR: $DIR not existent or not a directory" $ECHO "Aborting" exit 1 fi done for DIR in "$TMP_DIR" "$EXAMPLE_DIR/results" ; do if test ! -d $DIR ; then mkdir $DIR fi done cd $EXAMPLE_DIR/results # check for executables for FILE in $BIN_LIST ; do if test ! -x $BIN_DIR/$FILE ; then $ECHO $ECHO "ERROR: $BIN_DIR/$FILE not existent or not executable" $ECHO "Aborting" exit 1 fi done # check for pseudopotentials for FILE in $PSEUDO_LIST ; do if test ! -r $PSEUDO_DIR/$FILE ; then $ECHO $ECHO "Downloading $FILE to $PSEUDO_DIR...\c" $WGET $PSEUDO_DIR/$FILE \ http://www.quantum-espresso.org/pseudo/1.3/UPF/$FILE 2> /dev/null fi if test $? != 0; then $ECHO $ECHO "ERROR: $PSEUDO_DIR/$FILE not existent or not readable" $ECHO "Aborting" exit 1 fi done $ECHO " done" # how to run executables NEB_COMMAND="$PARA_PREFIX $BIN_DIR/neb.x $PARA_POSTFIX" CP_COMMAND="$PARA_PREFIX $BIN_DIR/cp.x $PARA_POSTFIX" $ECHO $ECHO " running Born-Oppenheimer NEB as: $PW_COMMAND" $ECHO " running cp.x as: $CP_COMMAND" $ECHO # clean TMP_DIR $ECHO " cleaning $TMP_DIR...\c" rm -rf $TMP_DIR/* $ECHO " done" # NEB calculation. Automatic choice of the climbing image. cat > H2+H.in << EOF BEGIN EGIN_PATH_INPUT &PATH restart_mode = 'from_scratch' string_method = 'neb', nstep_path = 20, ds = 2.D0, opt_scheme = "broyden", num_of_images = 7, k_max = 0.3D0, k_min = 0.2D0, CI_scheme = "auto", path_thr = 0.1D0, / END_PATH_INPUT BEGIN_ENGINE_INPUT 12.0 0.0 0.0 0.0 5.0 0.0 0.0 0.0 5.0 1.00794 HUSPBE.RRKJ3 0.5 BEGIN_POSITIONS FIRST_IMAGE -4.56670009 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 1.55776676 0.00000000 0.00000000 LAST_IMAGE -1.55776676 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 4.56670009 0.00000000 0.00000000 END_POSITIONS from_scratch $PSEUDO_DIR $TMP_DIR/ 20.0 100.0 0.3 1.0d-8 smearing 0.01 2 END_ENGINE_INPUT END EOF $ECHO " running Born-Oppenheimer NEB calculation for H2+H => H+H2...\c" $NEB_COMMAND -inp H2+H.in > H2+H.out check_failure $? $ECHO " done" # clean TMP_DIR $ECHO " cleaning $TMP_DIR...\c" rm -rf $TMP_DIR/* $ECHO " done" # NEB calculation. Climbing image is not used cat > symmetric_H2+H.in << EOF BEGIN BEGIN_PATH_INPUT &PATH restart_mode = 'from_scratch' string_method = 'neb', nstep_path = 20, ds = 2.D0, opt_scheme = "broyden", num_of_images = 8, k_max = 0.3D0, k_min = 0.2D0, path_thr = 0.2D0, / END_PATH_INPUT BEGIN_ENGINE_INPUT 12.0 0.0 0.0 0.0 5.0 0.0 0.0 0.0 5.0 1.00794 HUSPBE.RRKJ3 0.5 BEGIN_POSITIONS FIRST_IMAGE -4.56670009 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 1.55776676 0.00000000 0.00000000 LAST_IMAGE -1.55776676 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 4.56670009 0.00000000 0.00000000 END_POSITIONS from_scratch $PSEUDO_DIR $TMP_DIR/ 20.0 100.0 0.3 1.0d-8 smearing 0.01 2 END_ENGINE_INPUT END EOF $ECHO " running Born-Oppenheimer NEB calculation for symmetric H2+H => H+H2...\c" $NEB_COMMAND -inp symmetric_H2+H.in > symmetric_H2+H.out check_failure $? $ECHO " done" # clean TMP_DIR $ECHO " cleaning $TMP_DIR...\c" rm -rf $TMP_DIR/* $ECHO " done" # the name of the restart file is changed in order to conform to the # prefix of the new run # the restart file asymmetric_H2+H.neb is modified (second row) # since a new simulation (from the old path) is started cat symmetric_H2+H.path | \ awk '{if(NR==2){printf" 0\n"}; if(NR!=2){print}}' > asymmetric_H2+H.path # NEB calculation. The image that has to climb is manually chosen cat > asymmetric_H2+H.in << EOF BEGIN BEGIN_PATH_INPUT &PATH restart_mode = 'restart' string_method = 'neb', nstep_path = 20, ds = 2.D0, opt_scheme = "broyden", num_of_images = 8, k_max = 0.3D0, k_min = 0.2D0, path_thr = 0.05D0, CI_scheme = "manual" / CLIMBING_IMAGES 5 END_PATH_INPUT BEGIN_ENGINE_INPUT 12.0 0.0 0.0 0.0 5.0 0.0 0.0 0.0 5.0 1.00794 HUSPBE.RRKJ3 0.5 BEGIN_POSITIONS FIRST_IMAGE -4.56670009 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 1.55776676 0.00000000 0.00000000 LAST_IMAGE -1.55776676 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 4.56670009 0.00000000 0.00000000 END_POSITIONS from_scratch $PSEUDO_DIR $TMP_DIR/ 20.0 100.0 0.3 1.0d-8 smearing 0.01 2 END_ENGINE_INPUT END EOF $ECHO " running Born-Oppenheimer NEB calculation for asymmetric H2+H => H+H2...\c" $NEB_COMMAND -inp asymmetric_H2+H.in > asymmetric_H2+H.out check_failure $? $ECHO " done" # clean TMP_DIR $ECHO " cleaning $TMP_DIR...\c" rm -rf $TMP_DIR/* $ECHO " done" $ECHO $ECHO "$EXAMPLE_DIR: done" NEB/examples/example01/README0000644000700200004540000000306412053145633014760 0ustar marsamoscm This example shows how to use neb.x to calculate the minimum energy path (MEP) of a simple activated reaction i.e. the collinear proton transfer reaction : H2 + H <==> H + H2 The MEP is obtained by means of the Climbing-Image Nudged Elastic Band (CI-NEB) method and two different climbing image algorithms are used ("auto" and "manual"). (for the meaning of the cited input variables see the Doc/INPUT_NEB* files) The symmetric reaction path H2 + H <==> H + H2 is calculated in three different ways. 1) The path connecting the initial and the final configurations is discretized with an odd number of images (7) so that the standard CI_scheme ("auto") will give rise to a symmetric MEP (3 images on the left of the saddle point and 3 images on the right). Note that in this system the use of the climbing image is not necessary. Indeed using CI_scheme = "no-CI" the result is the same. 2) The path connecting the initial and the final configurations is discretized with an even number of images (8) and no climbing image is used. The resulting path is symmetric, but no image is at the saddle point. 3) The path connecting the initial and the final configurations is again discretized with an even number of images (8), but the "manual" CI_scheme is used so that the resulting path is asymmetric. The image 5 now is at the saddle point. Given the low accuracy of these calculations (plane waves cut-off and thresholds) and the small box employed, these results should not be compared with experiments or with other "ab initio" calculations. NEB/Makefile0000644000700200004540000000126212053145633012124 0ustar marsamoscm# Makefile for NEB default: all all: if test -d src ; then \ ( cd src ; if test "$(MAKE)" = "" ; then make $(MFLAGS) $@; \ else $(MAKE) $(MFLAGS) $@ ; fi ) ; fi ; \ doc: if test -d Doc ; then \ ( cd Doc ; if test "$(MAKE)" = "" ; then make $(MFLAGS) $@; \ else $(MAKE) $(MFLAGS) $@ ; fi) ; fi ; \ clean : examples_clean if test -d src ; then \ ( cd src ; if test "$(MAKE)" = "" ; then make clean ; \ else $(MAKE) clean ; fi ) ; fi ;\ examples_clean: if test -d examples ; then \ ( cd examples ; ./clean_all ) ; fi doc_clean : if test -d Doc ; then \ ( cd Doc ; if test "$(MAKE)" = "" ; then make clean ; \ else $(MAKE) clean ; fi ) ; fi ;\ distclean: clean doc_clean NEB/src/0000755000700200004540000000000012053440276011253 5ustar marsamoscmNEB/src/path_gen_inputs.f900000644000700200004540000001217112053145633014763 0ustar marsamoscmsubroutine path_gen_inputs(parse_file_name,engine_prefix,nimage,root,comm) ! USE mp_global, only : mp_rank implicit none ! INTEGER, EXTERNAL :: find_free_unit ! character(len=*), intent(in) :: parse_file_name character(len=*), intent(in) :: engine_prefix integer, intent(out) :: nimage integer, intent(in) :: root integer, intent(in) :: comm ! character(len=512) :: dummy integer :: i, j integer :: parse_unit, neb_unit integer, allocatable :: unit_tmp(:) integer :: unit_tmp_i character(len=10) :: a_tmp integer :: myrank myrank = mp_rank(comm) parse_unit = find_free_unit() open(unit=parse_unit,file=trim(parse_file_name),status="old") ! --------------------------------------------------- ! NEB INPUT PART ! --------------------------------------------------- i=0 nimage = 0 neb_unit = find_free_unit() open(unit=neb_unit,file='neb.dat',status="unknown") dummy="" do while (LEN_TRIM(dummy)<1) read(parse_unit,fmt='(A512)',END=10) dummy enddo if(trim(dummy)=="BEGIN") then do while (trim(dummy)/="END") read(parse_unit,*) dummy if(trim(dummy)=="BEGIN_PATH_INPUT") then read(parse_unit,'(A512)') dummy do while (trim(dummy)/="END_PATH_INPUT") if(myrank==root) write(neb_unit,*) trim(dummy) read(parse_unit,'(A512)') dummy enddo endif if(trim(dummy)=="FIRST_IMAGE") then nimage = nimage + 1 endif if(trim(dummy)=="INTERMEDIATE_IMAGE") then nimage = nimage + 1 endif if(trim(dummy)=="LAST_IMAGE") then nimage=nimage+1 endif enddo else write(0,*) "key word BEGIN missing" endif close(neb_unit) !------------------------------------------------ ! ! ! ------------------------------------------------ ! ENGINE INPUT PART ! ------------------------------------------------ allocate(unit_tmp(1:nimage)) unit_tmp(:) = 0 do i=1,nimage unit_tmp(i) = find_free_unit() enddo do i=1,nimage if(i>=1.and.i<10) then write(a_tmp,'(i1)') i elseif(i>=10.and.i<100) then write(a_tmp,'(i2)') i elseif(i>=100.and.i<1000) then write(a_tmp,'(i3)') endif unit_tmp_i = unit_tmp(i) open(unit=unit_tmp_i,file=trim(engine_prefix)//trim(a_tmp)//".in") REWIND(parse_unit) dummy="" do while (LEN_TRIM(dummy)<1) read(parse_unit,fmt='(A512)',END=10) dummy enddo if(trim(dummy)=="BEGIN") then do while (trim(dummy)/="END") dummy="" do while (LEN_TRIM(dummy)<1) read(parse_unit,fmt='(A512)',END=10) dummy enddo if(trim(dummy)=="BEGIN_ENGINE_INPUT") then dummy="" do while (LEN_TRIM(dummy)<1) read(parse_unit,fmt='(A512)',END=10) dummy enddo do while (trim(dummy)/="BEGIN_POSITIONS") if(myrank==root) write(unit_tmp_i,'(A)') trim(dummy) read(parse_unit,'(A512)') dummy enddo if(i==1) then do while (trim(dummy)/="FIRST_IMAGE") read(parse_unit,'(A512)') dummy enddo if(trim(dummy)=="FIRST_IMAGE") then read(parse_unit,'(A512)') dummy do while (trim(dummy)/="INTERMEDIATE_IMAGE".and.(trim(dummy)/="LAST_IMAGE")) if(myrank==root) write(unit_tmp_i,'(A)') trim(dummy) read(parse_unit,'(A512)') dummy enddo do while (trim(dummy)/="END_POSITIONS") read(parse_unit,'(A512)') dummy enddo read(parse_unit,'(A512)') dummy do while (trim(dummy)/="END_ENGINE_INPUT") if(myrank==root) write(unit_tmp_i,'(A)') trim(dummy) read(parse_unit,'(A512)') dummy enddo endif endif ! if(i==nimage) then do while (trim(dummy)/="LAST_IMAGE") read(parse_unit,'(A512)') dummy enddo if(trim(dummy)=="LAST_IMAGE") then read(parse_unit,'(A512)') dummy do while (trim(dummy)/="END_POSITIONS") if(myrank==root) write(unit_tmp_i,'(A)') trim(dummy) read(parse_unit,'(A512)') dummy enddo read(parse_unit,'(A512)') dummy do while (trim(dummy)/="END_ENGINE_INPUT") if(myrank==root) write(unit_tmp_i,'(A)') trim(dummy) read(parse_unit,'(A512)') dummy enddo endif endif ! if(i/=nimage.and.i/=1) then do j=2,i dummy="" do while (trim(dummy)/="INTERMEDIATE_IMAGE") read(parse_unit,'(A512)') dummy write(0,*) i,j,trim(dummy) enddo enddo if(trim(dummy)=="INTERMEDIATE_IMAGE") then read(parse_unit,'(A512)') dummy do while ((trim(dummy)/="LAST_IMAGE").and.trim(dummy)/="INTERMEDIATE_IMAGE") if(myrank==root) write(unit_tmp_i,'(A)') trim(dummy) read(parse_unit,'(A512)') dummy enddo do while (trim(dummy)/="END_POSITIONS") read(parse_unit,'(A512)') dummy enddo read(parse_unit,'(A512)') dummy do while (trim(dummy)/="END_ENGINE_INPUT") if(myrank==root) write(unit_tmp_i,'(A)') trim(dummy) read(parse_unit,'(A512)') dummy enddo endif endif ! endif enddo endif close(unit_tmp_i) enddo deallocate(unit_tmp) close(parse_unit) ! 10 CONTINUE ! end subroutine path_gen_inputs NEB/src/path_io_units_module.f900000644000700200004540000000471712053145633016015 0ustar marsamoscm! ! Copyright (C) 2010 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! !---------------------------------------------------------------------------- MODULE path_io_units_module !---------------------------------------------------------------------------- ! ! ... this module contains the I/O units and files used by "path"-routines ! IMPLICIT NONE ! ! SAVE ! INTEGER :: iunpath = 6 INTEGER :: stdinpath = 5 CHARACTER (LEN=256) :: & dat_file = 'os.dat', &! file containing the enegy profile int_file = 'os.int', &! file containing the interpolated energy profile crd_file = 'os.crd', &! file containing path coordinates in pw.x input format path_file = 'os.path', &! file containing information needed to restart a path simulation xyz_file = 'os.xyz', &! file containing coordinates of all images in xyz format axsf_file = 'os.axsf', &! file containing coordinates of all images in axsf format broy_file = 'os.broyden' ! file containing broyden's history ! INTEGER :: iunrestart = 2021 ! unit for saving the restart file ( neb_file ) INTEGER :: iundat = 2022 ! unit for saving the enegy profile INTEGER :: iunint = 2023 ! unit for saving the interpolated energy profile INTEGER :: iunxyz = 2024 ! unit for saving coordinates ( xyz format ) INTEGER :: iunaxsf = 2025 ! unit for saving coordinates ( axsf format ) INTEGER :: iunbroy = 2026 ! unit for saving broyden's history INTEGER :: iuncrd = 2027 ! unit for saving coordinates in pw.x input format INTEGER :: iunnewimage = 28 ! unit for parallelization among images ! INTEGER, EXTERNAL :: find_free_unit ! CONTAINS ! SUBROUTINE set_io_units() ! IMPLICIT NONE ! iunrestart = find_free_unit() iundat = find_free_unit() iunint = find_free_unit() iunxyz = find_free_unit() iunaxsf = find_free_unit() iunbroy = find_free_unit() iuncrd = find_free_unit() iunnewimage = find_free_unit() ! END SUBROUTINE set_io_units ! SUBROUTINE set_output_unit() ! IMPLICIT NONE ! iunpath = find_free_unit() ! END SUBROUTINE set_output_unit ! SUBROUTINE set_input_unit() ! IMPLICIT NONE ! stdinpath = find_free_unit() ! END SUBROUTINE set_input_unit ! END MODULE path_io_units_module NEB/src/path_io_tools.f900000644000700200004540000000661112053145633014441 0ustar marsamoscm ! Copyright (C) 2010 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! ! !---------------------------------------------------------------------------- SUBROUTINE input_file_name_getarg(myname,lfound) !----------------------------------------------------------------------------- ! ! check for presence of command-line option "-inp myname" or "--inp myname" ! where "myname" is the name of the input file. Returns the name and if it ! has been found. ! USE kinds, ONLY : DP ! USE io_global, ONLY : stdout ! IMPLICIT NONE ! CHARACTER(len=256), intent(out) :: myname LOGICAL, intent(out) :: lfound ! INTEGER :: iiarg, nargs, iargc, i, i0 ! ! #if defined(__ABSOFT) # define getarg getarg_ # define iargc iargc_ #endif ! nargs = iargc() lfound = .false. ! DO iiarg = 1, nargs CALL getarg( iiarg, myname) ! IF ( TRIM( myname ) == '-input' .OR. & TRIM( myname ) == '-inp' .OR. & TRIM( myname ) == '-in' ) THEN ! CALL getarg( ( iiarg + 1 ) , myname ) ! lfound = .true. RETURN ! END IF ! ENDDO ! RETURN ! END SUBROUTINE input_file_name_getarg ! SUBROUTINE input_images_getarg(input_images,lfound) !----------------------------------------------------------------------------- ! ! check for presence of command-line option "-inp myname" or "--inp myname" ! where "myname" is the name of the input file. Returns the name and if it ! has been found. ! USE kinds, ONLY : DP ! USE io_global, ONLY : stdout ! IMPLICIT NONE ! INTEGER, intent(out) :: input_images LOGICAL, intent(out) :: lfound ! CHARACTER(len=256) :: myname INTEGER :: iiarg, nargs, iargc, i, i0 ! ! #if defined(__ABSOFT) # define getarg getarg_ # define iargc iargc_ #endif ! nargs = iargc() lfound = .false. input_images = 0 ! DO iiarg = 1, nargs CALL getarg( iiarg, myname) ! IF ( TRIM( myname ) == '-input_images' .OR. & TRIM( myname ) == '--input_images' ) THEN ! CALL getarg( ( iiarg + 1 ) , myname ) ! READ(myname,*) input_images ! lfound = .true. RETURN ! END IF ! ENDDO ! RETURN ! END SUBROUTINE input_images_getarg !---------------------------------------------------------------------------- SUBROUTINE close_io_units(myunit) !----------------------------------------------------------------------------- ! IMPLICIT NONE ! INTEGER, intent(in) :: myunit ! LOGICAL :: opnd ! INQUIRE( UNIT = myunit, OPENED = opnd ) IF ( opnd ) CLOSE( UNIT = myunit ) ! END SUBROUTINE close_io_units ! !---------------------------------------------------------------------------- SUBROUTINE open_io_units(myunit,file_name,lappend) !----------------------------------------------------------------------------- ! IMPLICIT NONE ! INTEGER, intent(in) :: myunit CHARACTER(LEN=256), intent(in) :: file_name LOGICAL, intent(in) :: lappend ! LOGICAL :: opnd ! INQUIRE( UNIT = myunit, OPENED = opnd ) IF ( opnd ) CLOSE( UNIT = myunit ) OPEN( UNIT = myunit, FILE = TRIM(file_name), & STATUS = 'UNKNOWN', POSITION = 'APPEND' ) ! END SUBROUTINE open_io_units NEB/src/path_base.f900000644000700200004540000010025312053145633013521 0ustar marsamoscm! ! Copyright (C) 2003-2007 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! ! !--------------------------------------------------------------------------- MODULE path_base !--------------------------------------------------------------------------- ! ! ... This module contains most of the subroutines and functions needed by ! ... the implementation of "NEB" and "SMD" methods into Quantum ESPRESSO ! ! ... Other relevant files are: ! ! ... path_variables.f90 ! ... path_io_routines.f90 ! ... path_opt_routines.f90 ! ... path_reparametrisation.f90 ! ... path_formats.f90 ! ... compute_scf.f90 ! ! ... The code is based on the NEB algorithm described in : ! ! ... 1) G. Henkelman, B.P. Uberuaga, and H. Jonsson; ! ... J.Chem.Phys., 113, 9901, (2000) ! ... 2) G. Henkelman, and H. Jonsson; J.Chem.Phys., 113, 9978, (2000) ! ! ... More details about the implementation can be found at ! ! ... http://www.sissa.it/cm/thesis/2005/sbraccia.pdf ! ! ... Code written and maintained by Carlo Sbraccia ( 2003-2007 ) ! USE kinds, ONLY : DP USE constants, ONLY : eps32, pi, autoev, bohr_radius_angs, eV_to_kelvin USE path_io_units_module, ONLY : iunpath USE io_global, ONLY : meta_ionode, meta_ionode_id USE mp, ONLY : mp_bcast ! USE basic_algebra_routines ! PRIVATE ! PUBLIC :: initialize_path PUBLIC :: search_mep ! CONTAINS ! ! ... module procedures ! !----------------------------------------------------------------------- SUBROUTINE initialize_path() !----------------------------------------------------------------------- ! USE path_input_parameters_module, ONLY : pos_ => pos, & climbing_ => climbing, & input_images, nstep_path_ => nstep_path USE path_input_parameters_module, ONLY : restart_mode USE path_variables, ONLY : fix_atom_pos USE path_input_parameters_module, ONLY : nat USE control_flags, ONLY : conv_elec USE ions_base, ONLY : amass, ityp USE io_files, ONLY : prefix, tmp_dir USE path_io_units_module, ONLY : path_file, dat_file, crd_file, & int_file, xyz_file, axsf_file, broy_file USE path_variables, ONLY : climbing, pos, istep_path, nstep_path, & dim1, num_of_images, pes, grad_pes, mass, & use_masses, tangent, error, path_length, & deg_of_freedom, frozen, use_freezing, k, & k_min, tune_load_balance, grad, posold, & elastic_grad, pending_image, first_last_opt USE mp_image_global_module, ONLY : nimage USE path_io_routines, ONLY : read_restart USE path_variables, ONLY : path_allocation ! IMPLICIT NONE ! INTEGER :: i, fii, lii LOGICAL :: file_exists ! ! ... output files are set ! path_file = TRIM( prefix ) // ".path" dat_file = TRIM( prefix ) // ".dat" int_file = TRIM( prefix ) // ".int" crd_file = TRIM( prefix ) // ".crd" xyz_file = TRIM( prefix ) // ".xyz" axsf_file = TRIM( prefix ) // ".axsf" ! broy_file = TRIM( tmp_dir ) // TRIM( prefix ) // ".broyden" ! ! ... istep is initialised to zero ! istep_path = 0 pending_image = 0 conv_elec = .TRUE. ! ! ... the dimension of all "path" arrays (dim1) is set here ! ... ( it corresponds to the dimension of the configurational space ) ! ! dim1 = 3*nat ! ! IF ( nimage > 1 ) THEN ! ! ... the automatic tuning of the load balance in ! ... image-parallelisation is switched off by default ! tune_load_balance = .FALSE. ! ! ... in the case of image-parallelisation the number of images ! ... to be optimised must be larger than nimage ! IF ( first_last_opt ) THEN ! fii = 1 lii = num_of_images ! ELSE ! fii = 2 lii = num_of_images - 1 ! END IF ! IF ( nimage > ( lii - fii + 1 ) ) & CALL errore( 'initialize_path', 'nimage is ' // & & 'larger than the available number of images', 1 ) ! END IF ! ! ... dynamical allocation of arrays ! CALL path_allocation() ! IF ( use_masses ) THEN ! ! ... mass weighted coordinates are used ! DO i = 1, nat ! mass(3*i-2) = amass(ityp(i)) mass(3*i-1) = amass(ityp(i)) mass(3*i-0) = amass(ityp(i)) ! END DO ! ELSE ! mass = 1.0_DP ! END IF ! ! ... initialization of the allocatable arrays ! pos(:,1:input_images) = pos_(1:dim1,1:input_images) ! pes = 0.0_DP grad_pes = 0.0_DP elastic_grad = 0.0_DP tangent = 0.0_DP grad = 0.0_DP error = 0.0_DP frozen = .FALSE. ! k = k_min ! IF ( ALLOCATED( climbing_ ) ) THEN ! climbing = climbing_ ! ELSE ! climbing = .FALSE. ! END IF ! ! ... initial path is read from file ( restart_mode == "restart" ) or ! ... generated from the input images ( restart_mode = "from_scratch" ) ! ... It is always read from file in the case of "free-energy" ! ... calculations ! IF ( restart_mode == "restart" ) THEN ! IF ( meta_ionode ) THEN ! INQUIRE( FILE = path_file, EXIST = file_exists ) ! IF ( .NOT. file_exists ) THEN ! WRITE( iunpath, & & '(/,5X,"restart file ''",A,"'' not found: ", & & /,5X,"starting from scratch")' ) TRIM( path_file ) ! restart_mode = "from_scratch" ! END IF ! END IF ! CALL mp_bcast( restart_mode, meta_ionode_id ) ! END IF ! IF ( restart_mode == "restart" ) THEN ! CALL read_restart() ! ! ... consistency between the input value of nstep and the value ! ... of nstep_path read from the restart_file is checked ! IF ( nstep_path_ == 0 ) THEN ! istep_path = 0 nstep_path = nstep_path_ ! END IF ! IF ( nstep_path_ > nstep_path ) nstep_path = nstep_path_ ! ! ... in case first_last_opt has been set to true, reset the frozen ! ... array to false (all the images have to be optimized, at least ! ... on the first iteration) ! IF ( first_last_opt ) frozen = .FALSE. ! ! ... path length is computed here ! path_length = 0.0_DP ! DO i = 1, ( num_of_images - 1 ) ! path_length = path_length + norm( pos(:,i+1) - pos(:,i) ) ! END DO ! ELSE ! CALL initial_guess() ! posold(:,:) = pos(:,:) ! END IF ! ! ... the actual number of degrees of freedom is computed ! deg_of_freedom = 0 ! DO i = 1, nat ! IF ( fix_atom_pos(1,i) == 1 ) deg_of_freedom = deg_of_freedom + 1 IF ( fix_atom_pos(2,i) == 1 ) deg_of_freedom = deg_of_freedom + 1 IF ( fix_atom_pos(3,i) == 1 ) deg_of_freedom = deg_of_freedom + 1 ! END DO ! RETURN ! END SUBROUTINE initialize_path ! !-------------------------------------------------------------------- SUBROUTINE initial_guess() !-------------------------------------------------------------------- ! ! ... linear interpolation ! USE path_input_parameters_module, ONLY : input_images USE path_variables, ONLY : pos, dim1, num_of_images, path_length ! USE path_formats, ONLY : summary_fmt USE path_io_units_module, ONLY : iunpath ! IMPLICIT NONE ! REAL(DP) :: s INTEGER :: i, j ! REAL(DP), ALLOCATABLE :: pos_n(:,:), dr(:,:), image_spacing(:) ! ! IF ( meta_ionode ) THEN ! ALLOCATE( pos_n( dim1, num_of_images ) ) ALLOCATE( dr( dim1, input_images - 1 ) ) ALLOCATE( image_spacing( input_images - 1 ) ) ! DO i = 1, input_images - 1 ! dr(:,i) = ( pos(:,i+1) - pos(:,i) ) ! image_spacing(i) = norm( dr(:,i) ) ! END DO ! path_length = SUM( image_spacing(:) ) ! DO i = 1, input_images - 1 ! dr(:,i) = dr(:,i) / image_spacing(i) ! END DO ! pos_n(:,1) = pos(:,1) ! i = 1 s = 0.0_DP ! DO j = 2, num_of_images - 1 ! s = s + path_length / DBLE( num_of_images - 1 ) ! IF ( s > image_spacing(i) ) THEN ! s = s - image_spacing(i) ! i = i + 1 ! END IF ! IF ( i >= input_images ) & CALL errore( 'initialize_path', 'i >= input_images', i ) ! pos_n(:,j) = pos(:,i) + s * dr(:,i) ! END DO ! pos_n(:,num_of_images) = pos(:,input_images) ! pos(:,:) = pos_n(:,:) ! path_length = 0.0_DP ! DO i = 1, num_of_images - 1 ! path_length = path_length + norm( pos(:,i+1) - pos(:,i) ) ! END DO ! WRITE( UNIT = iunpath, & FMT = '(/,5X,"initial path length",& & T35," = ",F7.4," bohr")' ) path_length ! WRITE( UNIT = iunpath, & FMT = '(5X,"initial inter-image distance",T35," = ",F7.4, & &" bohr")' ) path_length / DBLE( num_of_images - 1 ) ! DEALLOCATE( image_spacing, dr, pos_n ) ! END IF ! CALL mp_bcast( pos, meta_ionode_id ) CALL mp_bcast( path_length, meta_ionode_id ) ! RETURN ! END SUBROUTINE initial_guess ! !----------------------------------------------------------------------- FUNCTION real_space_tangent( i ) RESULT( rtan ) !----------------------------------------------------------------------- ! ! ... improved definition of the tangent (see JCP 113, 9978) ! USE path_variables, ONLY : dim1, pos, num_of_images, pes ! IMPLICIT NONE ! INTEGER, INTENT(IN) :: i REAL(DP) :: rtan( dim1 ) ! REAL(DP) :: V_previous, V_actual, V_next REAL(DP) :: abs_next, abs_previous REAL(DP) :: delta_V_max, delta_V_min ! ! IF ( i == 1 ) THEN ! rtan(:) = pos(:,i+1) - pos(:,i) ! RETURN ! ELSE IF ( i == num_of_images ) THEN ! rtan(:) = pos(:,i) - pos(:,i-1) ! RETURN ! END IF ! V_previous = pes( i - 1 ) V_actual = pes( i ) V_next = pes( i + 1 ) ! IF ( ( V_next > V_actual ) .AND. ( V_actual > V_previous ) ) THEN ! rtan(:) = pos(:,i+1) - pos(:,i) ! ELSE IF ( ( V_next < V_actual ) .AND. ( V_actual < V_previous ) ) THEN ! rtan(:) = pos(:,i) - pos(:,i-1) ! ELSE ! abs_next = ABS( V_next - V_actual ) abs_previous = ABS( V_previous - V_actual ) ! delta_V_max = MAX( abs_next, abs_previous ) delta_V_min = MIN( abs_next, abs_previous ) ! IF ( V_next > V_previous ) THEN ! rtan(:) = ( pos(:,i+1) - pos(:,i) ) * delta_V_max + & ( pos(:,i) - pos(:,i-1) ) * delta_V_min ! ELSE IF ( V_next < V_previous ) THEN ! rtan(:) = ( pos(:,i+1) - pos(:,i) ) * delta_V_min + & ( pos(:,i) - pos(:,i-1) ) * delta_V_max ! ELSE ! rtan(:) = pos(:,i+1) - pos(:,i-1) ! END IF ! END IF ! rtan(:) = rtan(:) / norm( rtan(:) ) ! RETURN ! END FUNCTION real_space_tangent ! !------------------------------------------------------------------------ SUBROUTINE elastic_constants() !------------------------------------------------------------------------ ! USE path_variables, ONLY : num_of_images, Emax, Emin, & k_max, k_min, k, pes ! IMPLICIT NONE ! INTEGER :: i REAL(DP) :: delta_E REAL(DP) :: k_sum, k_diff ! ! ! ... standard neb ( with springs ) ! k_sum = k_max + k_min k_diff = k_max - k_min ! k(:) = k_min ! delta_E = Emax - Emin ! IF ( delta_E > eps32 ) THEN ! DO i = 1, num_of_images ! k(i) = 0.5_DP*( k_sum - k_diff * & COS( pi * ( pes(i) - Emin ) / delta_E ) ) ! END DO ! END IF ! k(:) = 0.5_DP*k(:) ! RETURN ! END SUBROUTINE elastic_constants ! !------------------------------------------------------------------------ SUBROUTINE neb_gradient() !------------------------------------------------------------------------ ! USE path_variables, ONLY : pos, grad, elastic_grad, grad_pes, k, & num_of_images, climbing, mass, tangent ! IMPLICIT NONE ! INTEGER :: i ! ! IF ( meta_ionode ) THEN ! CALL elastic_constants() ! gradient_loop: DO i = 1, num_of_images ! IF ( i > 1 .AND. i < num_of_images ) THEN ! ! ... elastic gradient only along the path ( variable elastic ! ... consatnt is used ) NEB recipe ! elastic_grad = tangent(:,i) * 0.5_DP * & ( ( k(i) + k(i-1) ) * norm( pos(:,i) - pos(:,(i-1)) ) - & ( k(i) + k(i+1) ) * norm( pos(:,(i+1)) - pos(:,i) ) ) ! END IF ! ! ... total gradient on each image ( climbing image is used if ! ... required ) only the component of the pes gradient orthogonal ! ... to the path is used ! grad(:,i) = grad_pes(:,i) / SQRT( mass(:) ) ! IF ( climbing(i) ) THEN ! grad(:,i) = grad(:,i) - & 2.0_DP*tangent(:,i)*( grad(:,i) .dot. tangent(:,i) ) ! ELSE IF ( i > 1 .AND. i < num_of_images ) THEN ! grad(:,i) = elastic_grad + grad(:,i) - & tangent(:,i)*( grad(:,i) .dot. tangent(:,i) ) ! END IF ! END DO gradient_loop ! END IF ! CALL mp_bcast( grad, meta_ionode_id ) ! RETURN ! END SUBROUTINE neb_gradient ! !----------------------------------------------------------------------- SUBROUTINE smd_gradient() !----------------------------------------------------------------------- ! USE ions_base, ONLY : if_pos USE path_variables, ONLY : dim1, mass, num_of_images, grad_pes, & tangent, llangevin, lang, grad, ds, & temp_req USE path_variables, ONLY : climbing USE random_numbers, ONLY : gauss_dist ! IMPLICIT NONE ! INTEGER :: i ! ! IF ( meta_ionode ) THEN ! grad(:,:) = 0.0_DP lang(:,:) = 0.0_DP ! ! ... we project pes gradients and gaussian noise ! DO i = 1, num_of_images ! IF ( llangevin ) THEN ! ! ... the random term used in langevin dynamics is generated here ! lang(:,i) = gauss_dist( 0.0_DP, SQRT( 2.0_DP*temp_req*ds ), dim1 ) ! lang(:,i) = lang(:,i)*DBLE( RESHAPE( if_pos, (/ dim1 /) ) ) ! END IF ! grad(:,i) = grad_pes(:,i) / SQRT( mass(:) ) ! IF ( climbing(i) ) THEN ! grad(:,i) = grad(:,i) - & 2.0_DP*tangent(:,i)*( grad(:,i) .dot. tangent(:,i) ) ! ELSE IF ( i > 1 .AND. i < num_of_images ) THEN ! ! ... projection of the pes gradients ! grad(:,i) = grad(:,i) - & tangent(:,i)*( grad(:,i) .dot. tangent(:,i) ) ! IF ( llangevin ) THEN ! lang(:,i) = lang(:,i) - & tangent(:,i)*( lang(:,i) .dot. tangent(:,i) ) ! END IF ! END IF ! END DO ! END IF ! CALL mp_bcast( grad, meta_ionode_id ) CALL mp_bcast( lang, meta_ionode_id ) ! RETURN ! END SUBROUTINE smd_gradient ! ! ... shared routines ! !----------------------------------------------------------------------- FUNCTION new_tangent() RESULT( ntan ) !----------------------------------------------------------------------- ! USE path_variables, ONLY : dim1, num_of_images ! IMPLICIT NONE ! REAL(DP) :: ntan( dim1, num_of_images ) ! INTEGER :: i ! ! IF ( meta_ionode ) THEN ! DO i = 1, num_of_images ! ntan(:,i) = real_space_tangent( i ) ! END DO ! END IF ! CALL mp_bcast( ntan, meta_ionode_id ) ! RETURN ! END FUNCTION new_tangent ! !----------------------------------------------------------------------- SUBROUTINE compute_error( err_out ) !----------------------------------------------------------------------- ! USE path_variables, ONLY : pos, posold, num_of_images, grad, & use_freezing, first_last_opt, path_thr, & error, frozen, lquick_min USE mp_image_global_module, ONLY : nimage ! IMPLICIT NONE ! REAL(DP), OPTIONAL, INTENT(OUT) :: err_out ! INTEGER :: i INTEGER :: fii, lii, freed, num_of_scf_images REAL(DP) :: err_max LOGICAL :: first ! ! IF ( first_last_opt ) THEN ! fii = 1 lii = num_of_images ! frozen = .FALSE. ! ELSE ! fii = 2 lii = num_of_images - 1 ! frozen = .FALSE. ! ! ... the first and the last images are always frozen ! frozen(fii-1) = .TRUE. frozen(lii+1) = .TRUE. ! END IF ! IF ( meta_ionode ) THEN ! DO i = 1, num_of_images ! ! ... the error is given by the largest component of the gradient ! ... vector ( PES + SPRINGS in the neb case ) ! error(i) = MAXVAL( ABS( grad(:,i) ) ) / bohr_radius_angs * autoev ! END DO ! err_max = MAXVAL( error(fii:lii), 1 ) ! IF ( use_freezing ) THEN ! frozen(fii:lii) = ( error(fii:lii) < & MAX( 0.5_DP*err_max, path_thr ) ) ! END IF ! IF ( nimage > 1 .AND. use_freezing ) THEN ! find_scf_images: DO ! num_of_scf_images = COUNT( .NOT.frozen(fii:lii) ) ! IF ( num_of_scf_images >= nimage ) EXIT find_scf_images ! first = .TRUE. ! search: DO i = fii, lii ! IF ( .NOT.frozen(i) ) CYCLE search ! IF ( first ) THEN ! first = .FALSE. freed = i ! CYCLE search ! END IF ! IF ( error(i) > error(freed) ) freed = i ! END DO search ! frozen(freed) = .FALSE. ! END DO find_scf_images ! END IF ! IF ( use_freezing .AND. lquick_min ) THEN ! ! ... the old positions of the frozen images are set to the ! ... present position (equivalent to resetting the velocity) ! FORALL( i = fii:lii, frozen(i) ) posold(:,i) = pos(:,i) ! END IF ! END IF ! CALL mp_bcast( error, meta_ionode_id ) CALL mp_bcast( err_max, meta_ionode_id ) CALL mp_bcast( frozen, meta_ionode_id ) CALL mp_bcast( posold, meta_ionode_id ) ! IF ( PRESENT( err_out ) ) err_out = err_max ! RETURN ! END SUBROUTINE compute_error ! !------------------------------------------------------------------------ SUBROUTINE born_oppenheimer_pes( stat ) !------------------------------------------------------------------------ ! USE path_variables, ONLY : nim => num_of_images, & pending_image, istep_path, pes, & first_last_opt, Emin, Emax, Emax_index ! IMPLICIT NONE ! LOGICAL, INTENT(OUT) :: stat ! INTEGER :: fii, lii ! ! IF ( istep_path == 0 .OR. first_last_opt ) THEN ! fii = 1 lii = nim ! ELSE ! fii = 2 lii = nim - 1 ! END IF ! IF ( pending_image /= 0 ) fii = pending_image ! CALL compute_scf( fii, lii, stat ) ! IF ( .NOT. stat ) RETURN ! Emin = MINVAL( pes(1:nim) ) Emax = MAXVAL( pes(1:nim) ) Emax_index = MAXLOC( pes(1:nim), 1 ) ! RETURN ! END SUBROUTINE born_oppenheimer_pes ! !------------------------------------------------------------------------ SUBROUTINE fe_profile() !------------------------------------------------------------------------ ! USE path_variables, ONLY : nim => num_of_images USE path_variables, ONLY : pos, pes, grad_pes, & Emin, Emax, Emax_index ! IMPLICIT NONE ! INTEGER :: i ! ! pes(:) = 0.0_DP ! DO i = 2, nim ! pes(i) = pes(i-1) + 0.5_DP*( ( pos(:,i) - pos(:,i-1) ) .dot. & ( grad_pes(:,i) + grad_pes(:,i-1) ) ) ! END DO ! Emin = MINVAL( pes(1:nim) ) Emax = MAXVAL( pes(1:nim) ) Emax_index = MAXLOC( pes(1:nim), 1 ) ! RETURN ! END SUBROUTINE fe_profile ! !----------------------------------------------------------------------- SUBROUTINE search_mep() !----------------------------------------------------------------------- ! USE path_variables, ONLY : lneb, lsmd USE path_variables, ONLY : conv_path, istep_path, nstep_path, & pending_image, activation_energy, & err_max, pes, climbing, CI_scheme, & Emax_index, fixed_tan, tangent USE path_io_routines, ONLY : write_restart, write_dat_files, write_output USE path_formats, ONLY : scf_iter_fmt ! USE path_reparametrisation ! IMPLICIT NONE ! LOGICAL :: stat ! REAL(DP), EXTERNAL :: get_clock ! ! conv_path = .FALSE. ! CALL search_mep_init() ! IF ( istep_path == nstep_path ) THEN ! CALL write_dat_files() ! CALL write_output() ! pending_image = 0 ! CALL write_restart() ! RETURN ! END IF ! ! ... path optimisation loop ! optimisation: DO ! ! ... new positions are saved on file: it has to be done here ! ... because, in the event of an unexpected crash the new positions ! ... would be lost. At this stage the forces and the energies are ! ... not yet known (but are not necessary for restarting); the ! ... restart file is written again as soon as the energies and ! ... forces have been computed. ! CALL write_restart() ! IF ( meta_ionode ) & WRITE( UNIT = iunpath, FMT = scf_iter_fmt ) istep_path + 1 ! ! ... energies and gradients acting on each image of the path (in real ! ... space) are computed calling a driver for the scf calculations ! ! CALL born_oppenheimer_pes( stat ) ! ! IF ( .NOT. stat ) THEN ! conv_path = .FALSE. ! EXIT optimisation ! END IF ! ! ... istep_path is updated after a self-consistency step has been ! ... completed ! istep_path = istep_path + 1 ! ! ... the new tangent is computed here : ! ... the improved definition of tangent requires the energies ! IF ( .NOT. fixed_tan ) tangent(:,:) = new_tangent() ! IF ( CI_scheme == "auto" ) THEN ! climbing = .FALSE. ! climbing(Emax_index) = .TRUE. ! END IF ! IF ( lneb ) CALL neb_gradient() IF ( lsmd ) CALL smd_gradient() ! ! ... the forward activation energy is computed here ! activation_energy = ( pes(Emax_index) - pes(1) )*autoev ! ! ... the error is computed here (frozen images are also set here) ! CALL compute_error( err_max ) ! ! ... information is written on the files ! CALL write_dat_files() ! ! ... information is written on the standard output ! CALL write_output() ! ! ... the restart file is written ! CALL write_restart() ! ! ... exit conditions ! IF ( check_exit( err_max ) ) EXIT optimisation ! ! ... if convergence is not yet achieved, the path is optimised ! CALL optimisation_step() ! IF ( lsmd ) CALL reparametrise() ! END DO optimisation ! ! ... the restart file is written before the exit ! CALL write_restart() ! RETURN ! END SUBROUTINE search_mep ! !------------------------------------------------------------------------ SUBROUTINE search_mep_init() !------------------------------------------------------------------------ ! USE path_variables, ONLY : lsmd USE path_variables, ONLY : pending_image, tangent ! USE path_reparametrisation ! IMPLICIT NONE ! ! IF ( pending_image /= 0 ) RETURN ! IF ( lsmd ) CALL reparametrise() ! tangent(:,:) = new_tangent() ! RETURN ! END SUBROUTINE search_mep_init ! !------------------------------------------------------------------------ FUNCTION check_exit( err_max ) !------------------------------------------------------------------------ ! USE path_input_parameters_module, ONLY : num_of_images_inp => num_of_images USE path_variables, ONLY : lneb, lsmd USE path_variables, ONLY : path_thr, istep_path, nstep_path, & conv_path, pending_image, & num_of_images, llangevin USE path_formats, ONLY : final_fmt ! IMPLICIT NONE ! LOGICAL :: check_exit REAL(DP), INTENT(IN) :: err_max LOGICAL :: exit_condition ! ! check_exit = .FALSE. ! ! ... the program checks if the convergence has been achieved ! exit_condition = ( .NOT.llangevin .AND. & ( num_of_images == num_of_images_inp ) .AND. & ( err_max <= path_thr ) ) ! IF ( exit_condition ) THEN ! IF ( meta_ionode ) THEN ! WRITE( UNIT = iunpath, FMT = final_fmt ) ! IF ( lneb ) & WRITE( UNIT = iunpath, & FMT = '(/,5X,"neb: convergence achieved in ",I3, & & " iterations" )' ) istep_path IF ( lsmd ) & WRITE( UNIT = iunpath, & FMT = '(/,5X,"smd: convergence achieved in ",I3, & & " iterations" )' ) istep_path ! END IF ! pending_image = 0 ! conv_path = .TRUE. check_exit = .TRUE. ! RETURN ! END IF ! ! ... the program checks if the maximum number of iterations has ! ... been reached ! IF ( istep_path >= nstep_path ) THEN ! IF ( meta_ionode ) THEN ! WRITE( UNIT = iunpath, FMT = final_fmt ) ! IF ( lneb ) & WRITE( UNIT = iunpath, & FMT = '(/,5X,"neb: reached the maximum number of ", & & "steps")' ) IF ( lsmd ) & WRITE( UNIT = iunpath, & FMT = '(/,5X,"smd: reached the maximum number of ", & & "steps")' ) ! END IF ! pending_image = 0 ! check_exit = .TRUE. ! RETURN ! END IF ! RETURN ! END FUNCTION check_exit ! !------------------------------------------------------------------------ SUBROUTINE optimisation_step() !------------------------------------------------------------------------ ! USE path_variables, ONLY : num_of_images, frozen, lsteep_des, & lquick_min, lbroyden, lbroyden2, & llangevin, istep_path USE path_opt_routines, ONLY : quick_min, broyden, broyden2, & steepest_descent, langevin ! IMPLICIT NONE ! INTEGER :: image ! ! IF ( lbroyden ) THEN ! CALL broyden() ! ELSE IF (lbroyden2 ) THEN ! CALL broyden2() ! ELSE ! DO image = 1, num_of_images ! IF ( frozen(image) ) CYCLE ! IF ( lsteep_des ) THEN ! CALL steepest_descent( image ) ! ELSE IF ( llangevin ) THEN ! CALL langevin( image ) ! ELSE IF ( lquick_min ) THEN ! CALL quick_min( image, istep_path ) ! END IF ! END DO ! END IF ! RETURN ! END SUBROUTINE optimisation_step ! END MODULE path_base NEB/src/engine_to_path_fix_atom_pos.f900000644000700200004540000000151312053145633017324 0ustar marsamoscm! ! Copyright (C) 2011 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! ! !---------------------------------------------------------------------------- SUBROUTINE engine_to_path_fix_atom_pos() !----------------------------------------------------------------------------- ! ! USE kinds, ONLY : DP ! USE ions_base, ONLY : if_pos USE path_variables, ONLY : fix_atom_pos USE path_input_parameters_module, ONLY : nat ! ! ... "path" specific ! ! IMPLICIT NONE ! ! set_my_if_pos ! allocate(fix_atom_pos(3,nat)) fix_atom_pos(:,:) = 1 fix_atom_pos(:,:) = if_pos(:,:) ! RETURN ! END SUBROUTINE engine_to_path_fix_atom_pos ! NEB/src/path_io_routines.f900000644000700200004540000010100712053145633015144 0ustar marsamoscm! ! Copyright (C) 2002-2006 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! ! !---------------------------------------------------------------------------- MODULE path_io_routines !---------------------------------------------------------------------------- ! ! ... This module contains all subroutines used for I/O in path ! ... optimisations ! ! ... Written by Carlo Sbraccia ( 2003-2006 ) ! USE kinds, ONLY : DP USE constants, ONLY : pi, autoev, bohr_radius_angs, eV_to_kelvin USE io_global, ONLY : meta_ionode, meta_ionode_id USE mp, ONLY : mp_bcast ! USE basic_algebra_routines ! IMPLICIT NONE ! PRIVATE ! PUBLIC :: path_summary PUBLIC :: read_restart PUBLIC :: write_restart, write_dat_files, write_output PUBLIC :: new_image_init, get_new_image, stop_other_images ! CONTAINS ! !----------------------------------------------------------------------- SUBROUTINE path_summary() !----------------------------------------------------------------------- ! USE path_input_parameters_module, ONLY : string_method, opt_scheme USE path_input_parameters_module, ONLY : restart_mode USE path_variables, ONLY : lneb, lsmd USE path_variables, ONLY : climbing, nstep_path, num_of_images, & path_length, path_thr, ds, use_masses, & first_last_opt, temp_req, use_freezing, & k_min, k_max, CI_scheme, fixed_tan, & llangevin USE path_formats, ONLY : summary_fmt USE path_io_units_module, ONLY : iunpath ! IMPLICIT NONE ! INTEGER :: i REAL(DP) :: k_ratio CHARACTER(LEN=256) :: outline CHARACTER(LEN=20) :: nim_char, nstep_path_char ! CHARACTER(LEN=6), EXTERNAL :: int_to_char ! ! IF ( .NOT. meta_ionode ) RETURN ! ! ... details of the calculation are written on output ! nstep_path_char = int_to_char( nstep_path ) nim_char = int_to_char( num_of_images ) ! WRITE( iunpath, * ) WRITE( iunpath, summary_fmt ) "string_method", TRIM( string_method ) WRITE( iunpath, summary_fmt ) "restart_mode", TRIM( restart_mode ) WRITE( iunpath, summary_fmt ) "opt_scheme", TRIM( opt_scheme ) WRITE( iunpath, summary_fmt ) "num_of_images", TRIM( nim_char ) WRITE( iunpath, summary_fmt ) "nstep_path", TRIM( nstep_path_char ) WRITE( iunpath, summary_fmt ) "CI_scheme", TRIM( CI_scheme ) ! WRITE( UNIT = iunpath, & FMT = '(5X,"first_last_opt",T35," = ",L4)' ) first_last_opt ! ! WRITE( UNIT = iunpath, & FMT = '(5X,"use_freezing",T35," = ",L4)' ) use_freezing ! WRITE( UNIT = iunpath, & FMT = '(5X,"ds",T35," = ",F9.4," a.u.")' ) ds ! IF ( lneb ) THEN ! WRITE( UNIT = iunpath, & FMT = '(5X,"k_max",T35," = ",F9.4," a.u.")' ) k_max WRITE( UNIT = iunpath, & FMT = '(5X,"k_min",T35," = ",F9.4," a.u.")' ) k_min ! k_ratio = k_min / k_max ! WRITE( UNIT = iunpath, FMT = '(5X,"suggested k_max",T35, & & " = ",F9.4," a.u.")' ) ( pi / ds )**2 / 16.0_DP ! WRITE( UNIT = iunpath, FMT = '(5X,"suggested k_min",T35, & & " = ",F9.4," a.u.")' ) ( pi / ds )**2 / 16.0_DP * k_ratio ! END IF ! IF ( lsmd ) THEN ! WRITE( UNIT = iunpath, & FMT = '(5X,"fixed_tan",T35," = ",L4)' ) fixed_tan ! IF ( llangevin ) & WRITE( UNIT = iunpath, & FMT = '(5X,"required temperature",T35, & &" = ",F9.4," K")' ) temp_req * eV_to_kelvin*autoev ! END IF ! WRITE( UNIT = iunpath, & FMT = '(5X,"path_thr",T35," = ",F9.4," eV / A")' ) path_thr ! IF ( CI_scheme == "manual" ) THEN ! outline = ' ' ! DO i = 2, num_of_images ! IF ( climbing(i) ) outline = TRIM( outline ) // ' ' // & & TRIM( int_to_char( i ) ) // ',' ! END DO ! WRITE( UNIT = iunpath, & FMT = '(/,5X,"list of climbing images :",2X,A)' ) & TRIM( outline ) ! END IF ! RETURN ! END SUBROUTINE path_summary ! !----------------------------------------------------------------------- SUBROUTINE read_restart() !----------------------------------------------------------------------- ! USE path_variables, ONLY : lsmd USE path_io_units_module, ONLY : iunpath USE path_io_units_module, ONLY : iunrestart, path_file USE path_variables, ONLY : fix_atom_pos USE path_variables, ONLY : nim => num_of_images USE path_variables, ONLY : istep_path, nstep_path, frozen, dim1,& pending_image, pos, pes, grad_pes, & lquick_min, posold, Emax, Emin, & Emax_index USE path_reparametrisation, ONLY : spline_interpolation ! IMPLICIT NONE ! INTEGER :: i, j, ia, ierr INTEGER :: nim_inp CHARACTER(LEN=256) :: input_line LOGICAL :: exists LOGICAL, EXTERNAL :: matches ! ! IF ( meta_ionode ) THEN ! WRITE( UNIT = iunpath, & FMT = '(/,5X,"reading file ''",A,"''",/)') TRIM( path_file ) ! INQUIRE( FILE = TRIM( path_file ), EXIST = exists ) ! IF ( .NOT. exists ) & CALL errore( 'read_restart', 'restart file not found', 1 ) ! OPEN( UNIT = iunrestart, FILE = path_file, STATUS = "OLD", & ACTION = "READ" ) ! READ( UNIT = iunrestart, FMT = '(256A)' ) input_line ! IF ( matches( "RESTART INFORMATION", input_line ) ) THEN ! READ( UNIT = iunrestart, FMT = * ) istep_path READ( UNIT = iunrestart, FMT = * ) nstep_path READ( UNIT = iunrestart, FMT = * ) pending_image ! ELSE ! ! ... mandatory fields ! CALL errore( 'read_restart', 'RESTART INFORMATION missing', 1 ) ! END IF ! READ( UNIT = iunrestart, FMT = '(256A)' ) input_line ! IF ( matches( "NUMBER OF IMAGES", input_line ) ) THEN ! ! ... optional field ! READ( UNIT = iunrestart, FMT = * ) nim_inp ! IF ( nim_inp > nim ) & CALL errore( 'read_restart', & 'wrong number of images in the restart file', 1 ) ! READ( UNIT = iunrestart, FMT = '(256A)' ) input_line ! ELSE ! nim_inp = nim ! END IF ! IF ( .NOT. ( matches( "ENERGIES, POSITIONS AND GRADIENTS", & input_line ) ) ) THEN ! ! ... mandatory fields ! CALL errore( 'read_restart', & 'ENERGIES, POSITIONS AND GRADIENTS missing', 1 ) ! END IF ! ! READ( UNIT = iunrestart, FMT = * ) READ( UNIT = iunrestart, FMT = * ) pes(1) ! ia = 0 ! ! the default is not the same as in pw .... all atoms are fixed by default .... fix_atom_pos = 0 ! DO j = 1, dim1, 3 ! ia = ia + 1 ! READ( UNIT = iunrestart, FMT = * ) & pos(j+0,1), & pos(j+1,1), & pos(j+2,1), & grad_pes(j+0,1), & grad_pes(j+1,1), & grad_pes(j+2,1), & fix_atom_pos(1,ia), & fix_atom_pos(2,ia), & fix_atom_pos(3,ia) ! grad_pes(:,1) = grad_pes(:,1) * & DBLE( RESHAPE( fix_atom_pos, (/ dim1 /) ) ) ! END DO ! DO i = 2, nim_inp ! READ( UNIT = iunrestart, FMT = * ) READ( UNIT = iunrestart, FMT = * ) pes(i) ! DO j = 1, dim1, 3 ! READ( UNIT = iunrestart, FMT = * ) & pos(j+0,i), & pos(j+1,i), & pos(j+2,i), & grad_pes(j+0,i), & grad_pes(j+1,i), & grad_pes(j+2,i) ! END DO ! grad_pes(:,i) = grad_pes(:,i) * & DBLE( RESHAPE( fix_atom_pos, (/ dim1 /) ) ) ! END DO ! READ( UNIT = iunrestart, FMT = '(256A)', IOSTAT = ierr ) input_line ! IF ( ( ierr == 0 ) .AND. lquick_min ) THEN ! IF ( matches( "QUICK-MIN FIELDS", input_line ) ) THEN ! ! ... optional fields ! ! DO i = 1, nim_inp ! READ( UNIT = iunrestart, FMT = * ) READ( UNIT = iunrestart, FMT = * ) frozen(i) ! DO j = 1, dim1, 3 ! READ( UNIT = iunrestart, FMT = * ) & posold(j+0,i), & posold(j+1,i), & posold(j+2,i) ! END DO ! posold(:,i) = posold(:,i) * & DBLE( RESHAPE( fix_atom_pos, (/ dim1 /) ) ) ! END DO ! END IF ! END IF ! CLOSE( iunrestart ) ! IF ( nim_inp /= nim ) THEN ! ! ... the input path is reinterpolated to have the required ! ... number of images ! CALL spline_interpolation( pos, 1, nim, nim_inp ) CALL spline_interpolation( pes, 1, nim, nim_inp ) CALL spline_interpolation( grad_pes, 1, nim, nim_inp ) ! IF ( lquick_min ) THEN ! CALL spline_interpolation( posold, 1, nim, nim_inp ) ! frozen(:) = .FALSE. ! END IF ! END IF ! IF ( pending_image == 0 ) THEN ! Emin = MINVAL( pes(:) ) Emax = MAXVAL( pes(:) ) Emax_index = MAXLOC( pes(:), 1 ) ! END IF ! END IF ! ! ... broadcast to all nodes ! CALL mp_bcast( istep_path, meta_ionode_id ) CALL mp_bcast( nstep_path, meta_ionode_id ) CALL mp_bcast( pending_image, meta_ionode_id ) ! CALL mp_bcast( pos, meta_ionode_id ) CALL mp_bcast( fix_atom_pos, meta_ionode_id ) CALL mp_bcast( pes, meta_ionode_id ) CALL mp_bcast( grad_pes, meta_ionode_id ) ! CALL mp_bcast( Emax, meta_ionode_id ) CALL mp_bcast( Emin, meta_ionode_id ) CALL mp_bcast( Emax_index, meta_ionode_id ) ! IF ( lquick_min ) THEN ! CALL mp_bcast( frozen, meta_ionode_id ) CALL mp_bcast( posold, meta_ionode_id ) ! END IF ! RETURN ! END SUBROUTINE read_restart ! !----------------------------------------------------------------------- SUBROUTINE write_restart() !----------------------------------------------------------------------- ! USE path_variables, ONLY : fix_atom_pos USE path_io_units_module, ONLY : iunrestart, path_file USE io_files, ONLY : tmp_dir USE control_flags, ONLY : conv_elec USE path_variables, ONLY : istep_path, nstep_path, pending_image, & dim1, num_of_images, pos, pes, grad_pes, & posold, frozen, lquick_min USE path_formats, ONLY : energy, restart_first, restart_others, & quick_min ! IMPLICIT NONE ! INTEGER :: i, j, ia CHARACTER(LEN=256) :: file ! CHARACTER(LEN=6), EXTERNAL :: int_to_char ! IF ( meta_ionode ) THEN ! ! ... first the restart file is written in the working directory ! OPEN( UNIT = iunrestart, FILE = path_file, STATUS = "UNKNOWN", & ACTION = "WRITE" ) ! CALL write_common_fields( iunrestart ) ! IF ( lquick_min ) THEN ! CALL write_quick_min_fields( iunrestart ) ! END IF ! CLOSE( iunrestart ) ! ! ... then, if pending_image == 0, it is also written on the ! ... scratch direcoty (a backup copy at each iteration) ! IF ( pending_image == 0 ) THEN ! file = TRIM( tmp_dir ) // & TRIM( path_file ) // TRIM( int_to_char( istep_path ) ) ! OPEN( UNIT = iunrestart, FILE = TRIM( file ), & STATUS = "UNKNOWN", ACTION = "WRITE" ) ! CALL write_common_fields( iunrestart ) ! IF ( lquick_min ) THEN ! CALL write_quick_min_fields( iunrestart ) ! END IF ! CLOSE( iunrestart ) ! END IF ! END IF ! CONTAINS ! !------------------------------------------------------------------- SUBROUTINE write_common_fields( in_unit ) !------------------------------------------------------------------- ! IMPLICIT NONE ! INTEGER, INTENT(IN) :: in_unit ! ! WRITE( UNIT = in_unit, FMT = '("RESTART INFORMATION")' ) ! WRITE( UNIT = in_unit, FMT = '(I8)' ) istep_path WRITE( UNIT = in_unit, FMT = '(I8)' ) nstep_path WRITE( UNIT = in_unit, FMT = '(I8)' ) pending_image ! WRITE( UNIT = in_unit, FMT = '("NUMBER OF IMAGES")' ) ! WRITE( UNIT = in_unit, FMT = '(I4)' ) num_of_images ! WRITE( UNIT = in_unit, & FMT = '("ENERGIES, POSITIONS AND GRADIENTS")' ) ! DO i = 1, num_of_images ! WRITE( UNIT = in_unit, FMT = '("Image: ",I4)' ) i ! ! WRITE( UNIT = in_unit, FMT = energy ) pes(i) ! ia = 0 ! DO j = 1, dim1, 3 ! ia = ia + 1 ! IF ( i == 1 ) THEN ! WRITE( UNIT = in_unit, FMT = restart_first ) & pos(j+0,i), & pos(j+1,i), & pos(j+2,i), & grad_pes(j+0,i), & grad_pes(j+1,i), & grad_pes(j+2,i), & fix_atom_pos(1,ia), & fix_atom_pos(2,ia), & fix_atom_pos(3,ia) ! ELSE ! WRITE( UNIT = in_unit, FMT = restart_others ) & pos(j+0,i), & pos(j+1,i), & pos(j+2,i), & grad_pes(j+0,i), & grad_pes(j+1,i), & grad_pes(j+2,i) ! END IF ! END DO ! END DO ! RETURN ! END SUBROUTINE write_common_fields ! !------------------------------------------------------------------- SUBROUTINE write_quick_min_fields( in_unit ) !------------------------------------------------------------------- ! IMPLICIT NONE ! INTEGER, INTENT(IN) :: in_unit ! ! WRITE( UNIT = in_unit, FMT = '("QUICK-MIN FIELDS")' ) ! DO i = 1, num_of_images ! WRITE( UNIT = in_unit, FMT = '("Image: ",I4)' ) i WRITE( UNIT = in_unit, & FMT = '(2(L1,1X))' ) frozen(i) ! DO j = 1, dim1, 3 ! WRITE( UNIT = in_unit, FMT = quick_min ) & posold(j+0,i), & posold(j+1,i), & posold(j+2,i) ! END DO ! ! END DO ! RETURN ! END SUBROUTINE write_quick_min_fields ! END SUBROUTINE write_restart ! !----------------------------------------------------------------------- SUBROUTINE write_dat_files() !----------------------------------------------------------------------- ! USE constants, ONLY : pi USE cell_base, ONLY : alat, at, bg USE ions_base, ONLY : ityp, nat, atm, tau_format USE path_formats, ONLY : dat_fmt, int_fmt, xyz_fmt, axsf_fmt USE path_variables, ONLY : fix_atom_pos USE path_variables, ONLY : pos, grad_pes, pes, num_of_images, & tangent, dim1, error USE path_io_units_module, ONLY : iundat, iunint, iunxyz, iuncrd, iunaxsf, & dat_file, int_file, xyz_file, axsf_file, & crd_file ! IMPLICIT NONE ! REAL(DP) :: r, delta, x REAL(DP), ALLOCATABLE :: a(:), b(:), c(:), d(:), f(:), s(:), tau_out(:,:,:) REAL(DP) :: ener, ener_0 INTEGER :: i, j, ia INTEGER, PARAMETER :: max_i = 250 CHARACTER(LEN=256) :: strcrd ! ! IF ( .NOT. meta_ionode ) RETURN ! ! ... the *.dat and *.int files are written here ! OPEN( UNIT = iundat, FILE = dat_file, STATUS = "UNKNOWN", & ACTION = "WRITE" ) OPEN( UNIT = iunint, FILE = int_file, STATUS = "UNKNOWN", & ACTION = "WRITE" ) ! ALLOCATE( a( num_of_images - 1 ) ) ALLOCATE( b( num_of_images - 1 ) ) ALLOCATE( c( num_of_images - 1 ) ) ALLOCATE( d( num_of_images - 1 ) ) ALLOCATE( f( num_of_images ) ) ALLOCATE( s( num_of_images ) ) ! f(:) = 0.0_DP ! DO i = 2, num_of_images - 1 ! f(i) = - ( grad_pes(:,i) .dot. tangent(:,i) ) ! END DO ! s(1) = 0.0_DP ! DO i = 1, num_of_images - 1 ! r = norm( pos(:,i+1) - pos(:,i) ) ! s(i+1) = s(i) + r ! ! ... cubic interpolation ! a(i) = 2.0_DP*( pes(i) - pes(i+1) ) / r**3 - ( f(i) + f(i+1) ) / r**2 ! b(i) = 3.0_DP*( pes(i+1) - pes(i) ) / r**2 + ( 2.0_DP*f(i) + f(i+1) ) / r ! c(i) = - f(i) ! d(i) = pes(i) ! END DO ! DO i = 1, num_of_images ! WRITE( UNIT = iundat, FMT = dat_fmt ) & ( s(i) / s(num_of_images) ), ( pes(i) - pes(1) )*autoev, error(i) ! END DO ! i = 1 ! delta = s(num_of_images) / DBLE( max_i ) ! DO j = 0, max_i ! r = DBLE( j ) * delta ! IF ( r >= s(i+1) .AND. i < num_of_images - 1 ) i = i + 1 ! x = r - s(i) ! ener = a(i)*x**3 + b(i)*x**2 + c(i)*x + d(i) ! IF ( j == 0 ) ener_0 = ener ! WRITE( UNIT = iunint, FMT = int_fmt ) & ( r / s(num_of_images) ), ( ener - ener_0 )*autoev ! END DO ! DEALLOCATE( a, b, c, d, f, s ) ! CLOSE( UNIT = iundat ) CLOSE( UNIT = iunint ) ! ! ... the *.xyz file is written here ! OPEN( UNIT = iunxyz, FILE = xyz_file, & STATUS = "UNKNOWN", ACTION = "WRITE" ) ! DO i = 1, num_of_images ! WRITE( UNIT = iunxyz, FMT = '(I5,/)' ) nat ! DO ia = 1, nat ! WRITE( UNIT = iunxyz, FMT = xyz_fmt ) & TRIM( atm( ityp( ia ) ) ), & pos(3*ia-2,i) * bohr_radius_angs, & pos(3*ia-1,i) * bohr_radius_angs, & pos(3*ia-0,i) * bohr_radius_angs ! END DO ! END DO ! CLOSE( UNIT = iunxyz ) ! ! ... the *.crd file is written here ! OPEN( UNIT = iuncrd, FILE = crd_file, STATUS = "UNKNOWN", & ACTION = "WRITE" ) ALLOCATE( tau_out(3,nat,num_of_images) ) ! DO i = 1, num_of_images DO ia = 1,nat tau_out(1,ia,i) = pos(3*ia-2,i) tau_out(2,ia,i) = pos(3*ia-1,i) tau_out(3,ia,i) = pos(3*ia-0,i) ENDDO ENDDO ! SELECT CASE( tau_format ) ! ! ... convert output atomic positions from internally used format ! ... (bohr units, for path) to the same format used in input ! CASE( 'alat' ) strcrd = "ATOMIC_POSITIONS (alat)" tau_out(:,:,:) = tau_out(:,:,:) / alat CASE( 'bohr' ) strcrd = "ATOMIC_POSITIONS (bohr)" CASE( 'crystal' ) strcrd = "ATOMIC_POSITIONS (crystal)" tau_out(:,:,:) = tau_out(:,:,:) / alat DO i = 1, num_of_images call cryst_to_cart( nat, tau_out(1,1,i), bg, -1 ) ENDDO CASE( 'angstrom' ) strcrd = "ATOMIC_POSITIONS (angstrom)" tau_out(:,:,:) = tau_out(:,:,:) * bohr_radius_angs CASE DEFAULT strcrd = "ATOMIC_POSITIONS" END SELECT DO i = 1, num_of_images ! Add the image label and atomic position card header IF ( i == 1) THEN WRITE( UNIT = iuncrd, FMT='(A,/,A)') "FIRST_IMAGE", TRIM(strcrd) ELSEIF ( i == num_of_images) THEN WRITE( UNIT = iuncrd, FMT='(A,/,A)') "LAST_IMAGE", TRIM(strcrd) ELSE WRITE( UNIT = iuncrd, FMT='(A,/,A)') & "INTERMEDIATE_IMAGE", TRIM(strcrd) ENDIF ! DO ia = 1, nat ! IF ( i == 1 .and. ANY(fix_atom_pos(:,ia) /= 1) ) THEN WRITE( UNIT = iuncrd, FMT = '(1x,a4,3f18.10,3i2)' ) & TRIM( atm( ityp( ia ) ) ), & tau_out(1:3,ia,i), fix_atom_pos(1:3,ia) ELSE WRITE( UNIT = iuncrd, FMT = '(1x,a4,3f18.10)' ) & TRIM( atm( ityp( ia ) ) ), & tau_out(1:3,ia,i) ENDIF ! END DO ! END DO ! DEALLOCATE ( tau_out ) CLOSE( UNIT = iuncrd ) ! ! ... the *.axsf file is written here ! OPEN( UNIT = iunaxsf, FILE = axsf_file, STATUS = "UNKNOWN", & ACTION = "WRITE" ) ! WRITE( UNIT = iunaxsf, FMT = '(" ANIMSTEPS ",I3)' ) num_of_images WRITE( UNIT = iunaxsf, FMT = '(" CRYSTAL ")' ) WRITE( UNIT = iunaxsf, FMT = '(" PRIMVEC ")' ) WRITE( UNIT = iunaxsf, FMT = '(3F14.10)' ) & at(1,1) * alat * bohr_radius_angs, & at(2,1) * alat * bohr_radius_angs, & at(3,1) * alat * bohr_radius_angs WRITE( UNIT = iunaxsf, FMT = '(3F14.10)' ) & at(1,2) * alat * bohr_radius_angs, & at(2,2) * alat * bohr_radius_angs, & at(3,2) * alat * bohr_radius_angs WRITE( UNIT = iunaxsf, FMT = '(3F14.10)' ) & at(1,3) * alat * bohr_radius_angs, & at(2,3) * alat * bohr_radius_angs, & at(3,3) * alat * bohr_radius_angs ! DO i = 1, num_of_images ! WRITE( UNIT = iunaxsf, FMT = '(" PRIMCOORD ",I3)' ) i WRITE( UNIT = iunaxsf, FMT = '(I5," 1")' ) nat ! DO ia = 1, nat ! WRITE( UNIT = iunaxsf, FMT = axsf_fmt ) & TRIM( atm(ityp(ia)) ), & pos(3*ia-2,i) * bohr_radius_angs, & pos(3*ia-1,i) * bohr_radius_angs, & pos(3*ia-0,i) * bohr_radius_angs, & - grad_pes(3*ia-2,i) / bohr_radius_angs, & - grad_pes(3*ia-1,i) / bohr_radius_angs, & - grad_pes(3*ia-0,i) / bohr_radius_angs ! END DO ! END DO ! CLOSE( UNIT = iunaxsf ) ! END SUBROUTINE write_dat_files ! !----------------------------------------------------------------------- SUBROUTINE write_output() !----------------------------------------------------------------------- ! USE path_io_units_module, ONLY : iunpath USE path_variables, ONLY : num_of_images, error, path_length, & activation_energy, pes, pos, frozen, & CI_scheme, Emax_index USE path_formats, ONLY : run_info, run_output ! IMPLICIT NONE ! ! ... local variables ! INTEGER :: image REAL (DP) :: inter_image_distance ! ! IF ( .NOT. meta_ionode ) RETURN ! WRITE( UNIT = iunpath, & FMT = '(/,5X,"activation energy (->) = ",F10.6," eV")' ) & activation_energy WRITE( UNIT = iunpath, & FMT = '(5X,"activation energy (<-) = ",F10.6," eV",/)' ) & activation_energy + ( pes(1) - pes(num_of_images) ) * autoev ! WRITE( UNIT = iunpath, FMT = run_info ) ! path_length = 0.0_DP ! DO image = 1, num_of_images ! IF ( image > 1 ) & path_length = path_length + & norm( pos(:,image) - pos(:,image-1) ) ! WRITE( UNIT = iunpath, FMT = run_output ) & image, pes(image) * autoev, error(image), frozen(image) ! END DO ! inter_image_distance = path_length / DBLE( num_of_images - 1 ) ! IF ( CI_scheme == "auto" ) & WRITE( UNIT = iunpath, & FMT = '(/,5X,"climbing image = ",I2)' ) Emax_index ! WRITE( UNIT = iunpath, & FMT = '(/,5X,"path length",& & T26," = ",F6.3," bohr")' ) path_length WRITE( UNIT = iunpath, & FMT = '(5X,"inter-image distance", & & T26," = ",F6.3," bohr")' ) inter_image_distance ! END SUBROUTINE write_output ! !----------------------------------------------------------------------- SUBROUTINE new_image_init( fii, outdir ) !----------------------------------------------------------------------- ! ! ... this subroutine initializes the file needed for the ! ... parallelization among images ! USE path_io_units_module, ONLY : iunnewimage USE io_files, ONLY : prefix USE path_variables, ONLY : tune_load_balance USE mp_image_global_module, ONLY : nimage ! IMPLICIT NONE ! INTEGER, INTENT(IN) :: fii CHARACTER(LEN=*), INTENT(IN) :: outdir ! ! IF ( nimage == 1 .OR. .NOT.tune_load_balance ) RETURN ! OPEN( UNIT = iunnewimage, FILE = TRIM( outdir ) // & & TRIM( prefix ) // '.newimage' , STATUS = 'UNKNOWN' ) ! WRITE( iunnewimage, * ) fii + nimage ! CLOSE( UNIT = iunnewimage, STATUS = 'KEEP' ) ! RETURN ! END SUBROUTINE new_image_init ! !----------------------------------------------------------------------- SUBROUTINE get_new_image( image, outdir ) !----------------------------------------------------------------------- ! ! ... this subroutine is used to get the new image to work on ! ... the "prefix.LOCK" file is needed to avoid (when present) that ! ... other jobs try to read/write on file "prefix.newimage" ! USE io_files, ONLY : iunnewimage, iunlock, prefix USE io_global, ONLY : ionode USE path_variables, ONLY : tune_load_balance USE mp_image_global_module, ONLY : nimage ! IMPLICIT NONE ! INTEGER, INTENT(INOUT) :: image CHARACTER(LEN=*), INTENT(IN) :: outdir ! INTEGER :: ioerr CHARACTER(LEN=256) :: filename LOGICAL :: opened ! ! IF ( .NOT.ionode ) RETURN ! IF ( nimage > 1 ) THEN ! IF ( tune_load_balance ) THEN ! filename = TRIM( outdir ) // TRIM( prefix ) // '.LOCK' ! open_loop: DO ! OPEN( UNIT = iunlock, FILE = TRIM( filename ), & & IOSTAT = ioerr, STATUS = 'NEW' ) ! IF ( ioerr > 0 ) CYCLE open_loop ! INQUIRE( UNIT = iunnewimage, OPENED = opened ) ! IF ( .NOT. opened ) THEN ! OPEN( UNIT = iunnewimage, FILE = TRIM( outdir ) // & & TRIM( prefix ) // '.newimage' , STATUS = 'OLD' ) ! READ( iunnewimage, * ) image ! CLOSE( UNIT = iunnewimage, STATUS = 'DELETE' ) ! OPEN( UNIT = iunnewimage, FILE = TRIM( outdir ) // & & TRIM( prefix ) // '.newimage' , STATUS = 'NEW' ) ! WRITE( iunnewimage, * ) image + 1 ! CLOSE( UNIT = iunnewimage, STATUS = 'KEEP' ) ! EXIT open_loop ! END IF ! END DO open_loop ! CLOSE( UNIT = iunlock, STATUS = 'DELETE' ) ! ELSE ! image = image + nimage ! END IF ! ELSE ! image = image + 1 ! END IF ! RETURN ! END SUBROUTINE get_new_image ! !----------------------------------------------------------------------- SUBROUTINE stop_other_images() !----------------------------------------------------------------------- ! ! ... this subroutine is used to send a stop signal to other images ! ... this is done by creating the exit_file on the working directory ! USE io_files, ONLY : iunexit, exit_file USE io_global, ONLY : ionode ! IMPLICIT NONE ! ! IF ( .NOT. ionode ) RETURN ! OPEN( UNIT = iunexit, FILE = TRIM( exit_file ) ) CLOSE( UNIT = iunexit, STATUS = 'KEEP' ) ! RETURN ! END SUBROUTINE stop_other_images ! END MODULE path_io_routines NEB/src/neb.f900000644000700200004540000001266512053145633012350 0ustar marsamoscm! ! Copyright (C) 2011 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! !---------------------------------------------------------------------------- PROGRAM neb !---------------------------------------------------------------------------- ! ! ... Nudged Elastic Band / Strings Method algorithm ! USE io_global, ONLY : meta_ionode_id, xmlinputunit USE parameters, ONLY : ntypx, npk, lmaxx USE control_flags, ONLY : conv_elec, conv_ions, lpath, gamma_only USE environment, ONLY : environment_start, environment_end USE path_variables, ONLY : conv_path USE check_stop, ONLY : check_stop_init USE path_base, ONLY : initialize_path, search_mep USE path_io_routines, ONLY : path_summary USE image_io_routines, ONLY : io_image_start USE mp_global, ONLY : mp_bcast, mp_rank ! USE mp_image_global_module, ONLY : mp_image_startup, world_comm USE mp_image_global_module, ONLY : me_image, nimage USE mp_global, ONLY : mp_start USE iotk_module, ONLY : iotk_attlenx USE open_close_input_file, ONLY : open_input_file, close_input_file USE read_xml_module, ONLY : read_xml USE read_cards_module, ONLY : read_cards USE read_namelists_module, ONLY : read_namelists USE path_read_namelists_module, ONLY : path_read_namelist USE path_read_cards_module, ONLY : path_read_cards ! USE path_io_units_module, ONLY : stdinpath, set_input_unit ! USE path_input_parameters_module, ONLY : nstep_path ! USE path_input_parameters_module, ONLY : input_images ! USE path_input_parameters_module, ONLY : allocate_path_input_ions, & deallocate_path_input_ions ! USE iotk_module, ONLY : iotk_open_read, iotk_close_read,iotk_attlenx ! IMPLICIT NONE ! ! CHARACTER (len=iotk_attlenx) :: attr ! CHARACTER(len=256) :: engine_prefix ! INTEGER :: unit_tmp ! INTEGER :: i, iimage CHARACTER(len=10) :: a_tmp ! INTEGER :: mpime = 0, nproc = 1, neb_comm = 0 INTEGER :: root = 0 ! CHARACTER(len=256) :: parsing_file_name LOGICAL :: lfound_parsing_file, lfound_input_images ! LOGICAL :: lxml ! CHARACTER(LEN=6), EXTERNAL :: int_to_char ! unit_tmp = 45 xmlinputunit = 45 ! #ifdef __MPI CALL mp_start(nproc,mpime,neb_comm) CALL mp_image_startup (root,neb_comm) CALL engine_mp_start() #endif CALL environment_start ( 'NEB' ) ! ! ! INPUT RELATED ! ! ... open input file ! if(mpime==root) CALL input_file_name_getarg(parsing_file_name,lfound_parsing_file) ! engine_prefix = "pw_" ! CALL mp_bcast(parsing_file_name,root,neb_comm) CALL mp_bcast(lfound_parsing_file,root,neb_comm) ! ! if(lfound_parsing_file) then write(0,*) "" write(0,*) "parsing_file_name: ", trim(parsing_file_name) call path_gen_inputs(trim(parsing_file_name),engine_prefix,input_images,root,neb_comm) ! else ! write(0,*) "" write(0,*) "NO input file found, assuming nothing to parse." write(0,*) "Searching argument -input_images or --input_images" if(mpime==root) CALL input_images_getarg(input_images,lfound_input_images) CALL mp_bcast(input_images,root,neb_comm) CALL mp_bcast(lfound_input_images,root,neb_comm) ! IF(.not.lfound_input_images) CALL errore('string_methods', & 'Neither a file to parse nor input files for each image found',1) ! endif ! call set_input_unit() ! open(unit=stdinpath,file="neb.dat",status="old") CALL path_read_namelist(stdinpath) CALL path_read_cards(stdinpath) close(stdinpath) ! ! OPEN(unit_tmp, file=trim(engine_prefix)//"1.in") CALL test_input_xml(unit_tmp,lxml) CLOSE(unit_tmp) if(.not.lxml) then OPEN(unit_tmp, file=trim(engine_prefix)//"1.in") CALL read_namelists( prog='PW', unit=unit_tmp ) CALL read_cards( prog='PW', unit=unit_tmp ) CLOSE(unit_tmp) else CALL iotk_open_read( unit_tmp, trim(engine_prefix)//"1.in", & attr = attr, qe_syntax = .true.) CALL read_xml('PW', attr = attr ) CALL iotk_close_read(unit_tmp) endif CALL iosys() CALL engine_to_path_nat() CALL engine_to_path_alat() CALL allocate_path_input_ions(input_images) CALL engine_to_path_pos(1) CALL engine_to_path_fix_atom_pos() do i=2,input_images CALL set_engine_input_defaults() CALL clean_pw(.true.) a_tmp=trim(int_to_char(i)) OPEN(unit_tmp,file=trim(engine_prefix)//trim(a_tmp)//".in") CALL test_input_xml(unit_tmp,lxml) CLOSE(unit_tmp) if(.not.lxml) then OPEN(unit_tmp,file=trim(engine_prefix)//trim(a_tmp)//".in") CALL read_namelists( prog='PW', unit=unit_tmp ) CALL read_cards( prog='PW', unit=unit_tmp ) CLOSE(unit_tmp) else CALL iotk_open_read( unit_tmp, trim(engine_prefix)//trim(a_tmp)//".in", & attr = attr, qe_syntax = .true. ) CALL read_xml('PW', attr = attr ) CALL iotk_close_read(unit_tmp) endif CALL iosys() CALL engine_to_path_pos(i) enddo ! CALL path_to_engine_fix_atom_pos() ! CALL ioneb() ! CALL set_engine_io_units() ! ! END INPUT RELATED ! CALL check_stop_init() ! CALL io_image_start() ! CALL initialize_path() ! CALL deallocate_path_input_ions() ! CALL path_summary() ! CALL search_mep() ! CALL stop_run_path( conv_path ) ! ! STOP ! END PROGRAM neb NEB/src/set_defaults.f900000644000700200004540000000247312053145633014262 0ustar marsamoscm ! Copyright (C) 2010 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! ! !---------------------------------------------------------------------------- SUBROUTINE set_engine_input_defaults() !----------------------------------------------------------------------------- ! USE input_parameters, ONLY : & tapos, tkpoints, taspc, twannier, & tconstr, tforces, tocc, tksout, & tionvel, tesr, tdipole, tcell ! tapos = .false. tkpoints = .false. taspc = .false. twannier = .false. tconstr = .false. tforces = .false. tocc = .false. tksout = .false. tionvel = .false. tesr = .false. tdipole = .false. tcell = .false. ! END SUBROUTINE set_engine_input_defaults ! !---------------------------------------------------------------------------- SUBROUTINE set_engine_io_units() !----------------------------------------------------------------------------- ! USE io_global, ONLY : stdout, xmlinputunit, ionode INTEGER, EXTERNAL :: find_free_unit ! if(ionode) stdout = find_free_unit() ! ! END SUBROUTINE set_engine_io_units ! NEB/src/engine_to_path_pos.f900000644000700200004540000000517412053145633015445 0ustar marsamoscm! ! Copyright (C) 2002-2009 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! ! !---------------------------------------------------------------------------- SUBROUTINE engine_to_path_pos(idx) !----------------------------------------------------------------------------- ! ! USE kinds, ONLY : DP ! USE path_input_parameters_module, ONLY : input_images ! USE path_input_parameters_module, ONLY : nat, alat ! ! USE path_input_parameters_module, ONLY : pos, typ USE ions_base, ONLY : tau, ityp USE cell_base, ONLY : bg, at ! ! IMPLICIT NONE ! INTEGER, INTENT(IN) :: idx ! ! internal variables INTEGER :: iat ! counter on atoms REAL(DP), ALLOCATABLE :: pos0(:,:), pos1(:,:) ! atomic positions (in crystal units) of the previous and current image ! ! set_my_tau ! il tau e gia in units di pw ! ! is this really necessary? (GS) if(.not.allocated(pos)) allocate(pos(3*nat,input_images)) pos(:,idx) = 0.0_dp ! ! ... note that this positions array is in Bohr ! pos(1:3*nat,idx) = reshape( tau, (/ 3 * nat /) ) * alat ! ! Use the translational periodicity of the unit cell to ensure that the path ! is smooth (.i.e., to avoid "jumps" between periodic replicas of atoms). ! IF ( idx > 1 ) THEN ! ALLOCATE( pos0(3,nat), pos1(3,nat) ) pos0 = reshape( pos(:,idx-1), (/ 3, nat /) ) / alat pos1 = reshape( pos(:,idx), (/ 3, nat /) ) / alat CALL cryst_to_cart( nat, pos0(1,1), bg, -1 ) CALL cryst_to_cart( nat, pos1(1,1), bg, -1 ) ! DO iat = 1,nat ! ! translate atom by a lattice vector if needed ! N.B.: this solves the problem only when |p1-p0|<1.0 ! WHERE( (pos1(:,iat) - pos0(:,iat)) > 0.5_DP ) pos1(:,iat) = pos1(:,iat) - 1.0_DP ENDWHERE ! WHERE( (pos1(:,iat) - pos0(:,iat)) < -0.5_DP ) pos1(:,iat) = pos1(:,iat) + 1.0_DP ENDWHERE ENDDO ! CALL cryst_to_cart( nat, pos1(1,1), at, 1 ) pos(1:3*nat,idx) = reshape( pos1, (/ 3 * nat /) ) * alat ! DEALLOCATE( pos0, pos1 ) ! ENDIF ! ! consistency check on atomic type, just to be sure... (GS) ! IF ( idx == 1 ) THEN ! is this really necessary? (GS) if(.not.allocated(typ)) allocate(typ(nat)) typ = ityp(:) ELSE IF ( ANY( typ .NE. ityp ) ) CALL errore("engine_to_path_pos", & "inconsistency of atomic species", idx ) ENDIF ! RETURN ! END SUBROUTINE engine_to_path_pos ! NEB/src/path_to_engine_mp.f900000644000700200004540000000277312053145633015262 0ustar marsamoscm! ! Copyright (C) 2011 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! ! !---------------------------------------------------------------------------- SUBROUTINE engine_mp_start() !----------------------------------------------------------------------------- ! ! fill engine modules for parallel calculations ! USE kinds, ONLY : DP ! USE mp_image_global_module, ONLY : intra_image_comm USE mp_image_global_module, ONLY : root_image, me_image, nproc_image_file, & nproc_image, my_image_id, nimage ! USE mp_global, ONLY : mp_startup_new, & intra_image_comm_ => intra_image_comm, & me_image_ => me_image, & root_image_ => root_image, & nproc_image_file_ => nproc_image_file, & nproc_image_ => nproc_image, & my_image_id_ => my_image_id, & nimage_ => nimage ! ! ... "path" specific ! IMPLICIT NONE ! intra_image_comm_ = intra_image_comm me_image_ = me_image root_image_ = root_image nproc_image_ = nproc_image nproc_image_file = nproc_image_file my_image_id_ = my_image_id nimage_ = nimage ! CALL mp_startup_new(root_image, intra_image_comm) ! ! RETURN ! END SUBROUTINE engine_mp_start ! NEB/src/input.f900000644000700200004540000002063412053145633012736 0ustar marsamoscm! ! Copyright (C) 2002-2009 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! ! !---------------------------------------------------------------------------- SUBROUTINE ioneb() !----------------------------------------------------------------------------- ! ! ... this subroutine reads input data from standard input ( unit 5 ) ! ... Use "-input filename" to read input from file "filename": ! ... may be useful if you have trouble reading from standard input ! ... --------------------------------------------------------------- ! ! ... access the modules renaming the variables that have the same name ! ... as the input parameters, this is required in order to use a code ! ... independent input parser ! ! USE kinds, ONLY : DP USE constants, ONLY : autoev, eV_to_kelvin USE io_global, ONLY : stdout USE io_files, ONLY : tmp_dir USE path_variables, ONLY : lsteep_des, lquick_min, & lbroyden, lbroyden2, & llangevin, & nstep_path_ => nstep_path, & ds_ => ds, & use_masses_ => use_masses, & CI_scheme_ => CI_scheme, & fixed_tan_ => fixed_tan, & use_freezing_ => use_freezing, & k_max_ => k_max, & k_min_ => k_min, & num_of_images_ => num_of_images, & first_last_opt_ => first_last_opt, & temp_req_ => temp_req, & path_thr_ => path_thr ! ! USE path_variables, ONLY : lneb, lsmd ! USE path_input_parameters_module, ONLY : restart_mode ! USE path_variables, ONLY : restart ! USE path_input_parameters_module, ONLY : nstep_path, string_method, & num_of_images, path_thr, CI_scheme, opt_scheme, & use_masses, first_last_opt, temp_req, k_max, & k_min, ds, use_freezing, fixed_tan ! ! ! ... "path" specific ! ! IMPLICIT NONE ! INTEGER :: ia, image, nt REAL(DP) :: theta, phi INTEGER :: iiarg, nargs, iargc, ierr CHARACTER (len=50) :: arg ! ! SELECT CASE(trim( string_method )) ! CASE( 'neb' ) ! lneb = .true. ! CASE( 'smd' ) ! lsmd = .true. ! CASE DEFAULT ! CALL errore( 'ioneb', 'string_method ' // & & trim( string_method ) // ' not implemented', 1 ) ! END SELECT ! SELECT CASE( trim( restart_mode ) ) CASE( 'from_scratch' ) ! restart = .false. ! CASE( 'restart' ) ! IF ( lneb .or. lsmd ) THEN ! ! ... "path" specific ! restart = .true. ! ENDIF ! CASE DEFAULT ! CALL errore( 'ioneb', & & 'unknown restart_mode ' // trim( restart_mode ), 1 ) ! END SELECT ! ! ! ! check da mettere dopo iosys del pw ! ! IF( io_level < 0) CALL errore ( 'ioneb', & ! 'NEB, SMD do not work with "disk_io" set to "none"', 1) ! ! IF ( num_of_images < 2 ) & CALL errore( 'ioneb', 'string_method=' // trim( string_method ) // & & ': num_of_images must be at least 2', 1 ) ! IF ( ( CI_scheme /= "no-CI" ) .and. & ( CI_scheme /= "auto" ) .and. & ( CI_scheme /= "manual" ) ) THEN ! CALL errore( 'ioneb', 'string_method=' // trim( string_method ) // & & ': unknown CI_scheme', 1 ) ! ENDIF ! ! ... initialization of logical variables ! lsteep_des = .false. lquick_min = .false. lbroyden = .false. lbroyden2 = .false. ! SELECT CASE( opt_scheme ) CASE( "sd" ) ! lsteep_des = .true. ! CASE( "quick-min" ) ! lquick_min = .true. ! CASE( "broyden" ) ! lbroyden = .true. ! CASE( "broyden2" ) ! lbroyden2 = .true. ! CASE( "langevin" ) ! llangevin = .true. ! IF ( lneb ) & CALL errore( 'iosys','string_method=' // trim( string_method ) // & & ': langevin dynamics not implemented', 1 ) ! temp_req = temp_req / ( eV_to_kelvin * autoev ) ! IF ( temp_req <= 0.D0 ) & CALL errore( 'iosys','string_method=' // trim( string_method ) // & & ': tepm_req has not been set', 1 ) ! IF ( use_freezing ) & WRITE( UNIT = stdout, & FMT = '(5X,"warning: freezing cannot be used in langevin")' ) ! use_freezing = .false. ! CASE DEFAULT ! CALL errore( 'iosys','string_method=' // trim( string_method ) // & & ': unknown opt_scheme', 1 ) ! END SELECT ! ! ! ... "path"-optimization variables ! nstep_path_ = nstep_path ds_ = ds num_of_images_ = num_of_images first_last_opt_ = first_last_opt use_masses_ = use_masses use_freezing_ = use_freezing temp_req_ = temp_req path_thr_ = path_thr CI_scheme_ = CI_scheme k_max_ = k_max k_min_ = k_min fixed_tan_ = fixed_tan ! ! ! CALL verify_neb_tmpdir( tmp_dir ) ! ! RETURN ! END SUBROUTINE ioneb ! !----------------------------------------------------------------------- SUBROUTINE verify_neb_tmpdir( tmp_dir ) !----------------------------------------------------------------------- ! USE wrappers, ONLY : f_mkdir USE path_input_parameters_module, ONLY : restart_mode USE io_files, ONLY : prefix, xmlpun, & delete_if_present USE path_variables, ONLY : num_of_images USE mp_image_global_module, ONLY : mpime, nproc, nimage USE io_global, ONLY : meta_ionode USE mp, ONLY : mp_barrier USE xml_io_base, ONLY : copy_file ! IMPLICIT NONE ! CHARACTER(len=*), INTENT(inout) :: tmp_dir ! INTEGER :: ios, image, proc, nofi LOGICAL :: exst CHARACTER (len=256) :: file_path, filename CHARACTER(len=6), EXTERNAL :: int_to_char ! ! file_path = trim( tmp_dir ) // trim( prefix ) ! ! IF ( restart_mode == 'from_scratch' ) THEN ! ! ... let us try to create the scratch directory ! CALL parallel_mkdir ( tmp_dir ) ! ENDIF ! ! ! ... if starting from scratch all temporary files are removed ! ... from tmp_dir ( only by the master node ) ! IF ( meta_ionode ) THEN ! ! ... files needed by parallelization among images are removed ! CALL delete_if_present( trim( file_path ) // '.newimage' ) ! ! ... file containing the broyden's history ! IF ( restart_mode == 'from_scratch' ) THEN ! CALL delete_if_present( trim( file_path ) // '.broyden' ) ! ENDIF ! ENDIF ! end if ionode ! nofi = num_of_images ! DO image = 1, nofi ! file_path = trim( tmp_dir ) // trim( prefix ) //"_" // & trim( int_to_char( image ) ) // '/' ! CALL parallel_mkdir ( file_path ) ! ! ... if starting from scratch all temporary files are removed ! ... from tmp_dir ( by all the cpus in sequence ) ! IF ( restart_mode == 'from_scratch' ) THEN ! DO proc = 0, nproc - 1 ! IF ( proc == mpime ) THEN ! ! ... extrapolation file is removed ! CALL delete_if_present( trim( file_path ) // & & trim( prefix ) // '.update' ) ! ! ... standard output of the self-consistency is removed ! CALL delete_if_present( trim( file_path ) // 'PW.out' ) ! ENDIF ! CALL mp_barrier() ! ENDDO ! ENDIF ! end restart_mode ! ENDDO ! end do image ! RETURN ! END SUBROUTINE verify_neb_tmpdir NEB/src/Makefile0000644000700200004540000000323512053145633012715 0ustar marsamoscm# Makefile for NEB include ../../make.sys # location of needed modules MODFLAGS= $(MOD_FLAG)../../iotk/src \ $(MOD_FLAG)../../Modules \ $(MOD_FLAG)../../PW/src $(MOD_FLAG). #location of needed libraries LIBOBJS= ../../iotk/src/libiotk.a ../../flib/flib.a \ ../../clib/clib.a ../../flib/ptools.a NEBOBJS = \ neb.o \ NEBLIBS = \ compute_scf.o \ engine_to_path_pos.o \ engine_to_path_alat.o \ engine_to_path_nat.o \ engine_to_path_fix_atom_pos.o \ input.o \ path_base.o \ path_formats.o \ path_gen_inputs.o \ path_input_parameters_module.o \ path_io_routines.o \ path_io_tools.o \ path_io_units_module.o \ path_opt_routines.o \ path_reparametrisation.o \ path_read_cards_module.o \ path_read_namelists_module.o \ path_to_engine_fix_atom_pos.o \ path_to_engine_mp.o \ path_variables.o \ set_defaults.o \ stop_run_path.o QEMODS=../../Modules/libqemod.a PWOBJS= ../../PW/src/libpw.a TLDEPS=bindir mods libs liblapack libblas pw all : tldeps neb.x path_interpolation.x neb.x : $(NEBOBJS) libneb.a $(LIBOBJS) $(PWOBJS) $(QEMODS) $(LD) $(LDFLAGS) -o $@ \ $(NEBOBJS) libneb.a $(PWOBJS) $(QEMODS) $(LIBOBJS) $(LIBS) - ( cd ../../bin; ln -fs ../NEB/src/$@ . ) path_interpolation.x : path_interpolation.o $(PWOBJS) $(QEMODS) $(LIBOBJS) $(LD) $(LDFLAGS) -o $@ \ path_interpolation.o $(PWOBJS) $(QEMODS) $(LIBOBJS) $(LIBS) - ( cd ../../bin ; ln -fs ../NEB/src/$@ . ) libneb.a : $(NEBLIBS) $(AR) $(ARFLAGS) $@ $? $(RANLIB) $@ tldeps: test -n "$(TLDEPS)" && ( cd ../.. ; $(MAKE) $(MFLAGS) $(TLDEPS) || exit 1) || : clean : - /bin/rm -f *.x *.o *.a *~ *.F90 *.d *.mod *.i *.L - /bin/rm -f ../../bin/neb.x - /bin/rm -f ../../bin/path_interpolation.x include make.depend NEB/src/path_to_engine_fix_atom_pos.f900000644000700200004540000000153212053145633017325 0ustar marsamoscm! ! Copyright (C) 2011 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! ! !---------------------------------------------------------------------------- SUBROUTINE path_to_engine_fix_atom_pos() !----------------------------------------------------------------------------- ! ! USE kinds, ONLY : DP ! USE ions_base, ONLY : if_pos USE path_variables, ONLY : fix_atom_pos USE path_input_parameters_module, ONLY : nat ! ! ... "path" specific ! IMPLICIT NONE ! ! set_my_if_pos ! if(.not.allocated(if_pos)) allocate(if_pos(3,nat)) if_pos(:,:) = 1 if_pos(:,:) = fix_atom_pos(:,:) ! ! RETURN ! END SUBROUTINE path_to_engine_fix_atom_pos ! NEB/src/engine_to_path_alat.f900000644000700200004540000000124512053145633015560 0ustar marsamoscm! ! Copyright (C) 2002-2009 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! ! !---------------------------------------------------------------------------- SUBROUTINE engine_to_path_alat() !----------------------------------------------------------------------------- ! ! USE kinds, ONLY : DP ! USE cell_base, ONLY : alat USE path_input_parameters_module, ONLY : alat_ => alat ! ! IMPLICIT NONE ! alat_ = alat ! ! RETURN ! END SUBROUTINE engine_to_path_alat ! NEB/src/stop_run_path.f900000644000700200004540000000321512053145633014460 0ustar marsamoscm! ! Copyright (C) 2001-2009 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! !---------------------------------------------------------------------------- SUBROUTINE stop_run_path( lflag ) !---------------------------------------------------------------------------- ! ! ... Close all files and synchronize processes before stopping. ! ... Called at the end of the run with flag = .TRUE. (removes 'restart') ! ... or during execution with flag = .FALSE. (does not remove 'restart') ! USE io_global, ONLY : ionode, stdout USE mp_global, ONLY : mp_global_end USE mp_image_global_module, ONLY : nimage USE environment, ONLY : environment_end USE path_variables, ONLY : path_deallocation USE image_io_routines, ONLY : io_image_stop USE path_io_units_module, ONLY : iunpath ! IMPLICIT NONE ! LOGICAL, INTENT(IN) :: lflag LOGICAL :: exst, opnd, flag2 ! ! ! ! CALL io_image_stop() ! ! call pwscf stop run routine, close files and deallocate arrays ! CALL close_files(lflag) ! ! as environment_end writes final info on stdout ! stdout has to be redirected to iunpath (neb output) ! stdout=iunpath ! CALL environment_end( 'NEB' ) ! CALL clean_pw( .TRUE. ) ! CALL path_deallocation() ! CALL mp_global_end() ! IF ( .not. lflag ) THEN ! STOP 1 ! END IF ! END SUBROUTINE stop_run_path ! !---------------------------------------------------------------------------- NEB/src/path_opt_routines.f900000644000700200004540000003556412053145633015355 0ustar marsamoscm! ! Copyright (C) 2003-2006 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! !-------------------------------------------------------------------------- MODULE path_opt_routines !--------------------------------------------------------------------------- ! ! ... This module contains all subroutines and functions needed for ! ... the optimisation of the reaction path (NEB and SMD calculations) ! ! ... Written by Carlo Sbraccia ( 2003-2006 ) ! USE kinds, ONLY : DP USE constants, ONLY : eps8, eps16 USE path_variables, ONLY : ds, pos, grad USE io_global, ONLY : meta_ionode, meta_ionode_id USE mp, ONLY : mp_bcast ! USE basic_algebra_routines ! IMPLICIT NONE ! PRIVATE ! PUBLIC :: langevin, steepest_descent, quick_min, broyden, broyden2 ! CONTAINS ! !---------------------------------------------------------------------- SUBROUTINE langevin( idx ) !---------------------------------------------------------------------- ! USE path_variables, ONLY : lang ! IMPLICIT NONE ! INTEGER, INTENT(IN) :: idx ! IF ( meta_ionode ) THEN ! pos(:,idx) = pos(:,idx) - ds*grad(:,idx) + lang(:,idx) ! END IF ! CALL mp_bcast( pos, meta_ionode_id ) ! RETURN ! END SUBROUTINE langevin ! !---------------------------------------------------------------------- SUBROUTINE steepest_descent( idx ) !---------------------------------------------------------------------- ! IMPLICIT NONE ! INTEGER, INTENT(IN) :: idx ! IF ( meta_ionode ) THEN ! pos(:,idx) = pos(:,idx) - ds*ds*grad(:,idx) ! END IF ! CALL mp_bcast( pos, meta_ionode_id ) ! RETURN ! END SUBROUTINE steepest_descent ! !---------------------------------------------------------------------- SUBROUTINE quick_min( idx, istep ) !---------------------------------------------------------------------- ! ! ... projected Verlet algorithm ! USE path_variables, ONLY : dim1, posold ! IMPLICIT NONE ! INTEGER, INTENT(IN) :: idx, istep ! REAL(DP), ALLOCATABLE :: vel(:), force_versor(:), step(:) REAL(DP) :: projection, norm_grad, norm_vel, norm_step ! REAL(DP), PARAMETER :: max_step = 0.6_DP ! in bohr ! ! IF ( meta_ionode ) THEN ! ALLOCATE( vel( dim1 ), force_versor( dim1 ), step( dim1 ) ) ! vel(:) = pos(:,idx) - posold(:,idx) ! norm_grad = norm( grad(:,idx) ) ! norm_vel = norm( vel(:) ) ! IF ( norm_grad > eps16 .AND. norm_vel > eps16 ) THEN ! force_versor(:) = - grad(:,idx) / norm_grad ! projection = ( vel(:) .dot. force_versor(:) ) ! vel(:) = MAX( 0.0_DP, projection ) * force_versor(:) ! ELSE ! vel(:) = 0.0_DP ! END IF ! posold(:,idx) = pos(:,idx) ! step(:) = vel(:) - ds*ds*grad(:,idx) ! norm_step = norm( step(:) ) ! step(:) = step(:) / norm_step ! pos(:,idx) = pos(:,idx) + step(:) * MIN( norm_step, max_step ) ! DEALLOCATE( vel, force_versor, step ) ! END IF ! CALL mp_bcast( pos, meta_ionode_id ) CALL mp_bcast( posold, meta_ionode_id ) ! RETURN ! END SUBROUTINE quick_min ! ! ... Broyden (rank one) optimisation ! !----------------------------------------------------------------------- SUBROUTINE broyden() !----------------------------------------------------------------------- ! USE path_variables, ONLY : lsmd USE path_io_units_module, ONLY : broy_file, iunbroy, iunpath USE path_variables, ONLY : dim1, frozen, tangent, nim => num_of_images ! IMPLICIT NONE ! REAL(DP), ALLOCATABLE :: t(:), g(:), s(:,:) INTEGER :: k, i, j, I_in, I_fin REAL(DP) :: s_norm, coeff, norm_g REAL(DP) :: J0 LOGICAL :: exists ! REAL(DP), PARAMETER :: step_max = 0.6_DP INTEGER, PARAMETER :: broyden_ndim = 5 ! ! ! ... starting guess for the inverse Jacobian ! J0 = ds*ds ! ALLOCATE( g( dim1*nim ) ) ALLOCATE( s( dim1*nim, broyden_ndim ) ) ALLOCATE( t( dim1*nim ) ) ! g(:) = 0.0_DP t(:) = 0.0_DP ! DO i = 1, nim ! I_in = ( i - 1 )*dim1 + 1 I_fin = i * dim1 ! IF ( frozen(i) ) CYCLE ! IF ( lsmd ) t(I_in:I_fin) = tangent(:,i) ! g(I_in:I_fin) = grad(:,i) ! END DO ! norm_g = MAXVAL( ABS( g ) ) ! IF ( norm_g == 0.0_DP ) RETURN ! IF ( meta_ionode ) THEN ! ! ... open the file containing the broyden's history ! INQUIRE( FILE = broy_file, EXIST = exists ) ! IF ( exists ) THEN ! OPEN( UNIT = iunbroy, FILE = broy_file, STATUS = "OLD" ) ! READ( UNIT = iunbroy , FMT = * ) i ! ! ... if the number of images is changed the broyden history is ! ... reset and the algorithm starts from scratch ! exists = ( i == nim ) ! END IF ! IF ( exists ) THEN ! READ( UNIT = iunbroy , FMT = * ) k READ( UNIT = iunbroy , FMT = * ) s(:,:) ! k = k + 1 ! ELSE ! s(:,:) = 0.0_DP ! k = 1 ! END IF ! CLOSE( UNIT = iunbroy ) ! ! ... Broyden's update ! IF ( k > broyden_ndim ) THEN ! ! ... the Broyden's subspace is swapped and the projection of ! ... s along the current tangent is removed (this last thing ! ... in the smd case only, otherwise t = 0.0_DP) ! k = broyden_ndim ! DO j = 1, k - 1 ! s(:,j) = s(:,j+1) - t(:) * ( s(:,j+1) .dot. t(:) ) ! END DO ! END IF ! s(:,k) = - J0 * g(:) ! IF ( k > 1 ) THEN ! DO j = 1, k - 2 ! s(:,k) = s(:,k) + ( s(:,j) .dot. s(:,k) ) / & ( s(:,j) .dot. s(:,j) ) * s(:,j+1) ! END DO ! coeff = ( s(:,k-1) .dot. ( s(:,k-1) - s(:,k) ) ) ! IF ( coeff > eps8 ) THEN ! s(:,k) = ( s(:,k-1) .dot. s(:,k-1) ) / coeff * s(:,k) ! END IF ! END IF ! IF ( ( s(:,k) .dot. g(:) ) > 0.0_DP ) THEN ! ! ... uphill step : history reset ! WRITE( UNIT = iunpath, & FMT = '(/,5X,"broyden uphill step : history is reset",/)' ) ! k = 1 ! s(:,:) = 0.0_DP s(:,k) = - J0 * g(:) ! END IF ! s_norm = norm( s(:,k) ) ! s(:,k) = s(:,k) / s_norm * MIN( s_norm, step_max ) ! ! ... save the file containing the history ! OPEN( UNIT = iunbroy, FILE = broy_file ) ! WRITE( UNIT = iunbroy, FMT = * ) nim WRITE( UNIT = iunbroy, FMT = * ) k WRITE( UNIT = iunbroy, FMT = * ) s ! CLOSE( UNIT = iunbroy ) ! ! ... broyden's step ! pos(:,1:nim) = pos(:,1:nim) + RESHAPE( s(:,k), (/ dim1, nim /) ) ! END IF ! CALL mp_bcast( pos, meta_ionode_id ) ! DEALLOCATE( t ) DEALLOCATE( g ) DEALLOCATE( s ) ! RETURN ! END SUBROUTINE broyden ! ! ... Broyden (rank one) optimisation - second attempt ! !----------------------------------------------------------------------- SUBROUTINE broyden2() !----------------------------------------------------------------------- #define DEBUG ! USE path_variables, ONLY : lsmd USE path_io_units_module, ONLY : broy_file, iunbroy, iunpath USE path_variables, ONLY : dim1, frozen, tangent, nim => num_of_images ! IMPLICIT NONE ! REAL(DP), PARAMETER :: step_max = 0.6_DP INTEGER, PARAMETER :: broyden_ndim = 5 ! REAL(DP), ALLOCATABLE :: dx(:,:), df(:,:), x(:), f(:) REAL(DP), ALLOCATABLE :: x_last(:), f_last(:), mask(:) REAL(DP), ALLOCATABLE :: b(:,:), c(:), work(:) INTEGER, ALLOCATABLE :: iwork(:) ! REAL(DP) :: x_norm, gamma0, J0, d2, d2_estimate LOGICAL :: exists INTEGER :: i, I_in, I_fin, info, j, niter ! ! ... starting guess for the inverse Jacobian ! J0 = ds*ds ! ALLOCATE( dx( dim1*nim, broyden_ndim ), df( dim1*nim, broyden_ndim ) ) ALLOCATE( x( dim1*nim ), f( dim1*nim ) ) ALLOCATE( x_last( dim1*nim ), f_last( dim1*nim ), mask( dim1*nim ) ) ! ! define mask to skip frozen images ! mask(:) = 0.0_DP DO i = 1, nim I_in = ( i - 1 )*dim1 + 1 I_fin = i * dim1 IF ( frozen(i) ) CYCLE mask(I_in:I_fin) = 1.0_DP END DO ! ! copy current positions and gradients in local arrays ! DO i = 1, nim I_in = ( i - 1 )*dim1 + 1 I_fin = i * dim1 f(I_in:I_fin) =-grad(:,i) x(I_in:I_fin) = pos(:,i) END DO ! ! only meta_ionode execute this part ! IF ( meta_ionode ) THEN d2 = DOT_PRODUCT( f(:),mask(:)*f(:) ) #ifdef DEBUG WRITE (*,*) " CURRENT ACTUAL D2 = ", d2 #endif ! ! ... open the file containing the broyden's history ! INQUIRE( FILE = broy_file, EXIST = exists ) ! IF ( exists ) THEN ! OPEN( UNIT = iunbroy, FILE = broy_file, STATUS = "OLD" ) ! READ( UNIT = iunbroy , FMT = * ) i ! ! ... if the number of images is changed the broyden history is ! ... reset and the algorithm starts from scratch ! exists = ( i == nim ) ! END IF ! IF ( exists ) THEN ! READ( UNIT = iunbroy , FMT = * ) niter, d2_estimate READ( UNIT = iunbroy , FMT = * ) df(:,:), dx(:,:) READ( UNIT = iunbroy , FMT = * ) f_last(:), x_last(:) niter = min(broyden_ndim, niter + 1) ! if (d2 > 2.0_DP * d2_estimate ) then #ifdef DEBUG write (*,*) " bad D2 estimate ... reset history " #endif niter = 1 df(:,:) = 0.0_DP dx(:,:) = 0.0_DP end if ELSE ! df(:,:) = 0.0_DP dx(:,:) = 0.0_DP niter = 0 ! END IF CLOSE( UNIT = iunbroy ) ! ! ... Broyden's update ! ! shift previous history, automatically discarding oldest iterations ! DO i = broyden_ndim, 2, -1 df(:,i) = df(:,i-1) dx(:,i) = dx(:,i-1) END DO ! ! and update it with last increment ! IF (niter > 0 ) THEN df(:,1) = f(:) - f_last(:) dx(:,1) = x(:) - x_last(:) END IF ! save for later use f_last(:) = f(:) x_last(:) = x(:) ! x(:) = 0.0_DP IF ( niter > 0 ) THEN ! ALLOCATE (b(niter,niter), c(niter), work(niter), iwork(niter)) ! ! create the matrix and the right-hand side of the liner system ! b(:,:) = 0.0_DP c(:) = 0.0_DP DO i = 1,niter DO j = 1,niter b(i,j) = DOT_PRODUCT(df(:,i),mask(:)*df(:,j)) END DO c(i) = DOT_PRODUCT(f(:),mask(:)*df(:,i)) END DO ! ! solve the linear system ! CALL DSYTRF( 'U', niter, b, niter, iwork, work, niter, info ) CALL errore( 'broyden', 'factorization', abs(info) ) CALL DSYTRI( 'U', niter, b, niter, iwork, work, info ) CALL errore( 'broyden', 'DSYTRI', abs(info) ) FORALL( i = 1:niter, j = 1:niter, j > i ) b(j,i) = b(i,j) ! ! set the best correction vector and gradient ! DO i = 1, niter gamma0 = DOT_PRODUCT( b(1:niter,i), c(1:niter) ) call DAXPY(dim1*nim, -gamma0, dx(:,i),1, x,1) call DAXPY(dim1*nim, -gamma0, df(:,i),1, f,1) END DO ! DEALLOCATE (b,c,work,iwork) ! END IF d2 = DOT_PRODUCT( f(:), mask(:)*f(:) ) x(:) = mask(:) * ( x(:) + J0 * f(:) ) x_norm = norm(x) x(:) = x_last(:) + x(:) * min ( 1.0_DP, step_max/x_norm) #ifdef DEBUG WRITE (*,*) " ESTIMATED NEXT D2 = ", d2 IF (x_norm > step_max) & WRITE (*,*) " x_norm = ", x_norm, step_max #endif ! ! ... save the file containing the history ! OPEN( UNIT = iunbroy, FILE = broy_file ) ! WRITE( UNIT = iunbroy, FMT = * ) nim WRITE( UNIT = iunbroy, FMT = * ) niter, d2 WRITE( UNIT = iunbroy, FMT = * ) df(:,:), dx(:,:) WRITE( UNIT = iunbroy, FMT = * ) f_last(:), x_last(:) ! CLOSE( UNIT = iunbroy ) ! ! ... copy broyden's step on the position array ... ! pos(:,1:nim) = RESHAPE( x, (/ dim1, nim /) ) ! END IF ! ! ... and distribute it ! CALL mp_bcast( pos, meta_ionode_id ) ! DEALLOCATE( df, dx, f, x, f_last, x_last, mask ) ! RETURN ! END SUBROUTINE broyden2 ! END MODULE path_opt_routines NEB/src/path_input_parameters_module.f900000644000700200004540000001270412053145633017541 0ustar marsamoscm! ! Copyright (C) 2002-2008 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! ! !=----------------------------------------------------------------------------=! ! MODULE path_input_parameters_module ! !=----------------------------------------------------------------------------=! ! ! this module contains ! 1) the definitions of all input parameters ! (both those read from namelists and those read from cards) ! 2) the definitions of all namelists ! 3) routines that allocate data needed in input ! Note that all values are initialized, but the default values should be ! set in the appropriate routines contained in module "read_namelists" ! The documentation of input variables can be found in Doc/INPUT_PW.* ! (for pw.x) or in Doc/INPUT_CP (for cp.x) ! Originally written by Carlo Cavazzoni for FPMD ! !=----------------------------------------------------------------------------=! ! USE kinds, ONLY : DP USE parameters, ONLY : nsx ! IMPLICIT NONE ! SAVE ! !=----------------------------------------------------------------------------=! ! BEGIN manual ! ! ! * DESCRIPTION OF THE INPUT FILE ! (to be given as standard input) ! ! The input file has the following layout: ! ! &PATH ! path_parameter_1, ! path_parameter_2, ! ....... ! path_parameter_Lastone ! / ! ATOMIC_SPECIES ! slabel_1 mass_1 pseudo_file_1 ! slabel_2 mass_2 pseudo_file_2 ! ..... ! PATH_ATOMIC_POSITIONS ! alabel_1 px_1 py_1 pz_1 ! alabel_2 px_2 py_2 pz_2 ! ..... ! CARD_3 ! .... ! CARD_N ! ! -- end of input file -- ! ! ... variables added for "path" calculations ! ! ! ... these are two auxiliary variables used in read_cards to ! ... distinguish among neb and smd done in the full phase-space ! ... or in the coarse-grained phase-space ! ! INTEGER :: n_inp_images INTEGER :: nat = 1 REAL(DP) :: alat ! CHARACTER(len=80) :: restart_mode ! specify how to start/restart the simulation CHARACTER(len=80) :: restart_mode_allowed(3) DATA restart_mode_allowed / 'from_scratch', 'restart', 'reset_counters' / ! LOGICAL :: full_phs_path_flag = .false. LOGICAL :: cg_phs_path_flag = .false. ! INTEGER :: nstep_path ! CHARACTER(len=80) :: string_method = 'neb' ! 'neb' traditional neb as described by Jonsson ! 'sm' something else CHARACTER(len=80) :: string_method_scheme_allowed(2) DATA string_method_scheme_allowed / 'neb', 'sm' / ! INTEGER :: input_images = 0 ! INTEGER :: num_of_images = 0 ! CHARACTER(len=80) :: CI_scheme = 'no-CI' ! CI_scheme = 'no-CI' | 'auto' | 'manual' ! set the Climbing Image scheme ! 'no-CI' Climbing Image is not used ! 'auto' Standard Climbing Image ! 'manual' the image is selected by hand ! CHARACTER(len=80) :: CI_scheme_allowed(3) DATA CI_scheme_allowed / 'no-CI', 'auto', 'manual' / ! LOGICAL :: first_last_opt = .false. LOGICAL :: use_masses = .false. LOGICAL :: use_freezing = .false. LOGICAL :: fixed_tan = .false. ! CHARACTER(len=80) :: opt_scheme = 'quick-min' ! minimization_scheme = 'quick-min' | 'damped-dyn' | ! 'mol-dyn' | 'sd' ! set the minimization algorithm ! 'quick-min' projected molecular dynamics ! 'sd' steepest descent ! 'broyden' broyden acceleration ! 'broyden2' broyden acceleration - better ? ! 'langevin' langevin dynamics ! CHARACTER(len=80) :: opt_scheme_allowed(5) DATA opt_scheme_allowed / 'quick-min', 'broyden', 'broyden2', 'sd', 'langevin' / ! REAL (DP) :: temp_req = 0.0_DP ! meaningful only when minimization_scheme = 'sim-annealing' REAL (DP) :: ds = 1.0_DP ! REAL (DP) :: k_max = 0.1_DP, k_min = 0.1_DP ! REAL (DP) :: path_thr = 0.05_DP ! ! NAMELIST / PATH / & restart_mode, & string_method, nstep_path, num_of_images, & CI_scheme, opt_scheme, use_masses, & first_last_opt, ds, k_max, k_min, temp_req, & path_thr, fixed_tan, use_freezing ! ! ATOMIC_POSITIONS ! ! ! ... variable added for NEB ( C.S. 17/10/2003 ) ! REAL(DP), ALLOCATABLE :: pos(:,:) ! INTEGER, ALLOCATABLE :: typ(:) ! ! ! CLIMBING_IMAGES ! ! ! ... variable added for NEB ( C.S. 20/11/2003 ) ! LOGICAL, ALLOCATABLE :: climbing( : ) ! ---------------------------------------------------------------------- CONTAINS SUBROUTINE allocate_path_input_ions( num_of_images ) ! INTEGER, INTENT(in) :: num_of_images ! IF ( allocated( pos ) ) DEALLOCATE( pos ) IF ( allocated( typ ) ) DEALLOCATE( typ ) ! ALLOCATE( pos( 3*nat, num_of_images ) ) ALLOCATE( typ( nat ) ) ! pos(:,:) = 0.0 ! RETURN ! END SUBROUTINE allocate_path_input_ions ! SUBROUTINE deallocate_path_input_ions() ! IF ( allocated( pos ) ) DEALLOCATE( pos ) IF ( allocated( typ ) ) DEALLOCATE( typ ) ! IF ( allocated( climbing ) ) DEALLOCATE( climbing ) ! RETURN ! END SUBROUTINE deallocate_path_input_ions ! !=----------------------------------------------------------------------------=! ! END MODULE path_input_parameters_module ! !=----------------------------------------------------------------------------=! NEB/src/path_read_namelists_module.f900000644000700200004540000001612512053145633017152 0ustar marsamoscm! ! Copyright (C) 2002-2008 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! !---------------------------------------------------------------------------- MODULE path_read_namelists_module !---------------------------------------------------------------------------- ! ! ... this module handles the reading of input namelists ! ... written by: Carlo Cavazzoni ! -------------------------------------------------- ! USE kinds, ONLY : DP USE path_input_parameters_module ! IMPLICIT NONE ! SAVE ! PRIVATE ! PUBLIC :: path_read_namelist ! ! ... modules needed by read_xml.f90 ! ! ---------------------------------------------- ! CONTAINS ! !=----------------------------------------------------------------------=! ! ! Variables initialization for Namelist PATH ! !=----------------------------------------------------------------------=! ! !----------------------------------------------------------------------- SUBROUTINE path_defaults( ) !----------------------------------------------------------------------- ! USE path_input_parameters_module ! IMPLICIT NONE ! ! ! ... ( 'full' | 'coarse-grained' ) ! ! ... defaults for "path" optimisations variables ! restart_mode = 'from_scratch' string_method = 'neb' num_of_images = 0 first_last_opt = .FALSE. use_masses = .FALSE. use_freezing = .FALSE. opt_scheme = 'quick-min' temp_req = 0.0_DP ds = 1.0_DP path_thr = 0.05_DP CI_scheme = 'no-CI' k_max = 0.1_DP k_min = 0.1_DP fixed_tan = .FALSE. nstep_path = 1 ! ! for reading ions namelist we need to set calculation=relax ! RETURN ! END SUBROUTINE ! !=----------------------------------------------------------------------=! ! ! Broadcast variables values for Namelist NEB ! !=----------------------------------------------------------------------=! ! !----------------------------------------------------------------------- SUBROUTINE path_bcast() !----------------------------------------------------------------------- ! USE io_global, ONLY: ionode_id USE mp, ONLY: mp_bcast USE path_input_parameters_module ! IMPLICIT NONE ! ! ... "path" variables broadcast ! CALL mp_bcast ( restart_mode, ionode_id ) CALL mp_bcast ( string_method, ionode_id ) CALL mp_bcast( num_of_images, ionode_id ) CALL mp_bcast( first_last_opt, ionode_id ) CALL mp_bcast( use_masses, ionode_id ) CALL mp_bcast( use_freezing, ionode_id ) CALL mp_bcast( fixed_tan, ionode_id ) CALL mp_bcast( CI_scheme, ionode_id ) CALL mp_bcast( opt_scheme, ionode_id ) CALL mp_bcast( temp_req, ionode_id ) CALL mp_bcast( ds, ionode_id ) CALL mp_bcast( k_max, ionode_id ) CALL mp_bcast( k_min, ionode_id ) CALL mp_bcast( path_thr, ionode_id ) CALL mp_bcast( nstep_path, ionode_id ) ! RETURN ! END SUBROUTINE ! ! !----------------------------------------------------------------------- SUBROUTINE path_checkin( ) !----------------------------------------------------------------------- ! USE path_input_parameters_module ! IMPLICIT NONE ! CHARACTER(LEN=20) :: sub_name = ' path_checkin ' INTEGER :: i LOGICAL :: allowed = .FALSE. ! ! ! ... general "path" variables checkin IF ( ds < 0.0_DP ) & CALL errore( sub_name,' ds out of range ',1) IF ( temp_req < 0.0_DP ) & CALL errore( sub_name,' temp_req out of range ',1) ! allowed = .FALSE. DO i = 1, SIZE( opt_scheme_allowed ) IF ( TRIM( opt_scheme ) == & opt_scheme_allowed(i) ) allowed = .TRUE. END DO IF ( .NOT. allowed ) & CALL errore( sub_name, ' opt_scheme '''// & & TRIM( opt_scheme )//''' not allowed ', 1 ) ! ! ! ... NEB(SM) specific checkin ! IF ( k_max < 0.0_DP ) CALL errore( sub_name, 'k_max out of range', 1 ) IF ( k_min < 0.0_DP ) CALL errore( sub_name, 'k_min out of range', 1 ) IF ( k_max < k_min ) CALL errore( sub_name, 'k_max < k_min', 1 ) ! ! IF ( nstep_path < 1 ) CALL errore ( sub_name, 'step_path out of range', 1 ) ! allowed = .FALSE. DO i = 1, SIZE( CI_scheme_allowed ) IF ( TRIM( CI_scheme ) == CI_scheme_allowed(i) ) allowed = .TRUE. END DO ! IF ( .NOT. allowed ) & CALL errore( sub_name, ' CI_scheme ''' // & & TRIM( CI_scheme ) //''' not allowed ', 1 ) ! RETURN ! END SUBROUTINE ! !=----------------------------------------------------------------------=! ! ! Namelist parsing main routine ! !=----------------------------------------------------------------------=! ! !----------------------------------------------------------------------- SUBROUTINE path_read_namelist(unit) !----------------------------------------------------------------------- ! ! this routine reads data from standard input and puts them into ! module-scope variables (accessible from other routines by including ! this module, or the one that contains them) ! ---------------------------------------------- ! ! ... declare modules ! USE io_global, ONLY : ionode, ionode_id USE mp, ONLY : mp_bcast ! IMPLICIT NONE ! ! ... declare variables ! INTEGER, intent(in) :: unit ! ! ! ... declare other variables ! INTEGER :: ios ! ! ... end of declarations ! ! ---------------------------------------------- ! ! ! ... default settings for all namelists ! CALL path_defaults( ) ! ! ... Here start reading standard input file ! ! ... PATH namelist ! ios = 0 IF ( ionode ) THEN ! READ( unit, path, iostat = ios ) ! END IF CALL mp_bcast( ios, ionode_id ) IF( ios /= 0 ) THEN CALL errore( ' path_read_namelists ', & & ' reading namelist path ', ABS(ios) ) END IF ! CALL path_bcast( ) CALL path_checkin( ) ! RETURN ! END SUBROUTINE path_read_namelist ! END MODULE path_read_namelists_module NEB/src/path_variables.f900000644000700200004540000001474212053145633014566 0ustar marsamoscm! ! Copyright (C) 2003-2006 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! !-------------------------------------------------------------------------- MODULE path_variables !--------------------------------------------------------------------------- ! ! ... This module contains all variables needed by path optimisations ! ! ... Written by Carlo Sbraccia ( 2003-2006 ) ! USE kinds, ONLY : DP ! IMPLICIT NONE ! SAVE ! ! ... "general" variables : ! LOGICAL :: lneb, lsmd ! LOGICAL :: restart ! LOGICAL :: & conv_path ! .TRUE. when "path" convergence has been ! achieved LOGICAL :: & first_last_opt, &! if .TRUE. the first and the last image ! are optimised too. use_masses, &! if .TRUE. mass weighted coordinates are ! used fixed_tan, &! if. TRUE. the projection is done using the ! tangent of the average path use_freezing, &! if .TRUE. images are optimised according ! to their error (see frozen array) tune_load_balance ! if .TRUE. the load balance for image ! parallelisation is tuned at ! runtime INTEGER :: & dim1, &! dimension of the configuration space num_of_images, &! number of images deg_of_freedom, &! number of degrees of freedom ! ( dim1 - #( of fixed coordinates ) ) pending_image ! last image for which scf has not been ! achieved REAL(DP) :: & ds, &! the optimization step path_thr, &! convergence threshold temp_req, &! required temperature activation_energy, &! forward activatation energy err_max, &! the largest error path_length ! length of the path LOGICAL :: & lsteep_des = .FALSE., &! .TRUE. if opt_scheme = "sd" lquick_min = .FALSE., &! .TRUE. if opt_scheme = "quick-min" lbroyden = .FALSE., &! .TRUE. if opt_scheme = "broyden" lbroyden2 = .FALSE., &! .TRUE. if opt_scheme = "broyden2" llangevin = .FALSE. ! .TRUE. if opt_scheme = "langevin" INTEGER :: & istep_path, &! iteration in the optimization procedure nstep_path ! maximum number of iterations ! ! ... "general" real space arrays ! REAL(DP), ALLOCATABLE :: & pes(:), &! the potential enrgy along the path error(:) ! the error from the true MEP REAL(DP), ALLOCATABLE :: & pos(:,:), &! reaction path grad_pes(:,:), &! gradients acting on the path tangent(:,:) ! tangent to the path INTEGER, ALLOCATABLE :: & fix_atom_pos(:,:) ! 0 or 1, if 0 fixed atom LOGICAL, ALLOCATABLE :: & frozen(:) ! .TRUE. if the image or mode has not ! to be optimized ! ! ... "neb specific" variables : ! LOGICAL, ALLOCATABLE :: & climbing(:) ! .TRUE. if the image is required to climb CHARACTER(LEN=20) :: & CI_scheme ! Climbing Image scheme INTEGER :: & Emax_index ! index of the image with the highest energy ! REAL (DP) :: & k_max, &! k_min, &! Emax, &! Emin ! ! ! ... real space arrays ! REAL(DP), ALLOCATABLE :: & elastic_grad(:), &! elastic part of the gradients mass(:), &! atomic masses k(:) ! elastic constants REAL(DP), ALLOCATABLE :: & posold(:,:), &! old positions (for the quick-min) grad(:,:), &! lang(:,:) ! langevin random force ! CONTAINS ! !---------------------------------------------------------------------- SUBROUTINE path_allocation() !---------------------------------------------------------------------- ! IMPLICIT NONE ! ALLOCATE( pos( dim1, num_of_images ) ) ! ALLOCATE( posold( dim1, num_of_images ) ) ALLOCATE( grad( dim1, num_of_images ) ) ALLOCATE( grad_pes( dim1, num_of_images ) ) ALLOCATE( tangent( dim1, num_of_images ) ) ! ALLOCATE( pes( num_of_images ) ) ALLOCATE( k( num_of_images ) ) ALLOCATE( error( num_of_images ) ) ALLOCATE( climbing( num_of_images ) ) ALLOCATE( frozen( num_of_images ) ) ! ALLOCATE( mass( dim1 ) ) ALLOCATE( elastic_grad( dim1 ) ) ! ALLOCATE( lang( dim1, num_of_images ) ) ! END SUBROUTINE path_allocation ! ! !---------------------------------------------------------------------- SUBROUTINE path_deallocation() !---------------------------------------------------------------------- ! IMPLICIT NONE ! IF ( ALLOCATED( pos ) ) DEALLOCATE( pos ) IF ( ALLOCATED( posold ) ) DEALLOCATE( posold ) IF ( ALLOCATED( grad ) ) DEALLOCATE( grad ) IF ( ALLOCATED( pes ) ) DEALLOCATE( pes ) IF ( ALLOCATED( grad_pes ) ) DEALLOCATE( grad_pes ) IF ( ALLOCATED( k ) ) DEALLOCATE( k ) IF ( ALLOCATED( mass ) ) DEALLOCATE( mass ) IF ( ALLOCATED( elastic_grad ) ) DEALLOCATE( elastic_grad ) IF ( ALLOCATED( tangent ) ) DEALLOCATE( tangent ) IF ( ALLOCATED( error ) ) DEALLOCATE( error ) IF ( ALLOCATED( climbing ) ) DEALLOCATE( climbing ) IF ( ALLOCATED( frozen ) ) DEALLOCATE( frozen ) IF ( ALLOCATED( lang ) ) DEALLOCATE( lang ) ! IF ( ALLOCATED( fix_atom_pos ) ) DEALLOCATE( fix_atom_pos ) ! END SUBROUTINE path_deallocation ! END MODULE path_variables NEB/src/path_read_cards_module.f900000644000700200004540000001030412053145633016240 0ustar marsamoscm! ! Copyright (C) 2010 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! !--------------------------------------------------------------------------- MODULE path_read_cards_module !--------------------------------------------------------------------------- ! ! ... This module handles the reading of cards from standard input ! ... Written by Carlo Cavazzoni and modified for "path" implementation ! ... by Carlo Sbraccia ! USE kinds, ONLY : DP USE constants, ONLY : angstrom_au USE parser, ONLY : parse_unit,field_count, read_line, get_field USE io_global, ONLY : meta_ionode ! USE path_input_parameters_module ! IMPLICIT NONE ! SAVE ! PRIVATE ! PUBLIC :: path_read_cards ! ! ... end of module-scope declarations ! ! ---------------------------------------------- ! CONTAINS ! ! ... Read CARDS .... ! ! ... subroutines ! !---------------------------------------------------------------------- ! !---------------------------------------------------------------------- SUBROUTINE path_read_cards(unit) !---------------------------------------------------------------------- ! IMPLICIT NONE ! INTEGER, INTENT(IN) :: unit ! CHARACTER(len=256) :: input_line CHARACTER(len=80) :: card CHARACTER(len=1), EXTERNAL :: capital LOGICAL :: tend INTEGER :: i ! ! parse_unit = unit ! 100 CALL read_line( input_line, end_of_file=tend ) ! IF( tend ) GOTO 120 IF( input_line == ' ' .or. input_line(1:1) == '#' ) GOTO 100 ! READ (input_line, *) card ! DO i = 1, len_trim( input_line ) input_line( i : i ) = capital( input_line( i : i ) ) ENDDO ! IF( trim(card) =='CLIMBING_IMAGES' ) THEN ! CALL card_climbing_images( input_line ) ! ELSE ! IF ( meta_ionode ) & WRITE( 0,'(A)') 'Warning: card '//trim(input_line)//' ignored' ! ENDIF ! ! ... END OF LOOP ... ! ! GOTO 100 ! 120 CONTINUE ! RETURN ! END SUBROUTINE path_read_cards ! ! ... Description of the allowed input CARDS ! ! !------------------------------------------------------------------------ ! BEGIN manual !---------------------------------------------------------------------- ! ! CLIMBING_IMAGES ! ! Needed to explicitly specify which images have to climb ! ! Syntax: ! ! CLIMBING_IMAGES ! index1, ..., indexN ! ! Where: ! ! index1, ..., indexN are indices of the images that have to climb ! !---------------------------------------------------------------------- ! END manual !------------------------------------------------------------------------ ! SUBROUTINE card_climbing_images( input_line ) ! IMPLICIT NONE ! CHARACTER(len=256) :: input_line LOGICAL, SAVE :: tread = .false. LOGICAL, EXTERNAL :: matches ! INTEGER :: i CHARACTER(len=5) :: i_char ! CHARACTER(len=6), EXTERNAL :: int_to_char ! ! IF ( tread ) & CALL errore( ' card_climbing_images ', ' two occurrences', 2 ) ! IF ( CI_scheme == 'manual' ) THEN ! IF ( allocated( climbing ) ) DEALLOCATE( climbing ) ! ALLOCATE( climbing( num_of_images ) ) ! climbing(:) = .false. ! CALL read_line( input_line ) ! DO i = 1, num_of_images ! i_char = int_to_char( i ) ! IF ( matches( ' ' // trim( i_char ) // ',' , & ' ' // trim( input_line ) // ',' ) ) & climbing(i) = .true. ! ENDDO ! ENDIF ! tread = .true. ! RETURN ! END SUBROUTINE card_climbing_images ! END MODULE path_read_cards_module NEB/src/engine_to_path_nat.f900000644000700200004540000000124612053145633015422 0ustar marsamoscm! ! Copyright (C) 2002-2009 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! ! !---------------------------------------------------------------------------- SUBROUTINE engine_to_path_nat() !----------------------------------------------------------------------------- ! ! USE kinds, ONLY : DP ! USE input_parameters, ONLY : nat USE path_input_parameters_module, ONLY : nat_ => nat ! ! IMPLICIT NONE ! nat_ = nat ! ! RETURN ! END SUBROUTINE engine_to_path_nat ! NEB/src/compute_scf.f900000644000700200004540000002673212053145633014113 0ustar marsamoscm! ! Copyright (C) 2002-2009 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! ! !---------------------------------------------------------------------------- SUBROUTINE compute_scf( fii, lii, stat ) !---------------------------------------------------------------------------- ! ! ... this subroutine is the main scf-driver for all "path" calculations ! ... ( called by Modules/path_base.f90/born_oppenheimer() subroutine ) ! ! ... for each image in the path, it performs the self-consistent loop ! ... computing the energy and the forces ! ! ... Written by Carlo Sbraccia (2003-2006) ! USE basis, ONLY : starting_wfc, starting_pot USE kinds, ONLY : DP USE constants, ONLY : e2 USE control_flags, ONLY : conv_elec, istep, history, pot_order USE vlocal, ONLY : strf USE cell_base, ONLY : bg, alat USE gvect, ONLY : ngm, g, eigts1, eigts2, eigts3 USE fft_base, ONLY : dfftp USE ions_base, ONLY : tau, nat, nsp, ityp USE ener, ONLY : etot USE force_mod, ONLY : force USE io_files, ONLY : prefix, tmp_dir, iunupdate, seqopn, & exit_file, iunexit, delete_if_present USE path_io_units_module, ONLY : iunpath USE path_formats, ONLY : scf_fmt, scf_fmt_para USE path_variables, ONLY : pos, pes, grad_pes, dim1, pending_image, & istep_path, frozen, num_of_images, & first_last_opt USE io_global, ONLY : stdout, ionode, ionode_id, meta_ionode USE mp_image_global_module, ONLY : inter_image_comm, intra_image_comm, & my_image_id, nimage, root_image USE mp, ONLY : mp_bcast, mp_barrier, mp_sum, mp_min USE path_io_routines, ONLY : new_image_init, get_new_image, & stop_other_images ! IMPLICIT NONE ! INTEGER, INTENT(IN) :: fii, lii ! indexes to first and last images LOGICAL, INTENT(OUT) :: stat ! INTEGER :: fii_, lii_ ! local copies of fii and lii INTEGER :: image, istat REAL(DP) :: tcpu CHARACTER (LEN=256) :: tmp_dir_saved LOGICAL :: file_exists, opnd REAL(DP), ALLOCATABLE :: tauold(:,:,:) ! previous positions of atoms (needed by extrapolation) ! CHARACTER(LEN=6), EXTERNAL :: int_to_char ! ! fii_ = fii lii_ = lii ! istep = istep_path istat = 0 ! CALL flush_unit( iunpath ) ! ALLOCATE( tauold( 3, nat, 3 ) ) ! tmp_dir_saved = tmp_dir ! IF ( nimage > 1 ) THEN ! ! ... vectors pes and grad_pes are initalized to zero for all images on ! ... all nodes: this is needed for the final mp_sum() ! IF ( my_image_id == root_image ) THEN ! FORALL( image = fii:lii, .NOT.frozen(image) ) ! pes(image) = 0.D0 grad_pes(:,image) = 0.D0 ! END FORALL ! ELSE ! pes(fii:lii) = 0.D0 grad_pes(:,fii:lii) = 0.D0 ! END IF ! END IF ! ! ... all processes are syncronized (needed to have a readable output) ! CALL mp_barrier() ! IF ( nimage > 1 .AND. .NOT.first_last_opt ) THEN ! ! ... self-consistency on the first and last images is done separately ! IF ( fii == 1 ) THEN ! IF ( my_image_id == root_image ) THEN ! CALL do_scf( 1, istat ) ! IF ( istat /= 0 ) GOTO 1 ! END IF ! fii_ = 2 ! END IF IF ( lii == num_of_images ) THEN ! IF ( my_image_id == root_image + 1 ) THEN ! CALL do_scf( num_of_images, istat ) ! IF ( istat /= 0 ) GOTO 1 ! END IF ! lii_ = lii - 1 ! END IF ! END IF ! ! ... only the first cpu initializes the file needed by parallelization ! ... among images ! IF ( meta_ionode ) CALL new_image_init( fii_, tmp_dir_saved ) ! image = fii_ + my_image_id ! scf_loop: DO ! ! ... exit if available images are finished ! IF ( image > lii_ ) EXIT scf_loop ! pending_image = image ! CALL do_scf( image, istat ) ! IF ( istat /= 0 ) GOTO 1 ! ! ... the new image is obtained (by ionode only) ! CALL get_new_image( image, tmp_dir_saved ) ! CALL mp_bcast( image, ionode_id, intra_image_comm ) ! END DO scf_loop ! ! ... after the first call to compute_scf the input values of startingpot ! ... and startingwfc are both set to 'file' ! starting_pot = 'file' starting_wfc = 'file' ! ! ... finalization of the job (this point is also reached in case of error ! ... condition) ! 1 CALL mp_barrier() ! DEALLOCATE( tauold ) ! IF ( nimage > 1 ) THEN ! ! ... pes and grad_pes are communicated among "image" pools ! CALL mp_sum( pes(fii:lii), inter_image_comm ) CALL mp_sum( grad_pes(:,fii:lii), inter_image_comm ) CALL mp_sum( istat, inter_image_comm ) ! END IF ! ! ... global status is computed here ! IF ( istat == 0 ) THEN ! stat = .TRUE. ! pending_image = 0 ! ELSE ! stat = .FALSE. ! IF ( nimage > 1 ) THEN ! CALL mp_min( pending_image, inter_image_comm ) ! IF ( meta_ionode ) CALL delete_if_present( exit_file ) ! END IF ! IF ( meta_ionode ) THEN ! ! ... some image didn't converge: extrapolation is no longer ! ... possible, files are removed ! WRITE( UNIT = iunpath, & FMT = '(/,5X,"cleaning-up extrapolation files"/)' ) ! DO image = pending_image, lii ! tmp_dir = TRIM( tmp_dir_saved ) // TRIM( prefix ) // "_" // & TRIM( int_to_char( image ) ) // "/" ! CALL delete_if_present( TRIM( tmp_dir ) // & TRIM( prefix ) // '.update' ) ! END DO ! END IF ! END IF ! tmp_dir = tmp_dir_saved ! RETURN ! CONTAINS ! !----------------------------------------------------------------------- SUBROUTINE do_scf( image, istat ) !----------------------------------------------------------------------- ! USE input_parameters, ONLY : diago_thr_init USE control_flags, ONLY : ethr ! IMPLICIT NONE ! INTEGER, INTENT(IN) :: image INTEGER, INTENT(INOUT) :: istat ! REAL(DP), EXTERNAL :: get_clock ! ! ... self-consistency ( for non-frozen images only ) ! IF ( frozen(image) ) RETURN ! CALL clean_pw( .FALSE. ) ! tcpu = get_clock( 'NEB' ) ! IF ( nimage > 1 ) THEN ! WRITE( UNIT = iunpath, FMT = scf_fmt_para ) my_image_id, tcpu, image ! ELSE ! WRITE( UNIT = iunpath, FMT = scf_fmt ) tcpu, image ! END IF ! tmp_dir = TRIM( tmp_dir_saved ) // TRIM( prefix ) // "_" // & TRIM( int_to_char( image ) ) // "/" ! ! ... unit stdout is connected to the appropriate file ! IF ( ionode ) THEN ! INQUIRE( UNIT = stdout, OPENED = opnd ) IF ( opnd ) CLOSE( UNIT = stdout ) OPEN( UNIT = stdout, FILE = TRIM( tmp_dir ) // 'PW.out', & STATUS = 'UNKNOWN', POSITION = 'APPEND' ) ! END IF ! ! ... tau is in alat units ( pos is in bohr ) ! tau = RESHAPE( pos(:,image), SHAPE( tau ) ) / alat ! WRITE( stdout, '(/,5X,"coordinates at iteration ",I3,/)' ) istep ! CALL output_tau( .FALSE., .FALSE. ) ! ! ... initialization of the scf calculation ! CALL start_clock('PWSCF') CALL setup () CALL init_run() ! IF ( ionode ) THEN ! ! ... the file containing old positions is opened ! ... ( needed for extrapolation ) ! CALL seqopn( iunupdate, 'update', 'FORMATTED', file_exists ) ! IF ( file_exists ) THEN ! READ( UNIT = iunupdate, FMT = * ) history READ( UNIT = iunupdate, FMT = * ) tauold ! ELSE ! history = 0 tauold = 0.D0 ! WRITE( UNIT = iunupdate, FMT = * ) history WRITE( UNIT = iunupdate, FMT = * ) tauold ! END IF ! CLOSE( UNIT = iunupdate, STATUS = 'KEEP' ) ! END IF ! CALL mp_bcast( history, ionode_id, intra_image_comm ) CALL mp_bcast( tauold, ionode_id, intra_image_comm ) ! IF ( history > 0 ) THEN ! ! ... potential and wavefunctions are extrapolated only if ! ... we are starting a new self-consistency ( scf on the ! ... previous image was achieved ) ! IF ( pot_order > 0 ) THEN ! ! ... structure factors of the old positions are computed ! ... (needed for the old atomic charge) ! CALL struc_fact( nat, tauold(:,:,1), nsp, ityp, ngm, g, bg, & dfftp%nr1, dfftp%nr2, dfftp%nr3, strf, eigts1, eigts2, eigts3 ) ! END IF ! CALL update_pot() ! END IF ! ! ... self-consistency loop ! CALL electrons() ! CALL punch( 'all' ) ! ! ... scf convergence is checked here ! IF ( .NOT.conv_elec ) THEN ! istat = 1 ! WRITE( UNIT = iunpath, & FMT = '(/,5X,"WARNING : scf convergence ", & & "NOT achieved on image ",I3)' ) image ! ! ... in case of parallelization on images a stop signal ! ... is sent via the "EXIT" file ! IF ( nimage > 1 ) CALL stop_other_images() ! RETURN ! END IF ! ! ... self-consistent forces ! CALL forces() ! ! ... energy is converted from rydberg to hartree ! pes(image) = etot / e2 ! ! ... gradients are converted from rydberg/bohr to hartree/bohr ! grad_pes(:,image) = - RESHAPE( force, (/ dim1 /) ) / e2 ! IF ( ionode ) THEN ! ! ... save the previous two steps ! ... ( a total of three ionic steps is saved ) ! tauold(:,:,3) = tauold(:,:,2) tauold(:,:,2) = tauold(:,:,1) tauold(:,:,1) = tau(:,:) ! history = MIN( 3, ( history + 1 ) ) ! CALL seqopn( iunupdate, 'update', 'FORMATTED', file_exists ) ! WRITE( UNIT = iunupdate, FMT = * ) history WRITE( UNIT = iunupdate, FMT = * ) tauold ! CLOSE( UNIT = iunupdate, STATUS = 'KEEP' ) ! END IF ! ! ... input values are restored at the end of each iteration ! ... ( they are modified by init_run ) - OBSOLETE? ! ! starting_pot = 'atomic' ! starting_wfc = 'file' ! ethr = diago_thr_init ! CALL close_files(.FALSE.) ! RETURN ! END SUBROUTINE do_scf ! END SUBROUTINE compute_scf NEB/src/make.depend0000644000700200004540000001434312053145633013355 0ustar marsamoscmcompute_scf.o : ../../Modules/cell_base.o compute_scf.o : ../../Modules/constants.o compute_scf.o : ../../Modules/control_flags.o compute_scf.o : ../../Modules/fft_base.o compute_scf.o : ../../Modules/input_parameters.o compute_scf.o : ../../Modules/io_files.o compute_scf.o : ../../Modules/io_global.o compute_scf.o : ../../Modules/ions_base.o compute_scf.o : ../../Modules/kind.o compute_scf.o : ../../Modules/mp.o compute_scf.o : ../../Modules/mp_image_global_module.o compute_scf.o : ../../Modules/recvec.o compute_scf.o : ../../PW/src/pwcom.o compute_scf.o : path_formats.o compute_scf.o : path_io_routines.o compute_scf.o : path_io_units_module.o compute_scf.o : path_variables.o engine_to_path_alat.o : ../../Modules/cell_base.o engine_to_path_alat.o : ../../Modules/kind.o engine_to_path_alat.o : path_input_parameters_module.o engine_to_path_fix_atom_pos.o : ../../Modules/ions_base.o engine_to_path_fix_atom_pos.o : ../../Modules/kind.o engine_to_path_fix_atom_pos.o : path_input_parameters_module.o engine_to_path_fix_atom_pos.o : path_variables.o engine_to_path_nat.o : ../../Modules/input_parameters.o engine_to_path_nat.o : ../../Modules/kind.o engine_to_path_nat.o : path_input_parameters_module.o engine_to_path_pos.o : ../../Modules/cell_base.o engine_to_path_pos.o : ../../Modules/ions_base.o engine_to_path_pos.o : ../../Modules/kind.o engine_to_path_pos.o : path_input_parameters_module.o input.o : ../../Modules/constants.o input.o : ../../Modules/io_files.o input.o : ../../Modules/io_global.o input.o : ../../Modules/kind.o input.o : ../../Modules/mp.o input.o : ../../Modules/mp_image_global_module.o input.o : ../../Modules/wrappers.o input.o : ../../Modules/xml_io_base.o input.o : path_input_parameters_module.o input.o : path_variables.o neb.o : ../../Modules/check_stop.o neb.o : ../../Modules/control_flags.o neb.o : ../../Modules/environment.o neb.o : ../../Modules/image_io_routines.o neb.o : ../../Modules/io_global.o neb.o : ../../Modules/mp_global.o neb.o : ../../Modules/mp_image_global_module.o neb.o : ../../Modules/open_close_input_file.o neb.o : ../../Modules/parameters.o neb.o : ../../Modules/read_cards.o neb.o : ../../Modules/read_namelists.o neb.o : ../../Modules/read_xml.o neb.o : ../../iotk/src/iotk_module.o neb.o : path_base.o neb.o : path_input_parameters_module.o neb.o : path_io_routines.o neb.o : path_io_units_module.o neb.o : path_read_cards_module.o neb.o : path_read_namelists_module.o neb.o : path_variables.o path_base.o : ../../Modules/basic_algebra_routines.o path_base.o : ../../Modules/constants.o path_base.o : ../../Modules/control_flags.o path_base.o : ../../Modules/io_files.o path_base.o : ../../Modules/io_global.o path_base.o : ../../Modules/ions_base.o path_base.o : ../../Modules/kind.o path_base.o : ../../Modules/mp.o path_base.o : ../../Modules/mp_image_global_module.o path_base.o : ../../Modules/random_numbers.o path_base.o : path_formats.o path_base.o : path_input_parameters_module.o path_base.o : path_io_routines.o path_base.o : path_io_units_module.o path_base.o : path_opt_routines.o path_base.o : path_reparametrisation.o path_base.o : path_variables.o path_gen_inputs.o : ../../Modules/mp_global.o path_input_parameters_module.o : ../../Modules/kind.o path_input_parameters_module.o : ../../Modules/parameters.o path_interpolation.o : ../../Modules/basic_algebra_routines.o path_interpolation.o : ../../Modules/cell_base.o path_interpolation.o : ../../Modules/constants.o path_interpolation.o : ../../Modules/kind.o path_interpolation.o : ../../Modules/splinelib.o path_interpolation.o : path_formats.o path_io_routines.o : ../../Modules/basic_algebra_routines.o path_io_routines.o : ../../Modules/cell_base.o path_io_routines.o : ../../Modules/constants.o path_io_routines.o : ../../Modules/control_flags.o path_io_routines.o : ../../Modules/io_files.o path_io_routines.o : ../../Modules/io_global.o path_io_routines.o : ../../Modules/ions_base.o path_io_routines.o : ../../Modules/kind.o path_io_routines.o : ../../Modules/mp.o path_io_routines.o : ../../Modules/mp_image_global_module.o path_io_routines.o : path_formats.o path_io_routines.o : path_input_parameters_module.o path_io_routines.o : path_io_units_module.o path_io_routines.o : path_reparametrisation.o path_io_routines.o : path_variables.o path_io_tools.o : ../../Modules/io_global.o path_io_tools.o : ../../Modules/kind.o path_opt_routines.o : ../../Modules/basic_algebra_routines.o path_opt_routines.o : ../../Modules/constants.o path_opt_routines.o : ../../Modules/io_global.o path_opt_routines.o : ../../Modules/kind.o path_opt_routines.o : ../../Modules/mp.o path_opt_routines.o : path_io_units_module.o path_opt_routines.o : path_variables.o path_read_cards_module.o : ../../Modules/constants.o path_read_cards_module.o : ../../Modules/io_global.o path_read_cards_module.o : ../../Modules/kind.o path_read_cards_module.o : ../../Modules/parser.o path_read_cards_module.o : path_input_parameters_module.o path_read_namelists_module.o : ../../Modules/io_global.o path_read_namelists_module.o : ../../Modules/kind.o path_read_namelists_module.o : ../../Modules/mp.o path_read_namelists_module.o : path_input_parameters_module.o path_reparametrisation.o : ../../Modules/basic_algebra_routines.o path_reparametrisation.o : ../../Modules/io_global.o path_reparametrisation.o : ../../Modules/kind.o path_reparametrisation.o : ../../Modules/mp.o path_reparametrisation.o : ../../Modules/splinelib.o path_reparametrisation.o : path_io_units_module.o path_reparametrisation.o : path_variables.o path_to_engine_fix_atom_pos.o : ../../Modules/ions_base.o path_to_engine_fix_atom_pos.o : ../../Modules/kind.o path_to_engine_fix_atom_pos.o : path_input_parameters_module.o path_to_engine_fix_atom_pos.o : path_variables.o path_to_engine_mp.o : ../../Modules/kind.o path_to_engine_mp.o : ../../Modules/mp_global.o path_to_engine_mp.o : ../../Modules/mp_image_global_module.o path_variables.o : ../../Modules/kind.o set_defaults.o : ../../Modules/input_parameters.o set_defaults.o : ../../Modules/io_global.o stop_run_path.o : ../../Modules/environment.o stop_run_path.o : ../../Modules/image_io_routines.o stop_run_path.o : ../../Modules/io_global.o stop_run_path.o : ../../Modules/mp_global.o stop_run_path.o : ../../Modules/mp_image_global_module.o stop_run_path.o : path_io_units_module.o stop_run_path.o : path_variables.o NEB/src/path_reparametrisation.f900000644000700200004540000001736112053145633016347 0ustar marsamoscm! ! Copyright (C) 2003-2006 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! ! !--------------------------------------------------------------------------- MODULE path_reparametrisation !--------------------------------------------------------------------------- ! ! ... This module contains all subroutines and functions needed for ! ... the reparametrisation of the path in the string method ! ! ... Written by Carlo Sbraccia ( 2003-2006 ) ! USE kinds, ONLY : DP USE path_io_units_module, ONLY : iunpath USE io_global, ONLY : meta_ionode, meta_ionode_id USE mp, ONLY : mp_bcast ! USE basic_algebra_routines ! PRIVATE ! PUBLIC :: reparametrise, spline_interpolation ! INTERFACE spline_interpolation ! MODULE PROCEDURE spline_interpolation_1D, spline_interpolation_2D ! END INTERFACE ! CONTAINS ! ! ... reparametrisation routines in real space ! !------------------------------------------------------------------------ SUBROUTINE reparametrise() !------------------------------------------------------------------------ ! USE path_variables, ONLY : pos USE path_variables, ONLY : nim => num_of_images USE path_variables, ONLY : climbing ! IMPLICIT NONE ! INTEGER :: i, ni, nf ! ! IF ( meta_ionode ) THEN ! IF ( ANY( climbing(:) ) ) THEN ! ni = 1 ! DO i = 2, nim ! IF ( .NOT. climbing(i) ) CYCLE ! nf = i ! CALL spline_interpolation( pos, ni, nf ) ! ni = nf ! END DO ! nf = nim ! CALL spline_interpolation( pos, ni, nf ) ! ELSE ! ni = 1 nf = nim ! CALL spline_interpolation( pos, ni, nf ) ! END IF ! END IF ! CALL mp_bcast( pos, meta_ionode_id ) ! RETURN ! END SUBROUTINE reparametrise ! !-------------------------------------------------------------------- SUBROUTINE spline_interpolation_1D( vec, ni, nf, nim ) !-------------------------------------------------------------------- ! USE splinelib, ONLY : dosplineint ! IMPLICIT NONE ! REAL(DP), INTENT(INOUT) :: vec(:) INTEGER, INTENT(IN) :: ni, nf INTEGER, INTENT(IN), OPTIONAL :: nim ! INTEGER :: i, j INTEGER :: nio, nfo REAL(DP) :: delta, length REAL(DP), ALLOCATABLE :: new_vec(:) REAL(DP), ALLOCATABLE :: old_mesh(:), new_mesh(:) ! ! IF ( PRESENT( nim ) ) THEN ! nio = 1 nfo = nim ! ELSE ! nio = ni nfo = nf ! END IF ! ! ... cubic spline interpolation ! ALLOCATE( new_vec( ni:nf ) ) ! ALLOCATE( old_mesh( nio:nfo ) ) ALLOCATE( new_mesh( ni:nf ) ) ! old_mesh(:) = 0.0_DP new_mesh(:) = 0.0_DP ! DO i = nio, nfo - 1 ! old_mesh(i+1) = old_mesh(i) + ABS( vec(i+1) - vec(i) ) ! END DO ! length = old_mesh(nfo) ! delta = length / DBLE( nf - ni ) ! DO j = 0, nf - ni ! new_mesh(j+ni) = DBLE(j) * delta ! END DO ! old_mesh(:) = old_mesh(:) / length new_mesh(:) = new_mesh(:) / length ! CALL dosplineint( old_mesh(:), vec(nio:nfo), new_mesh(:), new_vec(:) ) ! vec(ni:nf) = new_vec(:) ! DEALLOCATE( new_vec, old_mesh, new_mesh ) ! RETURN ! END SUBROUTINE spline_interpolation_1D ! !-------------------------------------------------------------------- SUBROUTINE spline_interpolation_2D( vec, ni, nf, nim ) !-------------------------------------------------------------------- ! USE splinelib, ONLY : dosplineint ! IMPLICIT NONE ! REAL(DP), INTENT(INOUT) :: vec(:,:) INTEGER, INTENT(IN) :: ni, nf INTEGER, INTENT(IN), OPTIONAL :: nim ! INTEGER :: i, j INTEGER :: nio, nfo INTEGER :: dim1 REAL(DP) :: delta, length REAL(DP), ALLOCATABLE :: new_vec(:,:) REAL(DP), ALLOCATABLE :: old_mesh(:), new_mesh(:) ! ! dim1 = SIZE( vec, 1 ) ! IF ( PRESENT( nim ) ) THEN ! nio = 1 nfo = nim ! ELSE ! nio = ni nfo = nf ! END IF ! ! ... cubic spline interpolation ! ALLOCATE( new_vec( dim1, ni:nf ) ) ! ALLOCATE( old_mesh( nio:nfo ) ) ALLOCATE( new_mesh( ni:nf ) ) ! old_mesh(:) = 0.0_DP new_mesh(:) = 0.0_DP ! DO i = nio, nfo - 1 ! old_mesh(i+1) = old_mesh(i) + norm( vec(:,i+1) - vec(:,i) ) ! END DO ! length = old_mesh(nfo) ! delta = length / DBLE( nf - ni ) ! DO j = 0, nf - ni ! new_mesh(j+ni) = DBLE(j) * delta ! END DO ! old_mesh(:) = old_mesh(:) / length new_mesh(:) = new_mesh(:) / length ! CALL dosplineint( old_mesh(:), vec(:,nio:nfo), new_mesh(:), new_vec(:,:) ) ! vec(:,ni:nf) = new_vec(:,:) ! DEALLOCATE( new_vec, old_mesh, new_mesh ) ! RETURN ! END SUBROUTINE spline_interpolation_2D ! !-------------------------------------------------------------------- SUBROUTINE cubic_interpolation( ni, nf ) !-------------------------------------------------------------------- ! USE path_variables, ONLY : dim1, pos ! IMPLICIT NONE ! INTEGER, INTENT(IN) :: ni, nf ! INTEGER :: i, j REAL(DP) :: r, delta, x REAL(DP), ALLOCATABLE :: a(:,:), b(:,:), c(:,:), d(:,:), t(:,:), s(:) ! ALLOCATE( a( dim1, ni:nf-1 ) ) ALLOCATE( b( dim1, ni:nf-1 ) ) ALLOCATE( c( dim1, ni:nf-1 ) ) ALLOCATE( d( dim1, ni:nf-1 ) ) ALLOCATE( t( dim1, ni:nf ) ) ALLOCATE( s( ni:nf ) ) ! t(:,ni) = pos(:,ni+1) - pos(:,ni) t(:,nf) = pos(:,nf) - pos(:,nf-1) ! DO i = ni+1, nf - 1 ! t(:,i) = ( pos(:,i+1) - pos(:,i-1) ) / 2.0_DP ! END DO ! s(ni) = 0.0_DP ! DO i = ni, nf - 1 ! r = norm( pos(:,i+1) - pos(:,i) ) ! s(i+1) = s(i) + r ! ! ... cubic interpolation ! a(:,i) = 2.0_DP *( pos(:,i) - pos(:,i+1) ) / r**3 + & ( t(:,i) + t(:,i+1) ) / r**2 ! b(:,i) = 3.0_DP *( pos(:,i+1) - pos(:,i) ) / r**2 - & ( 2.0_DP*t(:,i) + t(:,i+1) ) / r ! c(:,i) = t(:,i) ! d(:,i) = pos(:,i) ! END DO ! i = ni ! delta = s(nf) / DBLE( nf - ni ) ! DO j = ni, nf ! r = DBLE( j - ni ) * delta ! IF ( r >= s(i+1) .AND. i < nf - 1 ) i = i + 1 ! x = r - s(i) ! pos(:,j) = a(:,i)*x**3 + b(:,i)*x**2 + c(:,i)*x + d(:,i) ! END DO ! DEALLOCATE( a, b, c, d, t, s ) ! RETURN ! END SUBROUTINE cubic_interpolation ! END MODULE path_reparametrisation NEB/src/path_interpolation.f900000644000700200004540000002500312053145633015475 0ustar marsamoscm! ! Copyright (C) 2004 PWSCF group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! ! MODULE int_global_variables ! USE kinds, ONLY : DP ! IMPLICIT NONE ! INTEGER :: N, dim INTEGER :: old_num_of_images, new_num_of_images INTEGER :: first_image, last_image REAL (DP), ALLOCATABLE :: old_pos(:,:), new_pos(:,:) REAL (DP), ALLOCATABLE :: old_PES_gradient(:,:), new_PES_gradient(:,:) INTEGER, ALLOCATABLE :: fix_atom(:) REAL (DP), ALLOCATABLE :: old_V(:), new_V(:) REAL (DP), ALLOCATABLE :: d_R(:) REAL (DP), ALLOCATABLE :: a(:), b(:), c(:), d(:), F(:) REAL (DP), ALLOCATABLE :: old_mesh(:), new_mesh(:) REAL (DP), ALLOCATABLE :: tangent(:) CHARACTER(LEN=256) :: old_restart_file, new_restart_file ! END MODULE int_global_variables ! ! PROGRAM images_interpolator ! USE kinds, ONLY : DP USE constants, ONLY : eps16 USE path_formats USE basic_algebra_routines, ONLY : norm USE cell_base, ONLY : at, alat USE int_global_variables USE splinelib ! IMPLICIT NONE ! INTEGER :: i, j, ia INTEGER :: istep, nstep, suspended_image INTEGER :: ierr REAL (DP) :: R, delta_R, x LOGICAL :: no_interpolation LOGICAL, EXTERNAL :: matches CHARACTER (LEN=20) :: cell_parameters CHARACTER (LEN=256) :: input_line ! INTEGER :: iunrestart ! iunrestart = 28 ! ! ! ... the input file is read ! READ(*,*) N READ(*,*) old_num_of_images READ(*,*) new_num_of_images READ(*,*) first_image READ(*,*) last_image READ(*,'(A)') old_restart_file READ(*,'(A)') new_restart_file READ(*,*) alat ! READ( UNIT = *, FMT = '(A)', IOSTAT = ierr ) cell_parameters ! IF ( ierr < 0 ) THEN ! WRITE(*,'(T2,"read_input: the card CELL_PARAMETERS not found")') STOP ! ELSE IF ( ierr > 0 ) THEN ! WRITE(*,'(T2,"read_input: an error occured reading CELL_PARAMETERS")') STOP ! END IF ! IF ( .NOT. matches( "CELL_PARAMETERS" , TRIM( cell_parameters ) ) ) THEN ! WRITE(*,'(T2,"read_input: ",A," is not a valid card")') cell_parameters STOP ! END IF ! READ( UNIT = *, FMT = *, IOSTAT = ierr ) at ! IF ( ierr < 0 ) THEN ! WRITE(*,'(T2,"read_input: lattice vectors not found")') STOP ! ELSE IF ( ierr > 0 ) THEN ! WRITE(*,'(T2,"read_input: an error occured reading laccice vectors")') WRITE(*, FMT = lattice_vectors ) at STOP ! END IF ! dim = 3 * N ! ALLOCATE( old_pos( dim, old_num_of_images ) ) ALLOCATE( old_PES_gradient( dim, old_num_of_images ) ) ALLOCATE( old_V( old_num_of_images ) ) ALLOCATE( new_pos( dim, new_num_of_images ) ) ALLOCATE( new_PES_gradient( dim, new_num_of_images ) ) ALLOCATE( new_V( new_num_of_images ) ) ALLOCATE( fix_atom( dim ) ) ALLOCATE( d_R( dim ) ) ALLOCATE( tangent( dim ) ) ALLOCATE( a( old_num_of_images - 1 ) ) ALLOCATE( b( old_num_of_images - 1 ) ) ALLOCATE( c( old_num_of_images - 1 ) ) ALLOCATE( d( old_num_of_images - 1 ) ) ALLOCATE( F( old_num_of_images ) ) ALLOCATE( old_mesh( old_num_of_images ) ) ALLOCATE( new_mesh( new_num_of_images ) ) ! ! ... the old restart file is read ! OPEN( UNIT = iunrestart, FILE = old_restart_file, STATUS = "OLD", & ACTION = "READ" ) ! no_interpolation = .FALSE. ! READ( UNIT = iunrestart, FMT = * ) ! RESTART INFORMATION READ( UNIT = iunrestart, FMT = * ) istep READ( UNIT = iunrestart, FMT = * ) nstep READ( UNIT = iunrestart, FMT = * ) suspended_image READ( UNIT = iunrestart, FMT = * ) ! conv_elec ! ! ... read either "ENERGIES, POSITIONS AND GRADIENTS" ! repeat_loop: DO ! READ( UNIT = iunrestart, FMT = '(256A)', IOSTAT = ierr ) input_line ! IF ( matches( input_line, & "ENERGIES, POSITIONS AND GRADIENTS" ) ) EXIT repeat_loop ! IF ( ierr /= 0 ) THEN ! WRITE( *, '(/,5X,"an error occured reading",A)' ) old_restart_file ! STOP ! END IF ! END DO repeat_loop ! READ( UNIT = iunrestart, FMT = * ) ! Image: READ( UNIT = iunrestart, FMT = * ) old_V(1) ! ia = 0 ! DO j = 1, dim, 3 ! ia = ia + 1 ! READ( UNIT = iunrestart, FMT = * ) & old_pos(j,1), & old_pos((j+1),1), & old_pos((j+2),1), & old_PES_gradient(j,1), & old_PES_gradient((j+1),1), & old_PES_gradient((j+2),1), & fix_atom(j), & fix_atom((j+1)), & fix_atom((j+2)) ! old_PES_gradient(:,1) = old_PES_gradient(:,1) * fix_atom ! END DO ! DO i = 2, old_num_of_images ! READ( UNIT = iunrestart, FMT = * ) ! Image: READ( UNIT = iunrestart, FMT = * ) old_V(i) ! DO j = 1, dim, 3 ! READ( UNIT = iunrestart, FMT = * ) & old_pos(j,i), & old_pos((j+1),i), & old_pos((j+2),i), & old_PES_gradient(j,i), & old_PES_gradient((j+1),i), & old_PES_gradient((j+2),i) ! END DO ! old_PES_gradient(:,i) = old_PES_gradient(:,i) * fix_atom ! END DO ! CLOSE( UNIT = iunrestart ) ! F = 0.D0 ! DO i = 2, ( old_num_of_images - 1 ) ! ! ... tangent to the path ( normalized ) ! tangent(:) = 0.5D0 * ( ( old_pos(:,i+1) - old_pos(:,i) ) / & norm( old_pos(:,i+1) - old_pos(:,i) ) + & ( old_pos(:,i) - old_pos(:,i-1) ) / & norm( old_pos(:,i) - old_pos(:,i-1) ) ) ! tangent = tangent / norm( tangent ) ! F(i) = DOT_PRODUCT( - old_PES_gradient(:,i) , tangent ) ! END DO ! old_mesh(1) = 0.D0 ! DO i = 1, ( old_num_of_images - 1 ) ! d_R = old_pos(:,(i+1)) - old_pos(:,i) ! R = norm( d_R ) ! old_mesh(i+1) = old_mesh(i) + R ! a(i) = 2.D0 * ( old_V(i) - old_V(i+1) ) / R**(3) - & ( F(i) + F(i+1) ) / R**(2) ! b(i) = 3.D0 * ( old_V(i+1) - old_V(i) ) / R**(2) + & ( 2.D0 * F(i) + F(i+1) ) / R ! c(i) = - F(i) ! d(i) = old_V(i) ! END DO ! i = first_image ! delta_R = ( old_mesh(last_image) - & old_mesh(first_image) ) / DBLE( new_num_of_images - 1 ) ! DO j = 0, ( new_num_of_images - 1 ) ! R = old_mesh( first_image ) + DBLE(j) * delta_R ! new_mesh(j+1) = R ! check_index: DO ! IF ( ( R > old_mesh(i+1) ) .AND. & ( i < ( old_num_of_images - 1 ) ) ) THEN ! i = i + 1 ! ELSE ! EXIT check_index ! END IF ! END DO check_index ! x = R - old_mesh( i ) ! new_V(j+1) = a(i)*(x**3) + b(i)*(x**2) + c(i)*x + d(i) ! END DO ! new_mesh = new_mesh / old_mesh(old_num_of_images) old_mesh = old_mesh / old_mesh(old_num_of_images) ! CALL dosplineint( old_mesh , old_pos , new_mesh , new_pos ) ! new_PES_gradient = 0.D0 ! new_PES_gradient(:,1) = old_PES_gradient(:,1) ! new_PES_gradient(:,new_num_of_images) = old_PES_gradient(:,old_num_of_images) ! ! ... the new restart file is written ! OPEN( UNIT = iunrestart, FILE = new_restart_file, STATUS = "UNKNOWN", & ACTION = "WRITE" ) ! WRITE( UNIT = iunrestart, FMT = '("RESTART INFORMATION")' ) ! ! ... by default istep and nstep are set to zero ! WRITE( UNIT = iunrestart, FMT = '(I4)' ) 0 WRITE( UNIT = iunrestart, FMT = '(I4)' ) 0 WRITE( UNIT = iunrestart, FMT = '(I4)' ) 0 WRITE( UNIT = iunrestart, FMT = '(A4)' ) 'F' ! WRITE( UNIT = iunrestart, FMT = '("ENERGIES, POSITIONS AND GRADIENTS")' ) ! DO i = 1, new_num_of_images ! WRITE( UNIT = iunrestart, FMT = '("Image: ",I4)' ) i WRITE( UNIT = iunrestart, FMT = energy ) new_V(i) ! ia = 0 ! DO j = 1, dim, 3 ! ia = ia + 1 ! IF ( i == 1 ) THEN ! WRITE( UNIT = iunrestart, FMT = restart_first ) & new_pos(j,i), & new_pos((j+1),i), & new_pos((j+2),i), & new_PES_gradient(j,i), & new_PES_gradient((j+1),i), & new_PES_gradient((j+2),i), & fix_atom(j), & fix_atom((j+1)), & fix_atom((j+2)) ! ELSE ! WRITE( UNIT = iunrestart, FMT = restart_others ) & new_pos(j,i), & new_pos((j+1),i), & new_pos((j+2),i), & new_PES_gradient(j,i), & new_PES_gradient((j+1),i), & new_PES_gradient((j+2),i) ! END IF ! END DO ! END DO ! WRITE( UNIT = iunrestart, FMT = '("END")' ) ! CLOSE( UNIT = iunrestart ) ! IF ( ALLOCATED( old_pos ) ) DEALLOCATE( old_pos ) IF ( ALLOCATED( old_PES_gradient ) ) DEALLOCATE( old_PES_gradient ) IF ( ALLOCATED( old_V ) ) DEALLOCATE( old_V ) IF ( ALLOCATED( new_pos ) ) DEALLOCATE( new_pos ) IF ( ALLOCATED( new_PES_gradient ) ) DEALLOCATE( new_PES_gradient ) IF ( ALLOCATED( new_V ) ) DEALLOCATE( new_V ) IF ( ALLOCATED( fix_atom ) ) DEALLOCATE( fix_atom ) IF ( ALLOCATED( d_R ) ) DEALLOCATE( d_R ) IF ( ALLOCATED( tangent ) ) DEALLOCATE( tangent ) IF ( ALLOCATED( a ) ) DEALLOCATE( a ) IF ( ALLOCATED( b ) ) DEALLOCATE( b ) IF ( ALLOCATED( c ) ) DEALLOCATE( c ) IF ( ALLOCATED( d ) ) DEALLOCATE( d ) IF ( ALLOCATED( F ) ) DEALLOCATE( F ) IF ( ALLOCATED( old_mesh ) ) DEALLOCATE( old_mesh ) IF ( ALLOCATED( new_mesh ) ) DEALLOCATE( new_mesh ) ! END PROGRAM images_interpolator NEB/src/path_formats.f900000644000700200004540000000352012053145633014261 0ustar marsamoscm! ! Copyright (C) 2003-2005 Quantum ESPRESSO group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! !---------------------------------------------------------------------------- MODULE path_formats !---------------------------------------------------------------------------- ! ! ... this module contains the I/O formats used by all "path"-routines ! ! ... Written by Carlo Sbraccia ( 2003-2005 ) ! CHARACTER (LEN=*), PARAMETER :: & lattice_vectors = "(3(2X,F14.10),/,3(2X,F14.10),/,3(2X,F14.10))" ! CHARACTER (LEN=*), PARAMETER :: & restart_first = "(3(2X,F18.12),3(2X,F18.12),3(2X,I1))", & restart_others = "(3(2X,F18.12),3(2X,F18.12))" ! CHARACTER (LEN=*), PARAMETER :: & quick_min = "(9(2X,F18.12))", & energy = "(2X,F18.10)" ! CHARACTER (LEN=*), PARAMETER :: & dat_fmt = "(3(2X,F16.10))", & int_fmt = "(2(2X,F16.10))", & xyz_fmt = "(A2,3(2X,F14.10))", & axsf_fmt = "(A2,6(2X,F14.10))" ! CHARACTER (LEN=*), PARAMETER :: & scf_iter_fmt = "(/,5X,30('-'),(1X,'iteration ',I3,1X),30('-'),/)", & scf_fmt = "(5X,'tcpu = ',F8.1," // & & "' self-consistency for image ', I3)", & scf_fmt_para = "(5X,'cpu = ',I2,' tcpu = ',F8.1," // & & "' self-consistency for image ', I3)" ! CHARACTER (LEN=*), PARAMETER :: & run_info = "(5X,'image',8X,'energy (eV)',8X,'error (eV/A)',8X,'frozen',/)" ! CHARACTER (LEN=*), PARAMETER :: & run_output = "(5X,I5,4X,F15.7,10X,F10.6,12X,L1)" ! CHARACTER (LEN=*), PARAMETER :: & summary_fmt = "(5X,A,T35,' = ',3X,A)" ! CHARACTER (LEN=*), PARAMETER :: & final_fmt = "(/,5X,75('-'),/)" ! END MODULE path_formats NEB/Doc/0000755000700200004540000000000012053440276011171 5ustar marsamoscmNEB/Doc/user_guide/0000755000700200004540000000000012053147432013322 5ustar marsamoscmNEB/Doc/user_guide/prev.png0000644000700200004540000000042712053147432015007 0ustar marsamoscmPNG  IHDR?GT PLTEooo[tRNS@fIDATx= 0 _pFD5K t tޡC)ät-}Y#% 4ҁͥd/v`3 v3tE$S5s}jf/hQ!ە=KV_N8K8!)x'D^K -sNH!%IENDB`NEB/Doc/user_guide/node7.html0000644000700200004540000001044212053147432015225 0ustar marsamoscm 4.1 Running on parallel machines next up previous contents
Next: 4.2 Parallelization levels Up: 4 Parallelism Previous: 4 Parallelism   Contents


4.1 Running on parallel machines

Parallel execution is strongly system- and installation-dependent. Typically one has to specify:

  1. a launcher program (not always needed), such as poe, mpirun, mpiexec, with the appropriate options (if any);
  2. the number of processors, typically as an option to the launcher program, but in some cases to be specified after the name of the program to be executed;
  3. the program to be executed, with the proper path if needed: for instance, ./neb.x, or $HOME/bin/neb.x, or whatever applies;
  4. other PWscf-specific parallelization options, to be read and interpreted by the running code;
  5. the number of image groups used by NEB (see next subsection).
Items 1) and 2) are machine- and installation-dependent, and may be different for interactive and batch execution. Note that large parallel machines are often configured so as to disallow interactive execution: if in doubt, ask your system administrator. Item 3) also depend on your specific configuration (shell, execution path, etc). Item 4) is optional but may be important: see the following section for the meaning of the various options.

For illustration, here is how to run neb.x on 16 processors partitioned into 4 image groups (4 processors each), for a path containing at least 4 images with POE:

   poe neb.x -procs 16 -nimage 4 -inp input


next up previous contents
Next: 4.2 Parallelization levels Up: 4 Parallelism Previous: 4 Parallelism   Contents
Layla Martin-Samos Colomer 2012-11-21
NEB/Doc/user_guide/next_g.png0000644000700200004540000000042012053147432015310 0ustar marsamoscmPNG  IHDR%/[:tRNS-Mc%IDATx C?y2N6AKdуqHCudS. l`N#Q[O 6 Performances next up previous contents
Next: 7 Troubleshooting Up: User's Guide for The Previous: 5 Using PWneb   Contents

6 Performances

PWneb requires roughly the time and memory needed for a single SCF calculation, times num_of_images, times the number of NEB iterations needed to reach convergence. We refer the reader to the PW user_guide for more information.



Layla Martin-Samos Colomer 2012-11-21
NEB/Doc/user_guide/internals.pl0000644000700200004540000000057212053147432015662 0ustar marsamoscm# LaTeX2HTML 2002-2-1 (1.71) # Associate internals original text with physical files. $key = q/SubSec:para/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; $key = q/SubSec:Examples/; $ref_files{$key} = "$dir".q|node5.html|; $noresave{$key} = "$nosave"; $key = q/Sec:para/; $ref_files{$key} = "$dir".q|node6.html|; $noresave{$key} = "$nosave"; 1; NEB/Doc/user_guide/node2.html0000644000700200004540000000574012053147432015225 0ustar marsamoscm 1 Introduction next up previous contents
Next: 2 People and terms Up: User's Guide for The Previous: Contents   Contents

1 Introduction

This guide covers the usage of PWneb, version 5.0.2: an open-source package for the calculation of energy barriers and reaction pathway using the Nudged Elastic Band (NEB) method.

This guide assumes that you know the physics that PWneb describes and the methods it implements. It also assumes that you have already installed, or know how to install, QUANTUM ESPRESSO. If not, please read the general User's Guide for QUANTUM ESPRESSO, found in directory Doc/ two levels above the one containing this guide; or consult the web site:
http://www.quantum-espresso.org.

PWneb is part of the QUANTUM ESPRESSO distribution and uses the PWscf package as electronic-structure computing tools (``engine''). It is however written in a modular way and could be adapted to use other codes as ``engine''. Note that since v.4.3 PWscf no longer performs NEB calculations. Also note that NEB with Car-Parrinello molecular dynamics is not implemented anymore since v.4.3.



Layla Martin-Samos Colomer 2012-11-21
NEB/Doc/user_guide/node11.html0000644000700200004540000000450112053147432015277 0ustar marsamoscm 7 Troubleshooting next up previous contents
Next: About this document ... Up: User's Guide for The Previous: 6 Performances   Contents

7 Troubleshooting

Almost all problems in PWneb arise from incorrect input data and result in error stops. Error messages should be self-explanatory, but unfortunately this is not always true. If the code issues a warning messages and continues, pay attention to it but do not assume that something is necessarily wrong in your calculation: most warning messages signal harmless problems.



Layla Martin-Samos Colomer 2012-11-21
NEB/Doc/user_guide/next.png0000644000700200004540000000036512053147432015012 0ustar marsamoscmPNG  IHDR%wu PLTEooo[tRNS@fIDATxm1 0 EQF >k>B>N3=k?d M53kARM9Nl :C5tl]oD/ܡ_\lE6tU{Ccs=@uwz User's Guide for The Quantum ESPRESSO Nudged Elastic Band next up previous contents
Next: Contents   Contents

Image quantum_espresso Image democritos
User's Guide for PWneb (version 5.0.2)





Layla Martin-Samos Colomer 2012-11-21
NEB/Doc/user_guide/node9.html0000644000700200004540000002245512053147432015236 0ustar marsamoscm 5 Using PWneb next up previous contents
Next: 6 Performances Up: User's Guide for The Previous: 4.2 Parallelization levels   Contents

5 Using PWneb

NEB calculations with neb.x can be started in two different ways:

  1. by reading a single input file, specified with the command line option -inp (or -input);
  2. by specifying the number N of images with the command line option -input_images N, and providing the input data for PWneb in a file named neb.dat and for the PWscf engine in the files pw_X.in (X = 1,..., N , see also below).

In the first case, the input file contains keywords (described here below) that enable the code to distinguish between parts of the input containing NEB-specific parameters and parts containing instructions for the computational engine (only PW is currently supported).

N.B.: the neb.x code does not read from standard input, so that input redirection (e.g., neb.x < neb.in ...) cannot be used.

The general structure of the file to be parsed should be as follows:

BEGIN
BEGIN_PATH_INPUT
~... neb specific namelists and cards
END_PATH_INPUT
BEGIN_ENGINE_INPUT
~...pw specific namelists and cards
BEGIN_POSITIONS
FIRST_IMAGE
~...pw ATOMIC_POSITIONS card
INTERMEDIATE_IMAGE
~...pw ATOMIC_POSITIONS card
LAST_IMAGE
~...pw ATOMIC_POSITIONS card
END_POSITIONS
~... other pw specific cards
END_ENGINE_INPUT
END

After the parsing is completed, several files are generated by PWneb, more specifically: neb.dat, with NEB-related input data, and a set of input files in the PWscf format, pw_1.in, ..., pw_N.in, one for each set of atomic position (image) found in the original input file. For the second case, the neb.dat file and all pw_X.in should be already present in the directory where the code is started. A detailed description of all NEB-specific input variables is contained in the input description files Doc/INPUT_NEB.*, while for the PWscf engine all the options of a scf calculation apply (see PW/Doc/INPUT_PW.* and example01 in the NEB/examples directory).

A NEB calculation will produce a number of output files containing additional information on the minimum-energy path. The following files are created in the directory were the code is started:

prefix.dat
is a three-column file containing the position of each image on the reaction coordinate (arb. units), its energy in eV relative to the energy of the first image and the residual error for the image in eV/a0 .
prefix.int
contains an interpolation of the path energy profile that pass exactly through each image; it is computed using both the image energies and their derivatives
prefix.path
information used by QUANTUM ESPRESSO to restart a path calculation, its format depends on the input details and is undocumented
prefix.axsf
atomic positions of all path images in the XCrySDen animation format: to visualize it, use xcrysden -axsf prefix.axsf
prefix.xyz
atomic positions of all path images in the generic xyz format, used by many quantum-chemistry softwares
prefix.crd
path information in the input format used by pw.x, suitable for a manual restart of the calculation
where prefix is the PWscf variable specified in the input. The more verbose output from the PWscf engine is not printed on the standard output, but is redirected into a file stored in the image-specific temporary directories (e.g. outdir/prefix_1/PW.out for the first image, etc.).

NEB calculations are a bit tricky in general and require extreme care to be setup correctly. Sometimes it can easily take hundreds of iterations for them to converge, depending on the number of atoms and of images. Here you can find some advice (courtesy of Lorenzo Paulatto):

  1. Don't use Climbing Image (CI) from the beginning. It makes convergence slower, especially if the special image changes during the convergence process (this may happen if CI_scheme='auto' and if it does it may mess up everything). Converge your calculation, then restart from the last configuration with CI option enabled (note that this will increase the barrier).
  2. Carefully choose the initial path. If you ask the code to use more images than those you have supplied on input, the code will make a linear interpolation of the atomic positions between consecutive input images. You can visualize the .axsf file with XCrySDen as an animation: take some time to check if any atoms overlap or get very close in some of the new images (in that case you will have to supply intermediate images).
  3. Try to start the NEB process with most atomic positions fixed, in order to converge the more "problematic" ones, before leaving all atoms move.
  4. Especially for larger systems, you can start NEB with lower accuracy (less k-points, lower cutoff) and then increase it when it has converged to refine your calculation.
  5. Use the Broyden algorithm instead of the default one: it is a bit more fragile, but it removes the problem of "oscillations" in the calculated activation energies. If these oscillations persist, and you cannot afford more images, focus to a smaller problem, decompose it into pieces.
  6. A gross estimate of the required number of iterations is (number of images) * (number of atoms) * 3. Atoms that do not move should not be counted. It may take half that many iterations, or twice as many, but more or less that's the order of magnitude, unless one starts from a very good or very bad initial guess.

The code path_int.x is is a tool to generate a new path (what is actually generated is the restart file) starting from an old one through interpolation (cubic splines). The new path can be discretized with a different number of images (this is its main purpose), images are equispaced and the interpolation can be also performed on a subsection of the old path. The input file needed by path_int.x can be easily set up with the help of the self-explanatory path_interpolation.sh shell script in the NEB/tools folder.


next up previous contents
Next: 6 Performances Up: User's Guide for The Previous: 4.2 Parallelization levels   Contents
Layla Martin-Samos Colomer 2012-11-21
NEB/Doc/user_guide/node4.html0000644000700200004540000001047212053147432015225 0ustar marsamoscm 3 Compilation next up previous contents
Next: 3.1 Running examples Up: User's Guide for The Previous: 2 People and terms   Contents

3 Compilation

PWneb is a package tightly bound to QUANTUM ESPRESSO. For instruction on how to download and compile QUANTUM ESPRESSO, please refer to the general Users' Guide, available in file Doc/user_guide.pdf under the main QUANTUM ESPRESSO directory, or in web site http://www.quantum-espresso.org.

Once QUANTUM ESPRESSO is correctly configured, PWneb can be automatically downloaded, unpacked and compiled by just typing make neb, from the main QUANTUM ESPRESSO directory. make neb will produce the following codes in NEB/src:

Symlinks to executable programs will be placed in the bin/ subdirectory of the main QUANTUM ESPRESSO directory.



Subsections
next up previous contents
Next: 3.1 Running examples Up: User's Guide for The Previous: 2 People and terms   Contents
Layla Martin-Samos Colomer 2012-11-21
NEB/Doc/user_guide/up.png0000644000700200004540000000032312053147432014452 0ustar marsamoscmPNG  IHDR5 PLTEooo[tRNS@fuIDATx]10 Ed&Cwr,'k7n)IT xOm'<Q1A BP+ :׊pۭYh/iO.c7Np_/11Ab$}IENDB`NEB/Doc/user_guide/prev_g.png0000644000700200004540000000050712053147432015314 0ustar marsamoscmPNG  IHDR?JtRNS-Mc%IDATx͔u D?~5m9`D:p9cm.BBb$9db`HUI:Bu:ΓE-'} C|,t%}yFsP=T.+9dG+WZ~panP895il u9'ͩβ ֒_+xe U+i@iZfG-Κ6)nsU~!L,cwmP,vzSH=hyW:C>G'oi=Q)IENDB`NEB/Doc/user_guide/node1.html0000644000700200004540000000506712053147432015226 0ustar marsamoscm Contents next up previous
Next: 1 Introduction Up: User's Guide for The Previous: User's Guide for The


Contents



Layla Martin-Samos Colomer 2012-11-21
NEB/Doc/user_guide/WARNINGS0000644000700200004540000000020012053147432014465 0ustar marsamoscmNo implementation found for style `graphicx' Substitution of arg to newlabelxx delayed. There is no author for this document. NEB/Doc/user_guide/quantum_espresso.png0000644000700200004540000011316612053147432017455 0ustar marsamoscmPNG  IHDRj pHYsddFtEXtRaw profile type app12 app12 15 4475636b79000100040000003c0000 u vpAgIDATxymYUǘZk7}PT H"*!1gQ_4jg>QIg)D SR@uf51s}O5*V[g֜kRU6=^ID *'Cd $JR_졯b_ Oeu'0h J՟d >BsO*}^&h. V̱ƒ=L%(L1zO= YW̱ +XAB8!zN ]Iݵ +Vq>S@=X5)X-D` P{9 +|6`+V?RsgF#e2cg +o k}0)! *$ CU{DDD-,"M@@lA e?VX3sL6Is"7,U~0狜s "r5S&"j.d+oC (CIsO9 .x"{x C2$#'H@ HV*i&$$$RUePED571\bd@, 6d@!j*`6 l01,)B ++ BTJ (xdW[_ (RDDXZB$";#CXX$db@>B5|^`a~(19M%1G5Ǽυ`Lttht+XaNJ9z rHT2Xb[MeZXm* TH,9T5'^s6PH(H *P9T*/d=Sr`32 Y%)u"XBXD`e){WXa1@G:HOY" "f)Wd>sޯk,S ɜ栒5H 9jHP4ŻT!PE>XG u(ٺ>)q`R rd4lZ#ĖۅaL@fjap)V+IbHZJ)r$Da&dj 6?ѢCTzHS$AsXd,$ 5G9̡ |Je}8wvoDeY_ 9P vrj[Lla-$@<"V1AA@=}+قs<SHF2@ 3` JD)Ң>" H 9$3!=$RM A9A稒He?΁e}~yC%`ia4DP&q`{bL@:v?nj`5(ю{b;v4Xzh&Va0d[;O9 T 9 #RPJSIrO](GL9F*^)H(=b*5\e h Fa#\쀘, UdҬ˓ 5Vقð d^'z df`F@h>b4%gfK"{fӨO Ф9j { I);NG!A ͚i"a,-[3(b|Q8QHdř$f dLQ([HqVI-)p$!oXf+)b(`rI.@2NOM?AE 5`q 7LTH4*=QBq(/ (N#e bHK#rO"ϑ{GaZ'AMD `E^,AD3,ܕkfBQ"TETKf>;"AH[fW85L%Tȸ&Fa݋aojWXa1 gSRSfKi L=Fq")\1h֔Eb@#RC:@$ͽ^I#k!c"d QE0 1e*v#&kPlRfw Ė9"' gT4kJj$J 856"pЬEU ҽ ++dq[p՜ I<#5&U(MM=l'&&۸8NjR PNii), i"H)$Xd2k%~ca=]BWʀ2Uyo o(/!R s! B!d*+P$HP Y5H{Mmxr5'Kedr[CI4cH0.Z +` A$sl52sΔI;hd+&IPB80o9G3) qN9dm(Ð1c`7la>s;^Ѓ0(QҫIbXp,se[AD4B9"gp_{ؓHk9*ܫe XҠSDb uD X=*/_a="*"'{vgI l@1 ٳ|y4A8ܛ{ aAJ>jk؊ب$"eGƩq0^%lDDظa2JD`/ X TP|V T`HFfz =E,$")HΜ3rDaJ A#INu  )+på sR95q.LӔ$" 2 J0p{o!O;s=3)H@Wn-PCl k`erׄ Uv%cL%c m([q2` Ed91a"dI#r@$=gt+ T{ɁrfI=r7DA:iʰ us\8dL̐D5t-r$ epNDJ`+r.bPr(kQ?4G!vHa퐧H3̞Lzr ZRb7URcEa%eK@ϣ>"y_ Q8pB"I$"ڋ$\q0=93gRjIze=r@"cfd [3JqbaEPIQCoRG1#0s&!X9B#[lak8- 0JUaرX6lCvW@Yd<%b,$vX$o((ϗKw.(2bb$Hf! B3RVi5LȤEQB#jiQ-Q^2tVq A-R ւ PkRK3A":0ư@CO%F 8h!E-B4EI&m}'`@Nhz՘݀LΓdFfȶ}5""f6|wo!{gx@a3RDZA,dJSo[Z_#'΂͆0BT+CURPR!*_\"lrX1E\֖NPTR1HHC"!͐f002VdjX&Sdd5l SzpXaAna4(@BB3B2RԮ DJ 1ZXq7V9.8HC 0/sD 3Ei9~Hn;6հ%b\xcًTk0 eb ,\#<;d59kJh jHG9J9%4* d J0 YQ UX1 m@N-aaJqJ簇#fŮZ5dkTc**H[{^D#A &,AA-u&/7&hE%#^SO*9W6I3HU# % @(b\+Ys<\PQ0R4AAE?AS H=a&)23WTP5`m﷨] &6d(\ 40e)$IUKCD< ]a2VC靧*"& џEC?E(ȽVR$2jkrkpCn6jruCClEvRJHq>@Fty",)]LN92ϕ.OւRQT9eŐIh-k U>p}Wx(R}S՜3l 4 g[#SѨd@uvh`P5"75`r8ܤMeNEU Qm j@0y6%"3$9GeD*3~%hgVE1;(%58Jb'DU֕dkF۸e|W{bdZha~ӾWJ [ c@-ڤ="EY(xS2#)AR(5ʕ1*KjZacE}馅v, S@SB,'x;=f6vz!9Fr{ M#7jKqɵD SPmn#5ӌM5ƹVPYbq!8Şp7)^t` VœBZVVt;$a[`2NB-Cub=h C>\j "wd &v#8ęRCgB־.۱b Y%CL9Ŏr; ]0toZ3)YYX%PF6@] {hwrGq91pVGQïsf_]PƙKYe;B3Qr|[A"  d Tx\1 @wk\aVqAHC {S)*uHLs@663v4OIHF3 z yuoffO0-[6Pm:咚B:Kؘ '!T"E @XKIÊ`!vLcKbYs\ttvS-Cj"Q@{GVpDF>RP$4U%UA(ǬCw{$hEÍT;7Bz ~ ~[AZHA!H6̖l b9Y ]4Дd Q sCdP#,ȒYU cb#̥$L"sS*a&"DzJB($pqD b(QA3[^˃CL 7Dz n [+[ -!@>l#ʲ Jq2k֜˘vF)q7dP{Py󰝱VX1ņ.VCG7Elg!R /D!"p P,9Glbޏ~$ |+H!srB kS|| "FhT:T({{&#p-:Zfc5NP+<b K\0~JiZS{H39dv9v$i}K hzFT RVp %5V0F-e14Yn]ixz'~qUf@s o=2oBѹ`{6B!.NxWƆݎBጶX `aÌ2 k^\+b R((~ơ[h_drk$Hla1I{|&"XbL9+5l;TUcm c +> 8a7eUS FӜ$"jgD܀cg3VMGvX1/,a vQj$ǜթȡ)r4338+ AQPj~~CpvwQ5T1"s-M B5(pDҀL[^ag+渠0A =”=vߥiGqJ)Dlۘ@Hf*n(9RunPo:z :\wN}("LD\B38Uhx@fz,SV Ba5gFE4GLJ,PdJ Ē{|UUQykz &&܆ ǨF(}fM/V%KȢbn&l*!j*pB,dVx` 1C$ &vy" H,HR" IA% *9j &M7k5`kU*;sէ RJqdX|6` y~{m ZW[ҪjWxX`e7r@?~=t;^gH=$MKȂ!x2~ 5[#TPmPzAv.fnvqiH]RIpq[1.h"g-R md{p S2Dd*jVq!EbR?7!Z%g=') BDbgɡE!PYx kC!~yeΐrҽ!*j8Wk@ʦc6ar# Z>cX1ɻɬwLn3wўd=0Q8e6@"@VTB =d4r$K9Td$h<=l_TitHG4ZxɁN+,A5w^(x՗U+IjbD37˱fU_q=Ie 25hw4iEEU܍{ +P ȿptL4H] b֐4ej"JQHADJE`3i`=#M%bYr' b&yr |[Ԏm%Sk%Θ|[:=+^!s\(`%r񬆳;v%)"Y!"YDJ }'1 gx 51Mi|οp:]c{Ɍ\ecSg v8v08\ mV r,ewПϢۦAt,B)qLhp֢wN &&&L`)kA5f8BKu&Zv /+< 0P#!lPPդ4kxeƨFdҴbbVq st;ܞnm.i@A(dʂ.,*RG!VdJC~ H6]׋e~ ZZ? (iԬ7y8² ;-ܘZ"ī+;Eb:#g0߁'-\noNJ9.tX$h瘷:L:M4O)z JNvHY3-ձY1 c1Q5&5#r(鷺/NU@mZCS7G\oO[ޱs{0v{觨WX1j{Srn(].Q')zhȒD@9k bg&"bff^&;asUo`r habˬn~+%[605UAz*#^I+mX- &[lcXډsA(>):2""Md g0F:o)-l t_s8WFw0hQEȒ RJ6D@5*Yʀ"90J UB N`#h  h!7 H"r@ 0BVvP">]/Ʉz 8naj:kݙ}3u4aHNṽU*T~n +j2z Dm"" D `Fv1P7dkؚMæ!< +yᴱ3# |LI"B HA1FkmXSη(6$[ٓz>q[w ;mh#f֏ Qz' N;`NW~ |}Bh}6PkP`f[Ι UC+PPc] dKh,t>k5VuU  "m0@hfj c2lxV:[čI@`, LFJ "95p虌Ax"Z+k>K?|`֒T.c]XTT;P9gOڹm5~%S_q>|{bQNmXz/HO9.Cnj;3a&'2F MsiƒŠ9.H3`T4&l",ܚO -̡5T# ;ұ->[Guh몰 tbe(T3<5>> {rm??:K gDIW̩5W]:ku)xqّE_pW^Ǎ}6Py0Z@Ȃo;{l$ 8?ݱw?=_߿U_*ң8]CSa<ޥi,TǨ`Ow!sХg §KkYy8Z,2r풛kAqI)4*!J0焏 00x1i0Np_u9grcqӾmiрdUL;$!(ZY)_/fTO|Ϥ2Z3XM6 G,&rסk%4͍P}VX[V9'8+Ad L)If"T腔x_GqNrcA `1\;G qi }QA!9+1:~>g{;Oۿ?}i: v!N僵O^cۑU_D]iVnVGuv.nhѫ i03@/gPTjqh9j….AiY71`siD18'ޥҥn4Csc~վ WLѭaD?_? U=@uV#C˟o?Qڒ˵AD3*윳v]'\e gO#o8z٨q7{G֦9z;7spt}6#B/ؙ>dH}s\ CeEN #,5@T"*ռX~`|!`86Եq5c)6 KI@- c}ΟvKqDӬ'>a>O"7?~MCu̴BgS+]# k$iٸ$%m6c.t6vk^?gM_׆);o՟؋e:`wit0Ӽv~~bX1Dž¾@PQCBJ PT({tFik [55frئYfե%Ya-bDGNk6Bl2'G< "v߻;ZUU3Q*>J&1U!뺮K)H3tͨ2Nc~sZL$ɴ1s&Sm}+VXc $h*Y{&FmB'Y*hU%̭R(|3;rG7yj%Q@]z&~Fy$uw_zÓz7I뱗1C?~ž+b .>5=ƖbD*Y]$#US Q*_!P(01!vdCK*E19D0 ZL +7}buZ5>=w/_kv)3@T؞wBH]}Ɔ3{ 0~!00| ~/]7qMu޳}4WE2:g;3݊9VxhR >lQ,0axscXъkjwԥ܇% -b߇VxP$7G5'Svvp\v2o%T:> "zASH9g;ӫ؞]583ѰvTKqU ^*\ 8\["Yu Btk_}ףLP4{?w|՗d?zvglӗ]oz5zZ~Ҷ83/]Ji6]df&sch84McA.*`?=oʿWybtW=9|˖NS'lڱvCdB0C+@F:xK3AGC@d6΀1ZP% !);\#t_τo̺jp_G_t_ f-[k?U7z~ ~bi1SU9gϷ0v/͟h,6|zo0ߨj M^5VgY޺x &í}a2醪$l@IgM (,*h(Ȣ^OyJ?\'j* ý$cXIsM/;_GݼGZ~zș>_=}_/&<}mGʺ/"!B AD9=^LD1#ٵѱu񊝄lKTw[Н;Yʳ]LN#%Wn? IaGkԛ~ӽCOߥW^ xDR]21{"KR|to ܛ9ߴG0>e [vS%9Bz +TU5\[]遌nLm:?֨Z:wjNOO11&h.5yq$bVXpɭ8W$;pGF]c9L0oAiejXwaukz0Q <ўF쵏Hl_rѹa$+؊u9%C3 d rGMMY5sWp/*F fHΙ1! 2)+HfPCYRt:N'O);:P fg<'2Reh]4@>fJ8咻+pX}T/O"8Ͼf_7}eTy큷;7ݜDfciQ`sm\aƥY}B S54qL@d X Y@o\G Pi]<^̡ԫvNv<Ιq'5M6[W\2T4/?-˽ZUK( ""yr`g>-ћ]41!Nn[!s\ r! ~zqtXl` LM-%5lY~9Ώdc!\)Vq-H† iQb2LBS*|A*$(֏%Y]!jB5k)օy$^S GާO6PZ8(?](A"w 1Xֲs]1SysݵnFI7Ȁ- @ vb߶V԰b R()kZU l8"U-yDLG dB 0v K1\%0ؔSf6n |fiVʵ??#Dz|%(S@Oc49kmUUq W<`s(>_u_ N"Ev +0.g֣qF 6Qmoz oQ ?jV. !0 ?ɛbM6&Xo9doc{{{gggooo2mB(f2}`pX/O61"躿UF I.ٳm k*zS%s\(`PX\M~;p!:5lΗEE"RX]8 _D+\쭣_κ:$)YC֦}Q ]>ɖ of4mlllmmmllFC =Z,\ Oj&Q]U s3y23,4CT `k$^2c(g fv>(YB(KpQ.GĔ1{ }+_H}_X.;sZVEi*2)iJj-b"CH1ff$8*(Ov}G gC :R"e1u3DZ7SR{DpbVd= #Yg ٜ0.٬Gst4@ ㄽӠvYjw\@@8)r +z7h{i}zZĻ!(XTnYbjuow &,YXНa"M!`󜱿_jj܎XvTO Q*B~pĝکFOirBdY է?"~oJ!A*'$%1,Wb@ܯ%$ ѡu{fCttƓN]go?tꜫj6]y7pÕW\vɓu]e/r-{ 7]B~m^ל>}:Uu΍F>=ɣ?2Ƭ7|C-oyG>fN~JsUzd:/'ֆ/zыN8a ->xM71w~׷ۛURի~vU9@z0~w۶F?}眿9POp[?<ˎ4MmphZC{:ņ=Dwىn:=m>\OˆLS=W»_Y mI|c-/;q}= w8hm2V3m 61U=?A'frcG_GC7VAS-=rw ͽO|~O#Vd|F R^oߩwLZk_gݺ e&|=~9={WNCwEx\rSV6r'j ՖVZmِf]ԬZG!Q9QK09'SU]p'[@15d%D5hdϊ{4ݧV}ަƽ;>H|죽(ȒR~UU1:ux_蝝m1ՋeϜ9u]1'O|BPuV*]/Tޔڔ}I@]9^ Bwuigzlrk EK҇_7-֭w]LI`x<F6 G2e?!l+ԉ?}P6=;t[WL'7-?~ `m/;USݳn9$kT9ƵNfX6Ĭ6/oO˳1O_5 /۷?{0sW? Dn?X;sxm3䴽wp79淼~A.+/EUU'(%sS>mΛg7ǐS2֖F]"φFl6wrYPv}Z&*[c5~1ƽ|4ͽ+sMӈ?g=hu]@|folۖo"j&%qvITZ+'\^/rkD0uִ֪j6ywԩj^ -53~3oT mzE"q?k:uϿcauson~;$B?gIoz^}3oۙ׾IX@!f_md@ΘZSV(Yd 4ʄ#z`2(KI _/GW_>ѵ׀ XOWN}).I)A?վyiDt+R*B>YqB1~W#/n#t܉E/P x\\l6; )GQ`)xo#0 +{?L]I{r|\q+vwwNb,XluAcYU m$"Re,-l2sG()m 1k( naqvc䪁V-dtC sv8:o uУ-9Kd6uǒ!GE* 4iu9l{W٦_ڰ AC-dFL E b " 5[Irs *qf+nUnեwnR  ``M3H0Wy|,w5 FN15l7K/ʖb ¬ޏO՗uGr@:+f._"*\٧VGׅtYC%cՔՄ$^ڟJj4l ˓PBwZjl;쾶㹢{W.afc%LV3Kkdh4:XdB_eJG1TL#٘,(F*Ƙ,3gō7X". ќH۬H wS:SWcLh TɢDk92d{B}`o}Neրzmnlu'M[{0w!`XV0fX"RF<ѭdooNS0&C]@}7&ܨȬ۱4Xud=@SC<2zT?yG\=9CH@H[aAG=]0?=iF0zf5L(PI ;2lBԭr.Q(t&Xc H ȁ/9dXļXD-y(Kg1"D|BŤw.|i|`̾IJȺ:g}7es]R@ۥ;{,>e屻;;{luؖPHnvMo>wxDXld^Ukߋ}ZBk8IՔDfr87 o=DD}CppUNs" b8{NUmg9iPT3tLm|p3`EIq@K;O#ic32$QY$py4o͛sXjqbKJثy=,c:gd(#!UgbBPWJ^,Ў $DY , LZrAq6M,*՗ǿBAI&ѬL$VRsv=uQ`E nSNGѲ>}[~7~[/x__?ݽ9Ò1tQOyk>6蕯ɧ>11@j礐l6s,A&ݮڅ౪TA)TOξ sUM!c'@'BHvyo__MI))P2:#g=jzԫo_?hv4L`?+_k'3ï+p˭S{c( (,ݒ0!32T1VX*Ƀ 0y18rI/ne%Xa'0GHF4w,NWwo1[L`pu$||+EDI#Dž 1c5{Pa IB1<3;9W/|;sC0YR&}C󮞄o?_n9uj>~ ۅy* !v[`zfˎzæx̋C$X+j!H~p/W\U/λ_}=3JTJO>[ng7_>kg}8% 4)Y"XAM^($"3_U3M $(-&YbOx?g~>%}Q\U9ݎEu!2{?v!rKn|>2^c2Mu]$8=n%J)y677|fwhx^ܸQ%@&g͕w竿_?|ӿou󇙀ʙk֏д{/c~omW#9 mٶ3>-NyY0*uԮ / Oi=j~ 5Pnr9?=xw_q?5_}40`[E4bk^? Kqgh雾+؍xh,7 Hل$XkFzmwtsc[qZ&-Thay2i/Ť|>Yp8F9p!eo䗁S"~xy`0(($ǽ"c\_ M /6S)5?rHIoɃgBkEg>ӞV_ef6!7[>6ؐQ]1C_abVP g>酯P ]v#c1I, 4؝!?9JEUwla9A26$ _ٯz6<>X.`@d*5\]{5?_nX,K8k5ƍe[Ec75H Rb4qhfcT*D̩'?A:* 8 RV)Iumۖզi6ҍ_X*|6pӚEI*Z(Jd ?( zTWW|;s'}4i":qNh6+㒆öhnAڜzF|`h42H)s2݅t-ŦF)PNEe`-rTRƁ4\"dU9%s`4$(g|2r3gkw?IEDpUW]SUUmllÇ/O\2.&&v b' .{X 8vAutRrW3*έoaTL ̨XvyL[yxojq_p}wĘ"T)B`0MQBlW{T(uṖIpv襵}T!y$~ {"#xLfo)"C4*L7y`Sys$clSv| *zl8 yT\3=sۧ6?[j?M<#*fvww۶` 5M5 WJuQg'CV41'H9xgHy|p:B=B.t0AS 2D&%)Kt|OKBr]ClJ¼p|yK!zEX f'b?,Č+rccR}L4:{TtIX*"eFS @E sNF âyFC?FtՕ3w4GL5 E2Ylȣ3yö m@FFh`G_9+i㺳Y# MOo Uۓp @]1 f* q8_լ}TH᪌ZFLm;0*HZj?Ox}勿UlQ$$X` Q߰g(kgǚfԑ5J8 EGíhVުKXǾF=C‰$;3o=dT?+ Yj,FbzjXr5/Q_XGwU 7~F|ƬmU:Ȣ {0j Z(|+8`>[ktVUs/\rFRLr. }o]JeO:e٬i=n_Ij[k暣GZka۶ׯ:@zmKݡ|C8ղ{/Y8ߍL"! M<01;C8' u |Dc\w\L H0zJ(P{8ծs¶E%׆d;@1؝s fԒv&g޵mx{ԍLs\`k[h8xؽINofz{:vGOu!AUIij64qG?u؞z%Pԟ^QL*m8皦4p@iH'"X_Ƿ߃< [BmzߺHGZyYS-"yc[pHD~{}^?k)@)73gqP11|b,-H({OĈ}q ,ONGЇ>4N_W;v,P.>ڐ, 967ח7;KS}Ĥre3>7/mI5_/y£LEEMW^};ٴs#/O_ 9MPRh\ !`v~ljF.ϣ}⣪Mz#oG|wRPRF%7Y1ɟՍl֟yO߿G%@DwӾt: WΦ{3| E?-6z|_xGgYΎj`ѥ(~ ί> >ݾnQCfYErFNwkxiC*`~4{dBMfx$d3"NӒ-:dLrIJ_u*²}G!:;wQNArE.Gҕ!U]_yUck;o[6"I!trK,˽嗟8|xkmm}ԩcǎ-IB1TziJmgEDR+E撦R o,5"u$F_~ȑibwq7LD]ve]VZ ,)")ѨGY[E #$ m<}[r ~߱W^5Mg]qW߶X>rSed R#̻t[ }= H1bzӄ`+ eOx\Ó=֡4ȑz1{rg?[^g=AP x Uf_5[Ϳ9|/b4 D@oSS<{mg'h_-P5$r _ũz=};oi4l|Ke9q)C@P~#zm2 p70žO D&o{~oxs:#|'rY/.{i{Z-ΥY?Jb؊U7r J`.5[G6~wq-²{gaUU!q{뭷>}sر/xh4q?~Y[[{#)"E@w9G9R;-~ss󪫮*>'V9>|nٹcUUmnn^s5ǎB*p8c N5[_gvxc8~աgoxU 5碻'˵G&" <<`oQ0ѵ_U" 3&K|78)˛qpX <_+?b.u//97(B_wӎ_Gk3v_krB*L\P_pË??~GgwI?yԑ9G_䇌lgd!?MNN /6 r/ST\!?jY_ͻ_?04s֝b!ιx<^4ѻ7&缷BY_[[[n_#$V]oGwޫK&>~~g 3Rl33;%d)WK@y6 ʒ RB{Z#5u618u; HlZ2]=ȯSB*sMIeR?8޶m)AU$ Q :R@ h>y ӔEq`)"x =cGE l+Dt 1x@'mH@>gpaA2fY8S0aH#YPz,>ČZJ _ z%1z !8X%DɎ;"( {DpB#@5AJ0m; Mۢ/+R,0 i\Zƨ2kǩ$lߎSsh^9Ԝɚ|ɏw4{FzӾt@9F2JaʹCj߱NƘt׃;Opb mI)|gl0`  1/JٱĢRXX˳ 0\*_TU&nF9gkpP`1χ[ k]์1)I)Dμ%kimC)I)I:# ".Q̮EHΏ8!a %XsֹӐ!8޻[_}ߵۯsϽtiI3}N8<`"ĨeYps;9m/]!"( \ hQ=VYB}'+07K PiB^ K C7eea,͋3ꝟoO<,&dg -A=J0ћoekMif  #DLB툎 >+͑S%$KyHI@hxT 4{GBQ1 fmns5kJLß9%#O1[u ]eS.?#OԔRow}]'tPnϑ zO@?lWuw<+UcixsQh7MYzhn޹d2z'V̞ԃ}wwi(L " ,FiX*V=/|io|ϾuP##_X SZT@s\gOh*]ꦏz|q'PKj=٬pʆa*[}wy7?YW֑0.Ͻ[yo {U?>vAU,_EwA890ta+.]x7Y"x'|D5ikK./7k} rذқBr¶6FcC1UJ>8phs8w&>)|Q$凿;3ko@kN>_}27Vx?i.GT.G8(n(g>g~eM3y7`WtFrF]9q^`4\и4~*xz/p &oi;Z#C(~{TKd|M,y^CjPVKCEN΂cauOHdp0b,}Hg݂z7@oF饛Ѝ|v10@ն 4n 0a3' ~_}_2|ߜo`c?##O$42d́!7Tףk9鼴lAD*FT0}3?Ղ&:^TͿ42r0*mu}bJS*7@QǛ6Z_%AbާS4gL孏w}-u T|G>Aٕ‘ :u6#m%Pfe5+7}koX]$3{E7MȺGu9qB_%JKU*pAF1kbvbglhS|/ݷoOʿh EBa`*X 7}z>"8#j f 'o}F@dg~{}4yi]Q ޠӓDyAF]gj KQڠrASP4p(s,h (㴌4%?pκti]oƺam."exCo *N?k*p>viP#!BKVIY- +.ZV{}/>}GV9Y{ydk3Vl4#Q9n[VCɂ= ʩ57ND3̎;ų:{%d <Ѧf2f-{>gF$PF009[ ǯۢ_$?4ɦ!X ^՝ذmX|gǖY^z.=gn@_5##sdࡳv)seJjBX"Bkg"-OIuԈ=w ?-\FJz(ݤO&h^Hiz]XsCC9uG/ex gИ4erV_J_?xeCx?͙/f uTnrGFϨ)@3D]Y+Π:rbUIIIQ`ѣ=~e̟^wąl^SL7+~>z:Ly;?B8(2QmuxRv_pXuɤK9HO_u;"Mګ쁷j&WirI2S 0C?C10BC;5B-I,y/KY#⢙P(cWADA=շ2AA F ڸ{>tΰH cO _mY]P_Y Α0&R3ί\B`n "#PMAI.&[UEDllGBO>끏֑4BEC~6=}z^Lߘm݇Elܓ%]iy>r2fnH!ȉ[9"hZ WB&$$ @0J;?~#_,—O艏||{߃M.HX`K5ˎ&hD,(SN͏Fl:μfB 0w G//B|oyy~o|Lh,y.yr&94Q9FN5r:2C;-i ma%vFF955DQ0@e@l?wƯѕ=ual?7;bz{&|ҾvirJ{{q@'r`I|LEҥ?^'TF$޿oHNyF-W?Tʽn&:nZ.}_HW7|ՄiWJ]NVKgA)DفxpZ(T,'JJrA4%.O_K?~?sqa+3>P󆷿G.b[SSazw~~4g0&oz8rB 4Y9u5}dj %9Q.3\fOf='*$;?P.l*ggՍτBsSC  @АÕˇIa$j/+IJP]~3??ēUS;ڝPSoo?׾5g_3F3N~>;\,$f٪󍌼MFn; NgI:>i˫xJGw Gl]C<'3ؼ9MHXS."δ'/^>鋓~g\p۔ỵ|=C\5Kyj9}뺜FU?gͿM=Qr U}yv.} Zij6vE-H::udTSjt!{8zVfOᓘ]%x~Vl1=^%L/Y ̙}t XF~)Y:|'݋W/}ퟣ.q_{׿}/wosE `0(Xw]Lq8|y1Ǯ|6"!yq^3ּ;GGFU{ -:svM_Vy5Y^|uYN X-1ȩfTSFN`9=a~Y0d8ϼm4ur Rnr:y 8;@2]G/?O5. f`,Y&XSS{'^<*(,Y]/| H 0e"cbP#>??2FrB>ffvfV`f I lVr }s5Y)iBS?G=}{st9,4)]]ccXc_ӗufا9{BbҬDɌa׳8*=xm ꖷ/n7.36*کdf6QlJbr/ȗ18u$3yem-v1De,JTsvPmbz hvؐpL&_le Stt'$``Rx[sM,R*s Lt3 V34ZYZR\_ (PyrCP"T* apGTFS !JfEVXЗy,u܇E-$063F@<2@ &V;:qtlZs{HC,by>7qR֨(S6 . 2ȝξS iEZ77"-ATIb=e[T]xiܢQݗswHUw<~Ap(PNPLoR܄Fh&`gA贔FF^r!!B4dSAԈqiu{nfCV*{Qc{;%9G%CK.C~0Tg(Q6&9lrآr|xO0K`T;2( !5ifؑ b;ZNh-ẅ X4*y ?fhBZg;@rGinҘ ѠEW#LQmQרoDMt\ :xTT*өEO0XKI %p F5ϡ0UR( {Ь}Gqi!w  Wk (J )&)xAW㚃݌qǐlP4E94jj3͙ \Ah01؝Ol8~nqAq88~iRgLGE?H/JV 3ܩqpAlq(!P_AknI]%OYR݄S6b)N\zn[+덩"33Jzhb9Rib1siA@׸Y9{ ̐\rP{j S-7ܢP2GFtF!7eȲFVAY4#PEj/W@LA @D:nNq;q|Mp5\IE-E_@VY##wrMB/Z`D.#;t wC#U ٛxv"FF+Nmoe愌a@#HKKKˑӂb8CxxD˽!85PC)5mڰ 2FNjD)Clp hR` B; =cJ(L`4C C!dqR6c?aHqDZRؒ&#J-=39mr(F}#EWڐ*7j_?1E5rW1*N|I-p809C/(".ab HRz  3lljaIyn39R"Hs4;@j?D\B3H [=:~„BI| >j#wr _b#K-GƁA\~3ԐڕXR\x) Ha |KS7 2ؐJ=rf9r~DZ`y 56IҘ4S+6(TjH9=Α#wr0z1UD`JE3@2Ŗb ˊl(וr0R.!ޜ@bdt@H;@9d#f8#.)/(.  L$‘+ S*6+x0_qCCW2`oUKCJ 5B%$H $ !1+3@t ۍ4e=RC{ʉ4RNZN-q~-ufX!B! K{@07vdZL tܹ=r˫zKGgshF[rԱvdP%+L sX8L@<有7q8s`v 9dun0ޖfrsIOh 04242zRsRK=$s#t shZē/͕"_X5,]Mnݎ1] h(&rD$1۽#4[7#{0WFg9 ))Q'"ȁ1]S_[S"]7~,XNf)%LM/ *rϚF"%RG 15ؑ \  $oK^w522Q9^\8bDY̌\T-Ui;X R W9 H 1/"a|p~h0:f3)icKh2˔j"jqIM#ҒsܓEt ܑJS18H )LJæ9 53Q9V r8MH\@*rsAZNz0/5C "`$DBD""0l1j# Ph6dR3a,[Δ{h"Sh6]%&bdjlL+R 4 \ OY[pa YcC j;MŨeYn)'hι[4Qi5GC[a|X\k]}dd]`kAX8ULșsSo\/L[>Ƙc: 3D"T IYBAzhLL74dl@`Ɗdg}]orsmP!HĘPCsIL<8%_ Hƿ V8X c!=(2L)!J$m fǩǕ?ohȘ`zVxb9LAvl~B h652cF!)PԠ=R"4B* 92TX_jc yM&CD?V 1}Ž؁Ac,AG,p@n\>2c: _A84Q!zb'ʐW!HZ'Ì+|l'@$2$6$ f8y# DbDw?3r+8)%& u)0%˖iȲY\lNO`_~qa|D4D?Ƭ06&XBنI*T%%8k1xxުHtg|=@W} 0ua),eޠ.®KUqX9#1(Hc C\B Oz@صvd0#7Nq 'DPB~g92r71*ȗ|ыs)?iK2[еOlWlddddu&GB-RIENDB`NEB/Doc/user_guide/node3.html0000644000700200004540000000577712053147432015240 0ustar marsamoscm 2 People and terms of use next up previous contents
Next: 3 Compilation Up: User's Guide for The Previous: 1 Introduction   Contents

2 People and terms of use

The current maintainers of PWneb are Layla Martin-Samos, Paolo Giannozzi, Stefano de Gironcoli. The original QUANTUM ESPRESSO implementation of NEB was written by Carlo Sbraccia.

PWneb is free software, released under the GNU General Public License.
See http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt, or the file License in the distribution).

We shall greatly appreciate if scientific work done using this code will contain an explicit acknowledgment and the following reference:

P. Giannozzi, S. Baroni, N. Bonini, M. Calandra, R. Car, C. Cavazzoni, D. Ceresoli, G. L. Chiarotti, M. Cococcioni, I. Dabo, A. Dal Corso, S. Fabris, G. Fratesi, S. de Gironcoli, R. Gebauer, U. Gerstmann, C. Gougoussis, A. Kokalj, M. Lazzeri, L. Martin-Samos, N. Marzari, F. Mauri, R. Mazzarello, S. Paolini, A. Pasquarello, L. Paulatto, C. Sbraccia, S. Scandolo, G. Sclauzero, A. P. Seitsonen, A. Smogunov, P. Umari, R. M. Wentzcovitch, J.Phys.:Condens.Matter 21, 395502 (2009), http://arxiv.org/abs/0906.2569



Layla Martin-Samos Colomer 2012-11-21
NEB/Doc/user_guide/node6.html0000644000700200004540000000607012053147432015226 0ustar marsamoscm 4 Parallelism next up previous contents
Next: 4.1 Running on parallel Up: User's Guide for The Previous: 3.1 Running examples   Contents


4 Parallelism

The PWneb code is interfaced to PWscf, which is used as computational engine for total energies and forces. It can therefore take advantage from the two parallelization paradigms currently implemented in QUANTUM ESPRESSO, namely Message Passing Interface (MPI) and OpenMP threads, and exploit all PWscf-specific parallelization options. For a detailed information about parallelization in QUANTUM ESPRESSO, please refer to the general documentation.

As PWneb makes several independent evaluations of energy and forces at each step of the path optimization (one for each point in the configurational space, called ``image'', consituting the path) it is possible to distribute them among processors using an additional level of parallelization (see later).



Subsections

Layla Martin-Samos Colomer 2012-11-21
NEB/Doc/user_guide/contents.png0000644000700200004540000000042612053147432015667 0ustar marsamoscmPNG  IHDRAH PLTEooo[tRNS@fIDATx= 0 _jUTK>Yw:x *VK7Hϟd !xx8!2 *dqM #la"d2ʋz9mٺኝCSr-$𡡗BD`GR wAsV tGIENDB`NEB/Doc/user_guide/node12.html0000644000700200004540000000562312053147432015306 0ustar marsamoscm About this document ... next up previous contents
Up: User's Guide for The Previous: 7 Troubleshooting   Contents

About this document ...

Image quantum_espresso Image democritos
User's Guide for PWneb (version 5.0.2)

This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -t 'User's Guide for The Quantum ESPRESSO Nudged Elastic Band' -html_version 3.2,math -toc_depth 5 -split 5 -toc_stars -show_section_numbers -local_icons -image_type png user_guide.tex

The translation was initiated by Layla Martin-Samos Colomer on 2012-11-21


Layla Martin-Samos Colomer 2012-11-21
NEB/Doc/user_guide/labels.pl0000644000700200004540000000136712053147432015130 0ustar marsamoscm# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. $key = q/SubSec:para/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; $key = q/SubSec:Examples/; $external_labels{$key} = "$URL/" . q|node5.html|; $noresave{$key} = "$nosave"; $key = q/Sec:para/; $external_labels{$key} = "$URL/" . q|node6.html|; $noresave{$key} = "$nosave"; 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. $key = q/SubSec:para/; $external_latex_labels{$key} = q|4.1|; $noresave{$key} = "$nosave"; $key = q/SubSec:Examples/; $external_latex_labels{$key} = q|3.1|; $noresave{$key} = "$nosave"; $key = q/Sec:para/; $external_latex_labels{$key} = q|4|; $noresave{$key} = "$nosave"; 1; NEB/Doc/user_guide/user_guide.css0000644000700200004540000000157312053147432016175 0ustar marsamoscm/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ NEB/Doc/user_guide/democritos.png0000644000700200004540000002310112053147432016175 0ustar marsamoscmPNG  IHDR9Yr-PLTE32f06i54h64i88g;;j?>nA@pEDuHGw HJt!OIuKMw( )!)OQ{$0RT~UV-1WY.2\Y0819_\3:b^:<;Aaefc=Che>D?EeiFLjnnnHNKOrrQWuuSXyxUZZ[}}\b_eydfz{fi|w}x~hpmrosptrvvxxz߀⃆ነ䋋㌒厔⑕唗留䙚曜眝¬鞟蟥ĭ褢礨馪ꧫ쩭͵魯ļϸ믱Ǿɽ{ pHYsVTbU vpAg9Y"IDATx|pUd}ӯi2"hԍ jsSQf.DdDW( q2,}\!*A $$RB0HHB.tխwnwtObj8J2}swϿWddrF*W\AnrF*W\AnrF*W\AnrF*W\Anr?#n,}졝N5v8 \:#})cW+Ǝelw/qv1ɲ*rKtWڌ{^hyPXA{D>㡏RriЃ ,ox\W7kO#>u Se1OXw7^D.S$ ߒ.2Ly͋l9u֮]`j&ű}e|xY;z!Kvnۉ.M97'f,yO#>c vCd<-Qߡw0< zQ+^≸y.&i%`{܂87 M67"nA6VqIc]8X}߭kE>w庤=5+ @6}ncNw`h%V8 ` ۇ3N 08_~𐣃9.$Bgǹinw#Gvzܼħpsldȼ;eQj=<3nǘpE<&q`i1A  bW[q97d9ɉ .k">S[[j/ '1ӔBΝJM\7n ZU᧐n 1lΡ 8׃b/@&'߁s m%4΋L{"BXTyd5= PuJ!gQualr2\Ρ'}ACH^艿>cRfJ Jks5҂ _Ĩd w)YMH\kyo<7ųS?\iЇw51VVǢii\ @9=&x`@{CHKΝ_ ]هRTwI/,/ s4T_L\ \,EbO|:>B6nݨ<СĴsCf&5w{*Svm,h^*ħ9:֭dn.A"#[X(I%o:xwFj4`&ǡ%|PY'Jh>;5pxvw'J .z0V6(Lttf8}Ns%BsmM 0Vf]Ӕp1c344r,%F[["]>7SjxV{H_"g9m"M3)$"DF7vԍc0kǻ9=8 )3^8q@v[¶h7DNG )FtR?ì>)Xm!8n!eJ<M)~Ufso;k5pwx7^1:pѬԛJqPXԜLA}h(l,na{[ph&VӄxvT1T0'ػ}p6kCf5bltz05vQT$G{/ s-hO6vBKぽ!/Fc"J{:/5GJT c6<A`l4Zs{5d3F;m\VIvN.gR p}BzjQŴu]'quq 17+EF{߳|;Fϟ!0vCqpxaeEu>K"/8V4\?pA.!$*{-? maaz 4+y[Gp>HwΡJ8XI,xTs,p{F<q|v\2lvdL"GBAμd`aʸ^*2D.Qg7rV85n{<եG-9 `'^"Y'XˉT-x-/;9a|ed*'Ų:-q!if014X4Ffӯe!l$NFiV+P9ά鰉 /Pbz2dbTZä'Z#;3a҃eՂĞ(ՒQa~:7=^(=f9i[r_[,0Nǭd.j79Zs(8SH&\j1Jq|r݇)kR@Ř#<~Ss3<:NV0V{ͣcgHS‚:Y(gc**UQ^? I"ʦ`o!Gp=uIGu3sK<6oGE|BEwN=Ty.AD>sYzV3zQZx{ oǿÇ Ѫz&[gG-a1fgm9 bŹ_|~to$ɺVnPxvĝ'TV/k egfOz*U5j#NW.51gqg{ި? PK k)8g9;Crh}7YD0F4SDBg˒';%_5Ubxs8w?E#DTݩ뉰PUո߇]}ˮ-U:=X4ek114˫Ch2fJ-4FIb.V7WJЈzITA4/?|?7%Ӻ t__,}. oIrse:B*iHu{'r˸+rp.Kd(:0BOQK?z )|uTk6D^U7.n J YxA|r!Ci γՠ02z MZ7@0:\A7E]hcZI7~P,(k(JKKs\N럎_apB>8d <{zYɑғrw ~q̨ mFގiRlUA9FyOÏ.]T{AA TQ[[{;,U(-CsWSyd)znu*|v^QGB/Q[\ ]80w UldEJ>T]8幡^mC-H; Zt\[ \dkǍwFb􍯘7Toծvtr'69RPvK'$9A)咻!%p,RBVXO) ڣz L䔊J }Y8%+YzPz{RH``QzTQV+jR )JTT<]0"]%X[ZR5"qU=׸\cGJszUǾ7[\ڀ"' p(|S5RQ9ni{o X+y!O6"ZBΡrAsV{VwcYF5>S^~R:*" H9nQFc|ᯐg ';1,w5@蔩-rȹrVfu5R@22V4)ejqUR5O?%sa\(OEw0Ðd( |XBʉ@, RlTx?A~p Mo<)UBH9LSV<#*9Iyjwas4Z8gUB3xxԟ r8;  S!IQc,^pq>.rABe/`pN>JKMǝdE13:h,l9藼^Iގ|0}QO*dyrw yvd?&*"GcqNLVYs RPqn+w(T"s^qF;\>DgX:SB(Ѝι{7\:`˙{6XPL9SjCjY5p]*gLNT4v[W4oiVlQ&k.-fVK7wiBaU;c71|Hz5Ƣ/ՠv.ŝNǽoЭӛuvH l"Tlҝ:h O kMP}o-rzɨLhBO/i`d:F`k^g: wzŞn4cZOTHSX`Ka0+DՏmuiZ88s Z$Gδ[WD`ry/߈dt+_HT5Ou|ߔC:RqnwVA# vqIBˆh.R= I!5o/)mZvt8^t {Qdmιt};tyg {)ց4Rrt3H?'}6,c#Z5 -S/l^[׶.֮%_E,ׯ0\\!g>g5< NָH1ynpA pΡ h_39.ppNVUcdtr3Zm_o 'Oyzj]R ꃴqEK'Rk%Fx'-SsGslwoaV19 e# szsTڴc$ 0QVn)!e=8Xtsd+ L"ћ^]S'8\;7\tp90W9G: vsU$TeQ]]{>r,O-y.w>ͭpNߜ >}»$Rk;k<+r6Jmi^mZa3M<QmwY$Y@3-#'r؟sȹޕ~pQUsiUlº( #FIn 9^s/ 9y׺F\~L>o+_yDV(JH-WV/)$_żb\8+/җ\D0"&J9 M2-Š@W6ɥJׁWn0 ytYT0(0_WΚK[cOH劲\r5W|yRVʣVjw"m6&s4j6DwLCq. K@{{+FJz%J9 )y*m@TJIlr.Hjve/fBwP&1ӳW.  oCB]"E V)VrA8(2?csIČGY}$1sh.9QNw;+tHi"+,"wI/eܮZ d9> >@F}`<[ {ZQB 9?Adu %y JzUxXͥsz ƽ ?3۠T^5314ӈ\/3,5ud‡7絋98ۅ(Mv:7jlv+8ҾsdQJys3t 5o>Awzu\ru{oӉ;F+&͚؛-AȒBJa.r_\@zFi0^6kC{YrV.e%}OTӧ,5ѭJ.MKu~+Sn@~ OsQizX^pɌ˟tyq4C+|]M=JM7"9$A9rceu՝J=K[BJ@uRsa[%]^o 4y cJ~ Kx~THI<챚"].%7' jx}T jI T)H1/{ܙYȢB fga{EqhfnL7-d퇶vOB_T4"MxQBU0A}AY;ܧH ΁V =WqzS0Dek.^ HT`DP#B {d;ҴhZWk$Oe[Mkqp:~qkU(7]W?qVoW;]Ji ӯLpK8L{W T5n`:BMaյXS3ik`~DU: l7v'im.Z=\Duu{f]q6_oڱ+ ?ѪLM|3>mKt{C aON :O4T >8{U% 'hKWʚ5kY;~|9 >NfC}7bB|Ț?J"Ia}#32K$kLb ,7tcG08L|Yq1yYrCP1Mٽрh!Th"&{a/YWFf#_TѩrO;a'hB>3<`}o j ". g]hIENDB`NEB/Doc/user_guide/user_guide.html0000644000700200004540000000000012053147432023571 1NEB/Doc/user_guide/index.htmlustar marsamoscmNEB/Doc/user_guide/node5.html0000644000700200004540000001263012053147432015224 0ustar marsamoscm 3.1 Running examples next up previous contents
Next: 4 Parallelism Up: 3 Compilation Previous: 3 Compilation   Contents


3.1 Running examples

As a final check that compilation was successful, you may want to run some or all of the examples (presently only one). To run the examples, you should follow this procedure:
  1. Edit the environment_variables file in the main QUANTUM ESPRESSO directory, setting the following variables as needed:
    BIN_DIR: directory where executables reside
    PSEUDO_DIR: directory where pseudopotential files reside
    TMP_DIR: directory to be used as temporary storage area
The default values of BIN_DIR and PSEUDO_DIR should be fine, unless you have installed things in nonstandard places. The TMP_DIR variable must point to a directory where you have read and write permissions, with enough available space to host the temporary files produced by the example runs, and possibly offering good I/O performance (i.e., don't use an NFS-mounted directory). N.B. Use a dedicated directory, because the example script will automatically delete all data inside TMP_DIR. If you have compiled the parallel version of QUANTUM ESPRESSO (this is the default if parallel libraries are detected), you will usually have to specify a driver program (such as mpirun or mpiexec) and the number of processors: see Sec.4.1 for details. In order to do that, edit again the environment_variables file and set the PARA_PREFIX and PARA_POSTFIX variables as needed. Parallel executables will be started with a command line like this:
      $PARA_PREFIX neb.x $PARA_POSTFIX -inp file.in > file.out
For example, the command for IBM's POE looks like this:
      poe neb.x -procs 4 -inp file.in > file.out
therefore you will need to set PARA_PREFIX="poe", PARA_POSTFIX="-procs 4". Furthermore, if your machine does not support interactive use, you must run the commands specified below through the batch queuing system installed on that machine. Ask your system administrator for instructions.

Go to NEB/examples and execute:

      ./run_example
This will create a subdirectory results/ containing the input and output files generated by the calculation.

The reference/ subdirectory contains verified output files, that you can check your results against. They were generated on a Linux PC using the Intel compiler. On different architectures the precise numbers could be slightly different, in particular if different FFT dimensions are automatically selected. For this reason, a plain diff of your results against the reference data doesn't work, or at least, it requires human inspection of the results.


next up previous contents
Next: 4 Parallelism Up: 3 Compilation Previous: 3 Compilation   Contents
Layla Martin-Samos Colomer 2012-11-21
NEB/Doc/user_guide/node8.html0000644000700200004540000000545112053147432015232 0ustar marsamoscm 4.2 Parallelization levels next up previous contents
Next: 5 Using PWneb Up: 4 Parallelism Previous: 4.1 Running on parallel   Contents

4.2 Parallelization levels

Data structures are distributed across processors. Processors are organized in a hierarchy of groups, which are identified by different MPI communicators level. The groups hierarchy is as follow:

  world - image_group - PWscf hierarchy

world: is the group of all processors (MPI_COMM_WORLD).

image_group: Processors can then be divided into different image groups, each of them taking care of one or more NEB images.

Image parallelization is of loosely coupled type, so that processors belonging to different image groups communicate only once in a while, whereas processors within the same image group are tightly coupled and communications are more significant (please refer to the user guide of PWscf).

The default number of image groups is one, corresponding to the option -nimage 1 (or, equivalently, -nimages 1).



Layla Martin-Samos Colomer 2012-11-21
NEB/Doc/user_guide.out0000644000700200004540000000101312053147431014045 0ustar marsamoscm\BOOKMARK [1][-]{section.1}{Introduction}{} \BOOKMARK [1][-]{section.2}{People and terms of use}{} \BOOKMARK [1][-]{section.3}{Compilation}{} \BOOKMARK [2][-]{subsection.3.1}{Running examples}{section.3} \BOOKMARK [1][-]{section.4}{Parallelism}{} \BOOKMARK [2][-]{subsection.4.1}{Running on parallel machines}{section.4} \BOOKMARK [2][-]{subsection.4.2}{Parallelization levels}{section.4} \BOOKMARK [1][-]{section.5}{Using PWneb}{} \BOOKMARK [1][-]{section.6}{Performances}{} \BOOKMARK [1][-]{section.7}{Troubleshooting}{} NEB/Doc/INPUT_NEB.html0000644000700200004540000004533312053147432013450 0ustar marsamoscm

Input File Description

Program: neb.x / NEB / Quantum Espresso

TABLE OF CONTENTS

INTRODUCTION

&PATH

string_method | restart_mode | nstep_path | num_of_images | opt_scheme | CI_scheme | first_last_opt | temp_req | ds | k_max | k_min | path_thr | use_masses | use_freezing

CLIMBING_IMAGES

index1, index2, ... indexN

INTRODUCTION

Input data format: { } = optional, [ ] = it depends, | = or

All quantities whose dimensions are not explicitly specified are in
RYDBERG ATOMIC UNITS

BEWARE: TABS, DOS <CR><LF> CHARACTERS ARE POTENTIAL SOURCES OF TROUBLE

General input file structure:
===============================================================================

neb.x DOES NOT READ FROM STANDARD INPUT
There are two ways for running a calculation with neb.x:
1) specifying a file to parse with the ./neb.x -inp or
 neb.x -input command line option.
2) or specifying the number of copies of PWscf input ./neb.x -input\_images.

For case 1) a file containing KEYWORDS has to be written (see below).
These KEYWORDS tells the parser which part of the file regards neb specifics
and which part regards the energy/force engine (at the moment only PW).
After the parsing different files are generated: neb.dat, with
neb specific variables and a set of pw_*.in PWscf input files like
one for each input position. All options for a single SCF calculation apply.

The general structure of the file to be parsed is:

BEGIN
BEGIN_PATH_INPUT
... neb specific namelists and cards
END_PATH_INPUT
BEGIN_ENGINE_INPUT
...pw specific namelists and cards
BEGIN_POSITIONS
FIRST_IMAGE
...pw ATOMIC_POSITIONS card
INTERMEDIATE_IMAGE
...pw ATOMIC_POSITIONS card
LAST_IMAGE
...pw ATOMIC_POSITIONS card
END_POSITIONS
... other pw specific cards
END_ENGINE_INPUT
END

For case 2) neb.dat and all pw_1.in, pw_2.in ... should be already present.

Structure of the input data (file neb.dat) :
===============================================================================

&PATH
  ...
/

[ CLIMBING_IMAGES
   list of images, separated by a comma ]
   

Namelist: PATH

string_method CHARACTER
Default: 'neb'
a string describing the task to be performed:
   'neb',
   'smd'
         
restart_mode CHARACTER
Default: 'from_scratch'
'from_scratch'  : from scratch

'restart'       : from previous interrupted run
         
nstep_path INTEGER
Default: 1
number of ionic + electronic steps
         
num_of_images INTEGER
Default: 0
Number of points used to discretize the path
(it must be larger than 3).
         
opt_scheme CHARACTER
Default: 'quick-min'
Specify the type of optimization scheme:

'sd'         : steepest descent

'broyden'    : quasi-Newton Broyden's second method (suggested)

'broyden2'   : another variant of the quasi-Newton Broyden's
               second method to be tested and compared with the
               previous one.

'quick-min'  : an optimisation algorithm based on the
               projected velocity Verlet scheme

'langevin'   : finite temperature langevin dynamics of the
               string (smd only). It is used to compute the
               average path and the free-energy profile.
         
CI_scheme CHARACTER
Default: 'no-CI'
Specify the type of Climbing Image scheme:

'no-CI'      : climbing image is not used

'auto'       : original CI scheme. The image highest in energy
               does not feel the effect of springs and is
               allowed to climb along the path

'manual'     : images that have to climb are manually selected.
               See also CLIMBING_IMAGES card
         
first_last_opt LOGICAL
Default: .FALSE.
Also the first and the last configurations are optimized
"on the fly" (these images do not feel the effect of the springs).
         
temp_req REAL
Default: 0.D0 Kelvin
Temperature used for the langevin dynamics of the string.
         
ds REAL
Default: 1.D0
Optimisation step length ( Hartree atomic units ).
If opt_scheme="broyden", ds is used as a guess for the
diagonal part of the Jacobian matrix.
         
k_max, k_min REAL
Default: 0.1D0 Hartree atomic units
Set them to use a Variable Elastic Constants scheme
elastic constants are in the range [ k_min, k_max ]
this is useful to rise the resolution around the saddle point.
         
path_thr REAL
Default: 0.05D0 eV / Angstrom
The simulation stops when the error ( the norm of the force
orthogonal to the path in eV/A ) is less than path_thr.
         
use_masses LOGICAL
Default: .FALSE.
If. TRUE. the optimisation of the path is performed using
mass-weighted coordinates. Useful together with quick-min
optimization scheme, if some bonds are much stiffer than
others. By assigning a larger (fictitious) mass to atoms
with stiff bonds, one may use a longer time step "ds"
         
use_freezing LOGICAL
Default: .FALSE.
If. TRUE. the images are optimised according to their error:
only those images with an error larger than half of the largest
are optimised. The other images are kept frozen.
         

Card: CLIMBING_IMAGES

Optional card, needed only if CI_scheme = 'manual', ignored otherwise !

Syntax:

CLIMBING_IMAGES
index1, index2, ... indexN   

Description of items:


index1, index2, ... indexN INTEGER
index1, index2, ..., indexN are indices of the images to which the
Climbing-Image procedure apply. If more than one image is specified
they must be separated by a comma.
            
This file has been created by helpdoc utility.
NEB/Doc/user_guide.log0000644000700200004540000002247312053147431014034 0ustar marsamoscmThis is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) (format=pdflatex 2012.9.4) 21 NOV 2012 13:54 entering extended mode **user_guide.tex (./user_guide.tex LaTeX2e <2003/12/01> Babel and hyphenation patterns for american, french, german, ngerman, b ahasa, basque, bulgarian, catalan, croatian, czech, danish, dutch, esperanto, e stonian, finnish, greek, icelandic, irish, italian, latin, magyar, norsk, polis h, portuges, romanian, russian, serbian, slovak, slovene, spanish, swedish, tur kish, ukrainian, nohyphenation, loaded. (/usr/share/texmf/tex/latex/base/article.cls Document Class: article 2004/02/16 v1.4f Standard LaTeX document class (/usr/share/texmf/tex/latex/base/size12.clo File: size12.clo 2004/02/16 v1.4f Standard LaTeX file (size option) ) \c@part=\count79 \c@section=\count80 \c@subsection=\count81 \c@subsubsection=\count82 \c@paragraph=\count83 \c@subparagraph=\count84 \c@figure=\count85 \c@table=\count86 \abovecaptionskip=\skip41 \belowcaptionskip=\skip42 \bibindent=\dimen102 ) (/usr/share/texmf/tex/latex/html/html.sty (/usr/share/texmf/tex/latex/hyperref/hyperref.sty Package: hyperref 2003/11/30 v6.74m Hypertext links for LaTeX (/usr/share/texmf/tex/latex/graphics/keyval.sty Package: keyval 1999/03/16 v1.13 key=value parser (DPC) \KV@toks@=\toks14 ) \@linkdim=\dimen103 \Hy@linkcounter=\count87 \Hy@pagecounter=\count88 (/usr/share/texmf/tex/latex/hyperref/pd1enc.def File: pd1enc.def 2003/11/30 v6.74m Hyperref: PDFDocEncoding definition (HO) ) (/usr/share/texmf/tex/latex/hyperref/hyperref.cfg File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive and teTeX ) Package hyperref Info: Hyper figures OFF on input line 1880. Package hyperref Info: Link nesting OFF on input line 1885. Package hyperref Info: Hyper index ON on input line 1888. Package hyperref Info: Plain pages ON on input line 1893. Package hyperref Info: Backreferencing OFF on input line 1900. Implicit mode ON; LaTeX internals redefined Package hyperref Info: Bookmarks ON on input line 2004. (/usr/share/texmf/tex/latex/html/url.sty Package: url 1999/03/02 ver 1.4 Verb mode for urls, email addresses, and file names ) LaTeX Info: Redefining \url on input line 2143. \Fld@menulength=\count89 \Field@Width=\dimen104 \Fld@charsize=\dimen105 \Choice@toks=\toks15 \Field@toks=\toks16 Package hyperref Info: Hyper figures OFF on input line 2618. Package hyperref Info: Link nesting OFF on input line 2623. Package hyperref Info: Hyper index ON on input line 2626. Package hyperref Info: backreferencing OFF on input line 2633. Package hyperref Info: Link coloring OFF on input line 2638. \c@Item=\count90 \c@Hfootnote=\count91 ) *hyperref using default driver hpdftex* (/usr/share/texmf/tex/latex/hyperref/hpdftex.def File: hpdftex.def 2003/11/30 v6.74m Hyperref driver for pdfTeX (/usr/share/texmf/tex/latex/psnfss/pifont.sty Package: pifont 2004/09/15 PSNFSS-v9.2 Pi font support (SPQR) LaTeX Font Info: Try loading font information for U+pzd on input line 63. (/usr/share/texmf/tex/latex/psnfss/upzd.fd File: upzd.fd 2001/06/04 font definitions for U/pzd. ) LaTeX Font Info: Try loading font information for U+psy on input line 64. (/usr/share/texmf/tex/latex/psnfss/upsy.fd File: upsy.fd 2001/06/04 font definitions for U/psy. )) \Fld@listcount=\count92 \@outlinefile=\write3 ) Package: html 1999/07/19 v1.38 hypertext commands for latex2html (nd, hws, rrm) \c@lpart=\count93 \c@lchapter=\count94 \c@chapter=\count95 \c@lsection=\count96 \c@lsubsection=\count97 \c@lsubsubsection=\count98 \c@lparagraph=\count99 \c@lsubparagraph=\count100 \c@lsubsubparagraph=\count101 \ptrfile=\write4 ) (/usr/share/texmf/tex/latex/graphics/graphicx.sty Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR) (/usr/share/texmf/tex/latex/graphics/graphics.sty Package: graphics 2001/07/07 v1.0n Standard LaTeX Graphics (DPC,SPQR) (/usr/share/texmf/tex/latex/graphics/trig.sty Package: trig 1999/03/16 v1.09 sin cos tan (DPC) ) (/usr/share/texmf/tex/latex/graphics/graphics.cfg File: graphics.cfg 2005/02/03 v1.3 graphics configuration of teTeX/TeXLive ) Package graphics Info: Driver file: pdftex.def on input line 80. (/usr/share/texmf/tex/latex/graphics/pdftex.def File: pdftex.def 2002/06/19 v0.03k graphics/color for pdftex \Gread@gobject=\count102 )) \Gin@req@height=\dimen106 \Gin@req@width=\dimen107 ) (./user_guide.aux) \openout1 = `user_guide.aux'. LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 27. LaTeX Font Info: ... okay on input line 27. LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 27. LaTeX Font Info: ... okay on input line 27. LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 27. LaTeX Font Info: ... okay on input line 27. LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 27. LaTeX Font Info: ... okay on input line 27. LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 27. LaTeX Font Info: ... okay on input line 27. LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 27. LaTeX Font Info: ... okay on input line 27. LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 27. LaTeX Font Info: ... okay on input line 27. Package hyperref Info: Link coloring OFF on input line 27. (/usr/share/texmf/tex/latex/hyperref/nameref.sty Package: nameref 2003/12/03 v2.21 Cross-referencing by name of section \c@section@level=\count103 ) LaTeX Info: Redefining \ref on input line 27. LaTeX Info: Redefining \pageref on input line 27. (./user_guide.out) (./user_guide.out) \openout3 = `user_guide.out'. (/usr/share/texmf/tex/context/base/supp-pdf.tex (/usr/share/texmf/tex/context/base/supp-mis.tex loading : Context Support Macros / Miscellaneous (2004.10.26) \protectiondepth=\count104 \scratchcounter=\count105 \scratchtoks=\toks17 \scratchdimen=\dimen108 \scratchskip=\skip43 \scratchmuskip=\muskip10 \scratchbox=\box26 \scratchread=\read1 \scratchwrite=\write5 \zeropoint=\dimen109 \onepoint=\dimen110 \onebasepoint=\dimen111 \minusone=\count106 \thousandpoint=\dimen112 \onerealpoint=\dimen113 \emptytoks=\toks18 \nextbox=\box27 \nextdepth=\dimen114 \everyline=\toks19 \!!counta=\count107 \!!countb=\count108 \recursecounter=\count109 ) loading : Context Support Macros / PDF (2004.03.26) \nofMPsegments=\count110 \nofMParguments=\count111 \MPscratchCnt=\count112 \MPscratchDim=\dimen115 \MPnumerator=\count113 \everyMPtoPDFconversion=\toks20 ) <../../Doc/quantum_espresso.pdf, id=47, 532.99126pt x 181.67876pt> File: ../../Doc/quantum_espresso.pdf Graphic file (type pdf) <../../Doc/democritos.pdf, id=48, 262.9825pt x 76.285pt> File: ../../Doc/democritos.pdf Graphic file (type pdf) LaTeX Font Info: External font `cmex10' loaded for size (Font) <14.4> on input line 50. LaTeX Font Info: External font `cmex10' loaded for size (Font) <7> on input line 50. (./user_guide.toc LaTeX Font Info: External font `cmex10' loaded for size (Font) <12> on input line 4. LaTeX Font Info: External font `cmex10' loaded for size (Font) <8> on input line 4. LaTeX Font Info: External font `cmex10' loaded for size (Font) <6> on input line 4. LaTeX Font Info: Font shape `OT1/cmtt/bx/n' in size <12> not available (Font) Font shape `OT1/cmtt/m/n' tried instead on input line 8. ) \tf@toc=\write6 \openout6 = `user_guide.toc'. [1 {/usr/share/texmf-var/fonts/map/pdftex/updmap/pdftex.map} <../../Doc/quantum_es presso.pdf> <../../Doc/democritos.pdf>] Overfull \hbox (4.69153pt too wide) in paragraph at lines 107--112 \OT1/cmr/m/n/12 loaded, un-packed and com-piled by just typ-ing \OT1/cmtt/m/n/1 2 make neb\OT1/cmr/m/n/12 , from the main \OT1/cmr/m/sc/12 Quan-tum ESPRESSO [] LaTeX Font Info: Try loading font information for OMS+cmr on input line 113. (/usr/share/texmf/tex/latex/base/omscmr.fd File: omscmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions ) LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <12> not available (Font) Font shape `OMS/cmsy/m/n' tried instead on input line 113. [2] [3] [4] LaTeX Font Info: Font shape `OT1/cmtt/bx/n' in size <17.28> not available (Font) Font shape `OT1/cmtt/m/n' tried instead on input line 264. [5] [6] [7] (./user_guide.aux) LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. ) Here is how much of TeX's memory you used: 2897 strings out of 94500 38417 string characters out of 1176767 89738 words of memory out of 1000000 6031 multiletter control sequences out of 10000+50000 10952 words of font info for 39 fonts, out of 500000 for 2000 580 hyphenation exceptions out of 1000 34i,4n,36p,226b,255s stack positions out of 1500i,500n,5000p,200000b,5000s PDF statistics: 146 PDF objects out of 300000 33 named destinations out of 131072 107 words of extra memory for PDF output out of 65536 Output written on user_guide.pdf (7 pages, 145699 bytes). NEB/Doc/input_xx.xsl0000777000700200004540000000000012053147432020542 2../../dev-tools/input_xx.xslustar marsamoscmNEB/Doc/Makefile0000644000700200004540000000334112053145633012631 0ustar marsamoscmHELPDOC=../../dev-tools/helpdoc LATEX = pdflatex LATEX2HTML = latex2html PDFS = user_guide.pdf AUXS = $(PDFS:.pdf=.aux) LOGS = $(PDFS:.pdf=.log) OUTS = $(PDFS:.pdf=.out) TOCS = $(PDFS:.pdf=.toc) doc: all all: pdf html defs pdf: $(PDFS) html: user_guide $(PDFS): %.pdf: %.tex $(LATEX) $< $(LATEX) $< clean: - rm -f $(PDFS) $(AUXS) $(LOGS) $(OUTS) $(TOCS) *~ - rm -rf user_guide/ - rm -f INPUT_*.html INPUT_*.txt INPUT_*.xml - rm -rf input_xx.xsl - rm -rf ../../Doc/INPUT_NEB.* user_guide: user_guide.pdf rm -rf user_guide/ latex2html \ -t "User's Guide for The Quantum ESPRESSO Nudged Elastic Band" \ -html_version 3.2,math \ -toc_depth 5 -split 5 -toc_stars -show_section_numbers \ -local_icons -image_type png \ user_guide.tex cd user_guide; \ for file in *.html; do \ cp $$file /tmp/$$file; \ cat /tmp/$$file | sed 's/HREF="http/NAME="http/g' | sed 's/mathend000#//g' - > $$file; \ rm -f /tmp/$$file; \ done @echo "" @echo "***" @echo "*** User's Guide created in user_guide/user_guide.html" @echo "***" @echo "" defs: link_input_xx INPUT_NEB.html INPUT_NEB.txt link_on_main_doc link_input_xx: @(if test ! -f input_xx.xsl; then \ (if test -f ../../dev-tools/input_xx.xsl; then \ (ln -sf ../../dev-tools/input_xx.xsl input_xx.xsl) ; \ else \ echo ; \ echo " Sorry, can not find input_xx.xsl html style file !!!" ; \ echo ; \ fi) ; fi) INPUT_NEB.html: %.html: %.def $(HELPDOC) $< INPUT_NEB.txt: %.txt: %.def $(HELPDOC) $< link_on_main_doc: -@( cd ../../Doc ; ln -fs ../NEB/Doc/INPUT_NEB.html . ; \ ln -fs ../NEB/Doc/INPUT_NEB.xml . ; \ ln -fs ../NEB/Doc/INPUT_NEB.txt .) NEB/Doc/user_guide.toc0000644000700200004540000000135712053147431014036 0ustar marsamoscm\contentsline {section}{\numberline {1}Introduction}{1}{section.1} \contentsline {section}{\numberline {2}People and terms of use}{2}{section.2} \contentsline {section}{\numberline {3}Compilation}{2}{section.3} \contentsline {subsection}{\numberline {3.1}Running examples}{2}{subsection.3.1} \contentsline {section}{\numberline {4}Parallelism}{3}{section.4} \contentsline {subsection}{\numberline {4.1}Running on parallel machines}{4}{subsection.4.1} \contentsline {subsection}{\numberline {4.2}Parallelization levels}{4}{subsection.4.2} \contentsline {section}{\numberline {5}Using \texttt {PWneb}}{5}{section.5} \contentsline {section}{\numberline {6}Performances}{7}{section.6} \contentsline {section}{\numberline {7}Troubleshooting}{7}{section.7} NEB/Doc/INPUT_NEB.xml0000644000700200004540000001551412053147432013302 0ustar marsamoscm Input data format: { } = optional, [ ] = it depends, | = or All quantities whose dimensions are not explicitly specified are in RYDBERG ATOMIC UNITS BEWARE: TABS, DOS <CR><LF> CHARACTERS ARE POTENTIAL SOURCES OF TROUBLE General input file structure: =============================================================================== neb.x DOES NOT READ FROM STANDARD INPUT There are two ways for running a calculation with neb.x: 1) specifying a file to parse with the ./neb.x -inp or neb.x -input command line option. 2) or specifying the number of copies of PWscf input ./neb.x -input\_images. For case 1) a file containing KEYWORDS has to be written (see below). These KEYWORDS tells the parser which part of the file regards neb specifics and which part regards the energy/force engine (at the moment only PW). After the parsing different files are generated: neb.dat, with neb specific variables and a set of pw_*.in PWscf input files like one for each input position. All options for a single SCF calculation apply. The general structure of the file to be parsed is: BEGIN BEGIN_PATH_INPUT ... neb specific namelists and cards END_PATH_INPUT BEGIN_ENGINE_INPUT ...pw specific namelists and cards BEGIN_POSITIONS FIRST_IMAGE ...pw ATOMIC_POSITIONS card INTERMEDIATE_IMAGE ...pw ATOMIC_POSITIONS card LAST_IMAGE ...pw ATOMIC_POSITIONS card END_POSITIONS ... other pw specific cards END_ENGINE_INPUT END For case 2) neb.dat and all pw_1.in, pw_2.in ... should be already present. Structure of the input data (file neb.dat) : =============================================================================== &PATH ... / [ CLIMBING_IMAGES list of images, separated by a comma ] 'neb' a string describing the task to be performed: 'neb', 'smd' 'from_scratch' 'from_scratch' : from scratch 'restart' : from previous interrupted run number of ionic + electronic steps 1 0 Number of points used to discretize the path (it must be larger than 3). 'quick-min' Specify the type of optimization scheme: 'sd' : steepest descent 'broyden' : quasi-Newton Broyden's second method (suggested) 'broyden2' : another variant of the quasi-Newton Broyden's second method to be tested and compared with the previous one. 'quick-min' : an optimisation algorithm based on the projected velocity Verlet scheme 'langevin' : finite temperature langevin dynamics of the string (smd only). It is used to compute the average path and the free-energy profile. 'no-CI' Specify the type of Climbing Image scheme: 'no-CI' : climbing image is not used 'auto' : original CI scheme. The image highest in energy does not feel the effect of springs and is allowed to climb along the path 'manual' : images that have to climb are manually selected. See also CLIMBING_IMAGES card .FALSE. Also the first and the last configurations are optimized "on the fly" (these images do not feel the effect of the springs). 0.D0 Kelvin Temperature used for the langevin dynamics of the string. 1.D0 Optimisation step length ( Hartree atomic units ). If opt_scheme="broyden", ds is used as a guess for the diagonal part of the Jacobian matrix. 0.1D0 Hartree atomic units Set them to use a Variable Elastic Constants scheme elastic constants are in the range [ k_min, k_max ] this is useful to rise the resolution around the saddle point. 0.05D0 eV / Angstrom The simulation stops when the error ( the norm of the force orthogonal to the path in eV/A ) is less than path_thr. .FALSE. If. TRUE. the optimisation of the path is performed using mass-weighted coordinates. Useful together with quick-min optimization scheme, if some bonds are much stiffer than others. By assigning a larger (fictitious) mass to atoms with stiff bonds, one may use a longer time step "ds" .FALSE. If. TRUE. the images are optimised according to their error: only those images with an error larger than half of the largest are optimised. The other images are kept frozen. index1, index2, ... indexN index1, index2, ..., indexN are indices of the images to which the Climbing-Image procedure apply. If more than one image is specified they must be separated by a comma. NEB/Doc/user_guide.aux0000644000700200004540000000302012053147431014033 0ustar marsamoscm\relax \ifx\hyper@anchor\@undefined \global \let \oldcontentsline\contentsline \gdef \contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} \global \let \oldnewlabel\newlabel \gdef \newlabel#1#2{\newlabelxx{#1}#2} \gdef \newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} \AtEndDocument{\let \contentsline\oldcontentsline \let \newlabel\oldnewlabel} \else \global \let \hyper@last\relax \fi \@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}{section.1}} \@writefile{toc}{\contentsline {section}{\numberline {2}People and terms of use}{2}{section.2}} \@writefile{toc}{\contentsline {section}{\numberline {3}Compilation}{2}{section.3}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Running examples}{2}{subsection.3.1}} \newlabel{SubSec:Examples}{{3.1}{2}{Running examples\relax }{subsection.3.1}{}} \@writefile{toc}{\contentsline {section}{\numberline {4}Parallelism}{3}{section.4}} \newlabel{Sec:para}{{4}{3}{Parallelism\relax }{section.4}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Running on parallel machines}{4}{subsection.4.1}} \newlabel{SubSec:para}{{4.1}{4}{Running on parallel machines\relax }{subsection.4.1}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Parallelization levels}{4}{subsection.4.2}} \@writefile{toc}{\contentsline {section}{\numberline {5}Using \texttt {PWneb}}{5}{section.5}} \@writefile{toc}{\contentsline {section}{\numberline {6}Performances}{7}{section.6}} \@writefile{toc}{\contentsline {section}{\numberline {7}Troubleshooting}{7}{section.7}} NEB/Doc/user_guide.tex0000644000700200004540000004265112053145633014055 0ustar marsamoscm\documentclass[12pt,a4paper]{article} \def\version{5.0.2} \def\qe{{\sc Quantum ESPRESSO}} \def\NEB{\texttt{PWneb}} % to be decided \usepackage{html} % BEWARE: don't revert from graphicx for epsfig, because latex2html % doesn't handle epsfig commands !!! \usepackage{graphicx} \textwidth = 17cm \textheight = 24cm \topmargin =-1 cm \oddsidemargin = 0 cm \def\pwx{\texttt{pw.x}} \def\cpx{\texttt{cp.x}} \def\phx{\texttt{ph.x}} \def\nebx{\texttt{neb.x}} \def\configure{\texttt{configure}} \def\PWscf{\texttt{PWscf}} \def\PHonon{\texttt{PHonon}} \def\CP{\texttt{CP}} \def\PostProc{\texttt{PostProc}} \def\make{\texttt{make}} \begin{document} \author{} \date{} \def\qeImage{../../Doc/quantum_espresso.pdf} \def\democritosImage{../../Doc/democritos.pdf} \begin{htmlonly} \def\qeImage{../../Doc/quantum_espresso.png} \def\democritosImage{../../Doc/democritos.png} \end{htmlonly} \title{ \includegraphics[width=5cm]{\qeImage} \hskip 2cm \includegraphics[width=6cm]{\democritosImage}\\ \vskip 1cm % title \Huge User's Guide for \NEB\ \Large (version \version) } %\endhtmlonly \maketitle \tableofcontents \section{Introduction} This guide covers the usage of \NEB, version \version: an open-source package for the calculation of energy barriers and reaction pathway using the Nudged Elastic Band (NEB) method. This guide assumes that you know the physics that \NEB\ describes and the methods it implements. It also assumes that you have already installed, or know how to install, \qe. If not, please read the general User's Guide for \qe, found in directory \texttt{Doc/} two levels above the one containing this guide; or consult the web site:\\ \texttt{http://www.quantum-espresso.org}. \NEB \ is part of the \qe \ distribution and uses the \PWscf\ package as electronic-structure computing tools (``engine''). It is however written in a modular way and could be adapted to use other codes as ``engine''. Note that since v.4.3 \PWscf\ no longer performs NEB calculations. Also note that NEB with Car-Parrinello molecular dynamics is not implemented anymore since v.4.3. \section{People and terms of use} The current maintainers of \NEB\ are Layla Martin-Samos, Paolo Giannozzi, Stefano de Gironcoli. The original \qe \ implementation of NEB was written by Carlo Sbraccia. \NEB\ is free software, released under the GNU General Public License. \\ See \texttt{http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt}, or the file License in the distribution). We shall greatly appreciate if scientific work done using this code will contain an explicit acknowledgment and the following reference: \begin{quote} P. Giannozzi, S. Baroni, N. Bonini, M. Calandra, R. Car, C. Cavazzoni, D. Ceresoli, G. L. Chiarotti, M. Cococcioni, I. Dabo, A. Dal Corso, S. Fabris, G. Fratesi, S. de Gironcoli, R. Gebauer, U. Gerstmann, C. Gougoussis, A. Kokalj, M. Lazzeri, L. Martin-Samos, N. Marzari, F. Mauri, R. Mazzarello, S. Paolini, A. Pasquarello, L. Paulatto, C. Sbraccia, S. Scandolo, G. Sclauzero, A. P. Seitsonen, A. Smogunov, P. Umari, R. M. Wentzcovitch, J.Phys.:Condens.Matter 21, 395502 (2009), http://arxiv.org/abs/0906.2569 \end{quote} \section{Compilation} \NEB\ is a package tightly bound to \qe. For instruction on how to download and compile \qe, please refer to the general Users' Guide, available in file \texttt{Doc/user\_guide.pdf} under the main \qe\ directory, or in web site \texttt{http://www.quantum-espresso.org}. Once \qe\ is correctly configured, \NEB\ can be automatically downloaded, unpacked and compiled by just typing \texttt{make neb}, from the main \qe\ directory. \texttt{make neb} will produce the following codes in \texttt{NEB/src}: \begin{itemize} \item \nebx: calculates reaction barriers and pathways using NEB. \item \texttt{path\_int.x}: generates a reaction path (a set of points in the configuration space of the atomic system, called ``images''), by interpolating the supplied path. The new path can have a different number of images than the old one and the initial and final images of the new path can differ from the original ones. The utility \texttt{path\_interpolation.sh} in the \texttt{tools/} directory shows how to use the code. \end{itemize} Symlinks to executable programs will be placed in the \texttt{bin/} subdirectory of the main \qe\ directory. \subsection{Running examples} \label{SubSec:Examples} As a final check that compilation was successful, you may want to run some or all of the examples (presently only one). To run the examples, you should follow this procedure: \begin{enumerate} \item Edit the \texttt{environment\_variables} file in the main \qe \ directory, setting the following variables as needed: \begin{quote} BIN\_DIR: directory where executables reside\\ PSEUDO\_DIR: directory where pseudopotential files reside\\ TMP\_DIR: directory to be used as temporary storage area \end{quote} \end{enumerate} The default values of BIN\_DIR and PSEUDO\_DIR should be fine, unless you have installed things in nonstandard places. The TMP\_DIR variable must point to a directory where you have read and write permissions, with enough available space to host the temporary files produced by the example runs, and possibly offering good I/O performance (i.e., don't use an NFS-mounted directory). \textbf{N.B.} Use a dedicated directory, because the example script will automatically delete all data inside TMP\_DIR. If you have compiled the parallel version of \qe\ (this is the default if parallel libraries are detected), you will usually have to specify a driver program (such as \texttt{mpirun} or \texttt{mpiexec}) and the number of processors: see Sec.\ref{SubSec:para} for details. In order to do that, edit again the \texttt{environment\_variables} file and set the PARA\_PREFIX and PARA\_POSTFIX variables as needed. Parallel executables will be started with a command line like this: \begin{verbatim} $PARA_PREFIX neb.x $PARA_POSTFIX -inp file.in > file.out \end{verbatim} For example, the command for IBM's POE looks like this: \begin{verbatim} poe neb.x -procs 4 -inp file.in > file.out \end{verbatim} therefore you will need to set PARA\_PREFIX="poe", PARA\_POSTFIX="-procs 4". Furthermore, if your machine does not support interactive use, you must run the commands specified below through the batch queuing system installed on that machine. Ask your system administrator for instructions. Go to NEB/examples and execute: \begin{verbatim} ./run_example \end{verbatim} This will create a subdirectory \texttt{results/} containing the input and output files generated by the calculation. The \texttt{reference/} subdirectory contains verified output files, that you can check your results against. They were generated on a Linux PC using the Intel compiler. On different architectures the precise numbers could be slightly different, in particular if different FFT dimensions are automatically selected. For this reason, a plain diff of your results against the reference data doesn't work, or at least, it requires human inspection of the results. \section{Parallelism} \label{Sec:para} The \NEB\ code is interfaced to \PWscf, which is used as computational engine for total energies and forces. It can therefore take advantage from the two parallelization paradigms currently implemented in \qe, namely Message Passing Interface (MPI) and OpenMP threads, and exploit all \PWscf-specific parallelization options. For a detailed information about parallelization in \qe, please refer to the general documentation. As \NEB \ makes several independent evaluations of energy and forces at each step of the path optimization (one for each point in the configurational space, called ``image'', consituting the path) it is possible to distribute them among processors using an additional level of parallelization (see later). %corresponding to a point in configuration space (i.e. to %a different set of atomic positions). \subsection{Running on parallel machines} \label{SubSec:para} Parallel execution is strongly system- and installation-dependent. Typically one has to specify: \begin{enumerate} \item a launcher program (not always needed), such as \texttt{poe}, \texttt{mpirun}, \texttt{mpiexec}, with the appropriate options (if any); \item the number of processors, typically as an option to the launcher program, but in some cases to be specified after the name of the program to be executed; \item the program to be executed, with the proper path if needed: for instance, \texttt{./neb.x}, or \texttt{\$HOME/bin/neb.x}, or whatever applies; \item other \texttt{PWscf}-specific parallelization options, to be read and interpreted by the running code; \item the number of image groups used by NEB (see next subsection). \end{enumerate} Items 1) and 2) are machine- and installation-dependent, and may be different for interactive and batch execution. Note that large parallel machines are often configured so as to disallow interactive execution: if in doubt, ask your system administrator. Item 3) also depend on your specific configuration (shell, execution path, etc). Item 4) is optional but may be important: see the following section for the meaning of the various options. For illustration, here is how to run \texttt{neb.x} \ on 16 processors partitioned into 4 image groups (4 processors each), for a path containing at least 4 images with POE: \begin{verbatim} poe neb.x -procs 16 -nimage 4 -inp input \end{verbatim} \subsection{Parallelization levels} Data structures are distributed across processors. Processors are organized in a hierarchy of groups, which are identified by different MPI communicators level. The groups hierarchy is as follow: \begin{verbatim} world - image_group - PWscf hierarchy \end{verbatim} \texttt{world}: is the group of all processors (MPI\_COMM\_WORLD). \texttt{image\_group}: Processors can then be divided into different image groups, each of them taking care of one or more NEB images. %{\bf Communications}: Image parallelization is of loosely coupled type, so that processors belonging to different image groups communicate only once in a while, whereas processors within the same image group are tightly coupled and communications are more significant (please refer to the user guide of \PWscf). The default number of image groups is one, corresponding to the option \texttt{-nimage 1} (or, equivalently, \texttt{-nimages 1}). \newpage \section{Using \NEB} NEB calculations with \texttt{neb.x} can be started in two different ways: \begin{enumerate} \item by reading a single input file, specified with the command line option \texttt{-inp} (or \texttt{-input}); \item by specifying the number $N$ of images with the command line option \texttt{-input\_images N}, and providing the input data for \NEB\ in a file named \texttt{neb.dat} and for the \PWscf\ engine in the files \texttt{pw\_X.in} ($X=1,...,N$, see also below). \end{enumerate} In the first case, the input file contains keywords (described here below) that enable the code to distinguish between parts of the input containing NEB-specific parameters and parts containing instructions for the computational engine (only PW is currently supported). \noindent\textbf{N.B.:} the \nebx\ code does not read from standard input, so that input redirection (e.g., \texttt{neb.x < neb.in ...}) cannot be used. The general structure of the file to be parsed should be as follows: \begin{verbatim} BEGIN BEGIN_PATH_INPUT ~... neb specific namelists and cards END_PATH_INPUT BEGIN_ENGINE_INPUT ~...pw specific namelists and cards BEGIN_POSITIONS FIRST_IMAGE ~...pw ATOMIC_POSITIONS card INTERMEDIATE_IMAGE ~...pw ATOMIC_POSITIONS card LAST_IMAGE ~...pw ATOMIC_POSITIONS card END_POSITIONS ~... other pw specific cards END_ENGINE_INPUT END \end{verbatim} After the parsing is completed, several files are generated by \NEB, more specifically: \texttt{neb.dat}, with NEB-related input data, and a set of input files in the \PWscf\ format, \texttt{pw\_1.in}, \ldots, \texttt{pw\_N.in}, one for each set of atomic position (image) found in the original input file. For the second case, the \texttt{neb.dat} file and all \texttt{pw\_X.in} should be already present in the directory where the code is started. A detailed description of all NEB-specific input variables is contained in the input description files \texttt{Doc/INPUT\_NEB.*}, while for the \PWscf\ engine all the options of a \texttt{scf} calculation apply (see \texttt{PW/Doc/INPUT\_PW.*} and \texttt{example01} in the \texttt{NEB/examples} directory). A NEB calculation will produce a number of output files containing additional information on the minimum-energy path. The following files are created in the directory were the code is started: \begin{description} \item[\texttt{prefix.dat}] is a three-column file containing the position of each image on the reaction coordinate (arb. units), its energy in eV relative to the energy of the first image and the residual error for the image in eV/$a_0$. \item[\texttt{prefix.int}] contains an interpolation of the path energy profile that pass exactly through each image; it is computed using both the image energies and their derivatives \item[\texttt{prefix.path}] information used by \qe\ to restart a path calculation, its format depends on the input details and is undocumented \item[\texttt{prefix.axsf}] atomic positions of all path images in the XCrySDen animation format: to visualize it, use \texttt{xcrysden -\--axsf prefix.axsf} \item[\texttt{prefix.xyz}] atomic positions of all path images in the generic xyz format, used by many quantum-chemistry softwares \item[\texttt{prefix.crd}] path information in the input format used by \pwx, suitable for a manual restart of the calculation \end{description} where \texttt{prefix} is the \PWscf\ variable specified in the input. The more verbose output from the \PWscf\ engine is not printed on the standard output, but is redirected into a file stored in the image-specific temporary directories (e.g. \texttt{outdir/prefix\_1/PW.out} for the first image, etc.). NEB calculations are a bit tricky in general and require extreme care to be setup correctly. Sometimes it can easily take hundreds of iterations for them to converge, depending on the number of atoms and of images. Here you can find some advice (courtesy of Lorenzo Paulatto): \begin{enumerate} \item Don't use Climbing Image (CI) from the beginning. It makes convergence slower, especially if the special image changes during the convergence process (this may happen if \texttt{CI\_scheme='auto'} and if it does it may mess up everything). Converge your calculation, then restart from the last configuration with CI option enabled (note that this will {\em increase} the barrier). \item Carefully choose the initial path. If you ask the code to use more images than those you have supplied on input, the code will make a linear interpolation of the atomic positions between consecutive input images. You can visualize the \texttt{.axsf} file with XCrySDen as an animation: take some time to check if any atoms overlap or get very close in some of the new images (in that case you will have to supply intermediate images). %% the following should have been fixed (GS) %Remember that \qe\ assumes continuity %between the first and the last image at the initial condition. In other %words, periodic images are NOT used; you may have to manually translate %an atom by one or more unit cell base vectors in order to have a meaningful %initial path. \item Try to start the NEB process with most atomic positions fixed, in order to converge the more "problematic" ones, before leaving all atoms move. \item Especially for larger systems, you can start NEB with lower accuracy (less k-points, lower cutoff) and then increase it when it has converged to refine your calculation. \item Use the Broyden algorithm instead of the default one: it is a bit more fragile, but it removes the problem of "oscillations" in the calculated activation energies. If these oscillations persist, and you cannot afford more images, focus to a smaller problem, decompose it into pieces. \item A gross estimate of the required number of iterations is (number of images) * (number of atoms) * 3. Atoms that do not move should not be counted. It may take half that many iterations, or twice as many, but more or less that's the order of magnitude, unless one starts from a very good or very bad initial guess. \end{enumerate} The code \texttt{path\_int.x} is is a tool to generate a new path (what is actually generated is the restart file) starting from an old one through interpolation (cubic splines). The new path can be discretized with a different number of images (this is its main purpose), images are equispaced and the interpolation can be also performed on a subsection of the old path. The input file needed by \texttt{path\_int.x} can be easily set up with the help of the self-explanatory \texttt{path\_interpolation.sh} shell script in the \texttt{NEB/tools} folder. \section{Performances} \NEB \ requires roughly the time and memory needed for a single SCF calculation, times \texttt{num\_of\_images}, times the number of NEB iterations needed to reach convergence. We refer the reader to the PW user\_guide for more information. \section{Troubleshooting} Almost all problems in \NEB \ arise from incorrect input data and result in error stops. Error messages should be self-explanatory, but unfortunately this is not always true. If the code issues a warning messages and continues, pay attention to it but do not assume that something is necessarily wrong in your calculation: most warning messages signal harmless problems. \end{document} NEB/Doc/INPUT_NEB.txt0000644000700200004540000002254112053147432013317 0ustar marsamoscm*** FILE AUTOMATICALLY CREATED: DO NOT EDIT, CHANGES WILL BE LOST *** ------------------------------------------------------------------------ INPUT FILE DESCRIPTION Program: neb.x / NEB / Quantum Espresso ------------------------------------------------------------------------ Input data format: { } = optional, [ ] = it depends, | = or All quantities whose dimensions are not explicitly specified are in RYDBERG ATOMIC UNITS BEWARE: TABS, DOS CHARACTERS ARE POTENTIAL SOURCES OF TROUBLE General input file structure: =============================================================================== neb.x DOES NOT READ FROM STANDARD INPUT There are two ways for running a calculation with neb.x: 1) specifying a file to parse with the ./neb.x -inp or neb.x -input command line option. 2) or specifying the number of copies of PWscf input ./neb.x -input\_images. For case 1) a file containing KEYWORDS has to be written (see below). These KEYWORDS tells the parser which part of the file regards neb specifics and which part regards the energy/force engine (at the moment only PW). After the parsing different files are generated: neb.dat, with neb specific variables and a set of pw_*.in PWscf input files like one for each input position. All options for a single SCF calculation apply. The general structure of the file to be parsed is: BEGIN BEGIN_PATH_INPUT ... neb specific namelists and cards END_PATH_INPUT BEGIN_ENGINE_INPUT ...pw specific namelists and cards BEGIN_POSITIONS FIRST_IMAGE ...pw ATOMIC_POSITIONS card INTERMEDIATE_IMAGE ...pw ATOMIC_POSITIONS card LAST_IMAGE ...pw ATOMIC_POSITIONS card END_POSITIONS ... other pw specific cards END_ENGINE_INPUT END For case 2) neb.dat and all pw_1.in, pw_2.in ... should be already present. Structure of the input data (file neb.dat) : =============================================================================== &PATH ... / [ CLIMBING_IMAGES list of images, separated by a comma ] ======================================================================== NAMELIST: &PATH +-------------------------------------------------------------------- Variable: string_method Type: CHARACTER Default: 'neb' Description: a string describing the task to be performed: 'neb', 'smd' +-------------------------------------------------------------------- +-------------------------------------------------------------------- Variable: restart_mode Type: CHARACTER Default: 'from_scratch' Description: 'from_scratch' : from scratch 'restart' : from previous interrupted run +-------------------------------------------------------------------- +-------------------------------------------------------------------- Variable: nstep_path Type: INTEGER Description: number of ionic + electronic steps Default: 1 +-------------------------------------------------------------------- +-------------------------------------------------------------------- Variable: num_of_images Type: INTEGER Default: 0 Description: Number of points used to discretize the path (it must be larger than 3). +-------------------------------------------------------------------- +-------------------------------------------------------------------- Variable: opt_scheme Type: CHARACTER Default: 'quick-min' Description: Specify the type of optimization scheme: 'sd' : steepest descent 'broyden' : quasi-Newton Broyden's second method (suggested) 'broyden2' : another variant of the quasi-Newton Broyden's second method to be tested and compared with the previous one. 'quick-min' : an optimisation algorithm based on the projected velocity Verlet scheme 'langevin' : finite temperature langevin dynamics of the string (smd only). It is used to compute the average path and the free-energy profile. +-------------------------------------------------------------------- +-------------------------------------------------------------------- Variable: CI_scheme Type: CHARACTER Default: 'no-CI' Description: Specify the type of Climbing Image scheme: 'no-CI' : climbing image is not used 'auto' : original CI scheme. The image highest in energy does not feel the effect of springs and is allowed to climb along the path 'manual' : images that have to climb are manually selected. See also CLIMBING_IMAGES card +-------------------------------------------------------------------- +-------------------------------------------------------------------- Variable: first_last_opt Type: LOGICAL Default: .FALSE. Description: Also the first and the last configurations are optimized "on the fly" (these images do not feel the effect of the springs). +-------------------------------------------------------------------- +-------------------------------------------------------------------- Variable: temp_req Type: REAL Default: 0.D0 Kelvin Description: Temperature used for the langevin dynamics of the string. +-------------------------------------------------------------------- +-------------------------------------------------------------------- Variable: ds Type: REAL Default: 1.D0 Description: Optimisation step length ( Hartree atomic units ). If opt_scheme="broyden", ds is used as a guess for the diagonal part of the Jacobian matrix. +-------------------------------------------------------------------- +-------------------------------------------------------------------- Variables: k_max, k_min Type: REAL Default: 0.1D0 Hartree atomic units Description: Set them to use a Variable Elastic Constants scheme elastic constants are in the range [ k_min, k_max ] this is useful to rise the resolution around the saddle point. +-------------------------------------------------------------------- +-------------------------------------------------------------------- Variable: path_thr Type: REAL Default: 0.05D0 eV / Angstrom Description: The simulation stops when the error ( the norm of the force orthogonal to the path in eV/A ) is less than path_thr. +-------------------------------------------------------------------- +-------------------------------------------------------------------- Variable: use_masses Type: LOGICAL Default: .FALSE. Description: If. TRUE. the optimisation of the path is performed using mass-weighted coordinates. Useful together with quick-min optimization scheme, if some bonds are much stiffer than others. By assigning a larger (fictitious) mass to atoms with stiff bonds, one may use a longer time step "ds" +-------------------------------------------------------------------- +-------------------------------------------------------------------- Variable: use_freezing Type: LOGICAL Default: .FALSE. Description: If. TRUE. the images are optimised according to their error: only those images with an error larger than half of the largest are optimised. The other images are kept frozen. +-------------------------------------------------------------------- ===END OF NAMELIST====================================================== ======================================================================== CARD: CLIMBING_IMAGES OPTIONAL CARD, NEEDED ONLY IF CI_SCHEME = 'MANUAL', IGNORED OTHERWISE ! ///////////////////////////////////////// // Syntax: // ///////////////////////////////////////// CLIMBING_IMAGES index1, index2, ... indexN ///////////////////////////////////////// DESCRIPTION OF ITEMS: +-------------------------------------------------------------------- Variables: index1, index2, ... indexN Type: INTEGER Description: index1, index2, ..., indexN are indices of the images to which the Climbing-Image procedure apply. If more than one image is specified they must be separated by a comma. +-------------------------------------------------------------------- ===END OF CARD========================================================== NEB/Doc/user_guide.pdf0000644000700200004540000043444312053147431014030 0ustar marsamoscm%PDF-1.4 5 0 obj << /S /GoTo /D (section.1) >> endobj 8 0 obj (Introduction) endobj 9 0 obj << /S /GoTo /D (section.2) >> endobj 12 0 obj (People and terms of use) endobj 13 0 obj << /S /GoTo /D (section.3) >> endobj 16 0 obj (Compilation) endobj 17 0 obj << /S /GoTo /D (subsection.3.1) >> endobj 20 0 obj (Running examples) endobj 21 0 obj << /S /GoTo /D (section.4) >> endobj 24 0 obj (Parallelism) endobj 25 0 obj << /S /GoTo /D (subsection.4.1) >> endobj 28 0 obj (Running on parallel machines) endobj 29 0 obj << /S /GoTo /D (subsection.4.2) >> endobj 32 0 obj (Parallelization levels) endobj 33 0 obj << /S /GoTo /D (section.5) >> endobj 36 0 obj (Using PWneb) endobj 37 0 obj << /S /GoTo /D (section.6) >> endobj 40 0 obj (Performances) endobj 41 0 obj << /S /GoTo /D (section.7) >> endobj 44 0 obj (Troubleshooting) endobj 45 0 obj << /S /GoTo /D [46 0 R /Fit ] >> endobj 50 0 obj << /Length 1846 /Filter /FlateDecode >> stream xXKoFW5M&u ᠇%"ǒTͥ(B8˝汔~r%֛V8_>ˈ爄O2 /.r]{bfSi qdrH?!PI`5*>V JS/W7w+i@L/~˨쾆NTXmJ&ڵ7?^~I.uGƦ[}JZ^ e}?$6V+X6Z$ɰ=kLayumZF% Q $X9R68K|t+pmׂB*ڌ »$)H+Yb!QFI ]n-/;6v˻h%*|Je`HkU,0/$ގMS5[`ن:?L;HɈ'+;?C6I=XrO5rX/\Ne"F>Fuؘ_UV>UMɺ>S )JRY z;1X~χj6A*J`.L 2ߣπ0VOՅӍ̄vr* <Oq;N>7 4 .8*Zg0J|wa~-:nwK.։gZ}f.0?#:TXU:RUu{'p61UvTi슠aNCPMܖnxЫp.D"LmmL3Lі1d 6FPdycCXǑA3:C_$Y@2" n`ޔ=]2LB)s1nGf l*6B6* %S܃q 2d\-@b^82W9ڙ vx/hRyg=X 63VdƝYSue1R(8 7 ;tvqJMqsI[LG=%jG9C t zl)x *v,HPyu8KdayBj(/Y ΔHC\@~]SМ@0%zQ Iә#TU# 0JIL@O됎aSf۩fQe4 Vb#UEL:EcSLUvjhC pFF6ew Yk ]XUXk;j;fa(3}:st> )DǂSW7Tendstream endobj 46 0 obj << /Type /Page /Contents 50 0 R /Resources 49 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 79 0 R /Annots [ 63 0 R 64 0 R 65 0 R 66 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 75 0 R ] >> endobj 47 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (../../Doc/quantum_espresso.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 80 0 R /Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] /BBox [0.00000000 0.00000000 531.00000000 181.00000000] /Resources << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /XObject << /Im1 81 0 R >>>> /Length 82 0 R /Filter /FlateDecode >> stream x+TT(TH-JN-()MQ( *NU5Tp endstream endobj 80 0 obj << /CreationDate (D:20090714182634+02'00') /ModDate (D:20090714182634+02'00') /Producer (Mac OS X 10.4.11 Quartz PDFContext) >> endobj 81 0 obj << /Length 83 0 R /Type /XObject /Subtype /Image /Width 531 /Height 181 /ColorSpace 84 0 R /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream xxTU'Bh*MAAlkWյ VA)R(IH%Hm~wWoE'aZ&r~4 @u:O>OS/lIb RO^&M" w촛%.$f> quA&M4itc{* L5zշ]u )s<.Sg뾳 M4i3u-lPaC`3Ԑ&M4i2/(\yFDպ4`b[/|M4itË^T`6[Ah1؄fhSu߹MԣI1@)xM4i'cRF;Ahc3f n^V %h-Xsb[kr}5t0c=@hI񄎌M4is,J &0Cg V-%rS!7hEki}7Rw겮iRCܘÍ4󴩀5rZJŶ2h'\ԉҤI&MWKV#֗ hj"1Yƴ/ğ 5Dnu{jv[U^D[1i-[HsmePƪ*UF+iRqT'ckţ]JrdZJ3LɆlϡ#uQ%f @JD-ºTUeu@d-[I8~hw0J;7ys_e[B8G0md`( <4ʵrm\B8#G@qX(9GfEQbQ4(FwƇDzxV~'@n2VL>],kuT2c=35QO ڝLg*pkh!/M4в}eCQ/wFjl^!nlV J$*K;:hE rh9ZF ~(p! Br!w;ײ@BPɍ㸡EiQZ.)2BHn-ڪHg=34q1;ecˌBBϫthФI_Jx~6Ë2Dl* /$c "_pETJ S?yG=iKƋpYu2w+xQ47.` @@dpno@K[3XO43727fڂv~ߍ@4)819q,'jI]iȣMYK .SQVv03M4D Аu6UN3h]ԟ|G24rPAXLkXC#WqT_LR ',XQ-{Yn7Y[&ܨ2)ή6[*ժktGU*j=3;AvB.wg"Y> pqgKXeTBmRUEY:Ȑ$ ]%Wd@4iҤ/%F UIxh_:IZ/(xMWS3e{_ v&ƽV%UP}*1aH ay !cK]ˍ9}641gnr:?jn;$u5:$} mq·()?ɀ\h) L AhL4ŏpvg ~T8 綳,k'SPkMw(NMmvaWB~dh+8CV `ch%Ǡ4.%F岩r8+՜y4i gD0ߋ]~TBۤ']+Q(!!OQ%m͘.IY +u%rJfف̃EGhiH '9mU\:-@9}lsNͥPW5P.W1]:.DÅC9pn )+ y;a3?՜4s w ع ۋxnG7)=Abx8Ju4sY,ic1a\bKwa8&Hf\N\*&,N/%gV`ZHY[v3 E˥'9YM*f&wɨbZf5NtM4r c w/dlU=9ZCp{!qxvd̽,mjȹ<{$&`KC9(? e$FxI{XP>;($.T:dz=)؏D!-=8Ǐk >K:6K>D!}-ZIij1/41U6ԛ+%;G+8],'p,iNMLX"qj 1pŷPJ4T$5c?.mQyurk-k[kCs>4! 1A]*LO0Y7b$ib9{Z Z|]:j21(ZF;&Tex4i.沴q-f?#H;Uv1fߏT>=ߔ^ݻduVH-煆,2^: E1!/%_83o#'.SVϘwּp,a*KXpU@kN*b-LJI n#eB+юZgg@WrlWi.0C6jR*!Rnf7CZÔI\BBJ\IN *eDhCۮI?Y\"+!it+)=vhD %DH‘7OMgױ?`¾)&x>}3w1 q)$,FWpj..u,{ b4 +17MtZrk̽fjd=܈ 疨TL3.+;"9ɢp)@IǠSy;!g3ⰠIK 9"H^߳͘ V* }jҠ!sN7ZoC&M] яhd? OBS8O!g?顷ĕ`TLmL_=lͨlWv>xBsb+,˒$iV9*bkza=t?C2HOO!泄ZNdn!982iR~4A%vP!U5u=n9]Q)CD wgsةE4N&gм(5"˘\&M7T.q+k6@jBrclݰz,|hX|,OW '@ rtfDh55BGkT P| GAN0Fֈ)K!-}+%$YNCPkhCTA{ E$'uXX[%i*H} I"q(܏XV:Gl8>N|,HeosȅZ|Ys!t\A%!TzQWV&MC!;ˏ:U Z~ i!yMX,ϩN c7_. a'GhNRئ"h&0upd"Q*KzG%C*;WcYoeTFvDŽxnrv%Z_Y;MfVQ ;ЗI¡T/I6iҤIӟ iǦ*8Hp)Z,")0*OTGüFD*Z,c3Vab_U2 b87k60?__'afj xRΚL*VoI?-8Ȫqfp웦C"qxk5_4(EG OԵpj1 }'>Kg8b.ݫLLl'חLrIIdzn~kQ$h5U|է+lwff#cC<,H wayYnl,.S Rws M4CUWzeHӲ>[HsWo48)́bfE[%19@N,?.=bkwJ&M<b`r ^Wb|"\zS9Cr;,ur^()<+h}6m.Z|Q0J(7vUܽk";H}F^.5OU8Ø;CB'p4g'GaVcChm&MX4֌-ppM`"IiZ.C8#; }A$G? >$_XmJK'em[+r cfdZ@!~P+U@hW"W%xդx()[pǩy4 z8>\^Hs[.#YyXDj&M4aNA/5iRi ) LvCvCgC&1JamŘѐ;^)*X*EWqݪ2PY [ `?)ԪJS!@vK gpJ134KLN]{vӢäXD:pؗ6n]&MO}eQ.( AOm`j"R ހ)X9S_a hv4:wo$^ \v~ > Z/KO$C9vO'0oNgasnE+oca4`p5<Jc^+N1~,p=89 QȅѤ 4dF z܉  jl9@` 8/6Jb4vydnY '\%GhqZsz9;D#dnTݐE&MZJO0,JR5pSX4Am

f f ?>N"KFcjD!)d ̀ a)i%;2DC_/^!%`g_[ :qr0$FʿeFΎRRae/¾;7PAO@]:_+y!1P&M5rc:e(=lO]"|!6L~V:^/`zlr$ o FCN#aS y8&K~"{ң o NB&vTsMӪDh8meX!8ܕJ}*5—ou2~ -Ԑ-Uő&cz51t krrw͊@U 4WuU-|M4xKDs[+> {!w'0M[c,׷,qIZ:1 #G? ngo W~P҂;ף/#ựU6x OeGfB2\8}CR&^`2]"pHᘯlZv^X{S ÉOY7m҃PKVdʆ_dZ\&MfC"&Xe"?XahlUء=-BR)ļ ރCo\};捦_EwA${N_!rh$U mD7YWnhUI(85[,d2pp=gΎ`83L:(f+M4yJ<`j Mre )>]3ةos696~]x"v04x4,Pj dcWL sva%k#Ln ҥX!?L>b;f`u,?|0VjФIJ lO\)#f1y-Æ{a=X?4~+p(UUGɳGwÎDž@"ڎorik pZ7 E͒ZNJY q)?Kw v _b w$Ck,]u 4phҤw>1zI?ɹ0zBAc"c~KW%h|=ۅɆas!ggLmdtˮd>E](|*Y.؏ _Á7i$q}ȎI8,KBMGY$FB+C&M236L|8I^ h{ ~ЭcMwȫƱ%w⢍c1; 8G10,z.ycp|rvBQʁ FPWlV? Wä)L|l g2]XopC4sdb>O/2ʓC$ 84iOg?K0n& C'D> uNhw> ># =}43Tz}~g·a?kȁ*J_ݔTԤI#)FC>%+1$? KbN獀φçwC)ƍ5y@2m{u :^LgP#h81IZ eG9Zڥ/D0"\5?ĥpxyNt/N!fu Wb J;:5=פIHiV% $~6?[&'‚1Šn? op:H^O/ЗWAlz{8|8> oM!~KTV..;jp&5 ~VC #H mXtdqZٳ&M~ǡH0Dؾ@olDNz6`b?B>nbOOI7ӷs?o/ Ӹ?2Bw7~\R-E MOl}۠@ganxJ?M: $~#eNBkyJYM46p# ;c 8ˑhzk:^H & Gzzz>p? fOޏ=& DZ-p1ZzE38@ˁGJЀÐ/⑰2~;h2@a$4d6nOj5iڥMPm{#!ڭ8#nD@:&}a/vG|.6Η;ߛ=C& ?OOk](O:ĕ^_Jٿ?FY2rJ=r*n~3 wqѷ:{T e?qhФIop0BJx?C φ~}aܧ1^0ҝΆrh07os0Fa}"ecEǡ( T 8ӏ_ʲ6ZK鶗R]"Bs$[iL K_ oӵ'`5eEQ<=Z&M~8LK!lÃ򲻅9H ɤ!?6яxa 't|ɁuH77~0 )npQo,  y 4\u# d&7=G~諵ʎ,)+8.xH5X=H^~0NfG>ya.ʯ@&M~#8 (5%w×##A0fx'}6_ {B/wso'W[pA7Hoqe~t<;2]>TrIsʔ} Qe2jÝ vدDdfZb>~?$r]5ԇpF!MF ::Mu}8L.fMj@OM{(M9⅃rr9vc<6xg̼ V';eˎP}1@' 5i[ȡxŃc`D/6SCݡ;qc~Nf1lh̎%v`I,EwKۆbȹKXg^`"Oj(Mn>k.@WF}IۍJH9Ü@]ſ+5 I%̘AwryM==e{Py$ ~uA3|+lT^ Z;^ ei,gK3w-!l2DKJrs.vZ&M=āy 0s }2}OǛ#8p^PGkjkAttNGtʂ(wmtN诃i`S05ٸƓ^E @/~R*0s eP6)2aN:Ϟ\` [okWg>{vl]"m#]"{Dyy9{pcN$?aܖH@zdYTvwvV]P_ʯ¾?/qsRu6tPiҤ鷝J ,Kǿe0{/#tٓf V` XW nL1XcB' %HUIJj7z`J,JT&6Oy֋s;l7*9 }e9ciRKDqODyeHac{9faafbjfލu׮W__U}v7E9SB]}f㻳ϰf Ǐ rT9lz>BOޭ0NaN#Ӵ5rI aITiҤ7C=jd~8:q=a'E&:1󂳀Gnmm VVM+:A7"ߓw|Lj0F_4F(77fϜ;hkG]A#'SX';X1GBi'&j>[%yd8|v3ԭG{^'`ǽ~a>va~a!n{89qr vrฮN}NQn w;LmRk2AĜh("H\ 3G~~2g{>kФIo UJJbQp {cFہ8X0KfR\e\i5XRXb/O k'ѓL1cnv 1B7Ν:.!6Ǭ=­=ږ] X1U0Fdu0{nl>4ᱵV^ /,]#-ݣ|;;zrp߫s rgG~'gthmo^++7㈅P=ZGX:xrqyuCdĤEGT ,`=}͑lp?~Q&M~[k,Jq/ ew-܃,TjWQC>KKNgA//2kyd5dmAQVT&*8Z#zܲko^@O-A6.[ F#Uwpd4K {vއt^G[9E8pqᆀXgsc?vMcPy @ڀc?"nc2BMmG|bK/{N[?]n<8Y8FyDm3`(0nV`__Wa靰IzCNGFt5it# Eb%LrԐ =%pI hwu6Bl}]|=v<*A0*j6`4mtǜ}#\Ý"ݼw۸v8奆8XZEJZ*C[1b6&9DZisiߊ9(#s}^>ېwQ ՘Jot< x?]0 6 ^V h4iALX&$㾆o燳QnleMuVܕPbPȉaiam]]FŦB+s 1l '߽~ZYF8 rwtK|%hkc)8fI6.йg[k3wzw“6AukjSQ* Ezp['_XUn^N֎\\{࿊Bu]o x]@x&d8,+W XMVUI"DD06톽{vƦ *;uCWXX|e`"` spJ6aZ< tfuSNk`G} P* v8ncO0k(k/w`?1ǡNҭDo_\Өm//knimj,mHK9z('r#g&;6lyF3* bx í:؟= A+4y))?/M4iw jxb, cY?Wpg[fc_Iaiv554%X \tRg> UG@nbW zg>Xgu6 [Ֆcӷ 䇟sd53)smqUfhcx.v%AfKi{{G]]C{m]c}Cus륶KmuuS^{.{]í=E>|k l #þ@(f.n}. Czrco}.9l3inL 17\I~zup ttr 1`P] bJ]<_L4  tHT׬l7fPd z|BsCTIpb*׾, ׆'|Ʉ8v3eG=Zcïj8&KbCuֲmT&w^< R-?DHzT]Br:5Y + 2_⾆(@CG&\}\,Cm}E=1:d()-UI@_E(g$CccsMM7qT4U5ڀq.$ B͘F7 2O!KOQ.n6nuAzv,dx?9PL7Lddۡ!CIdeWpxogl7Ó q-s,8Dk Y)"WfC8QG^G1xtC=SYqr,‟ͻ?pPsģwK>[>T1B#&Bi ~-  kp7뛚ZD +3B8:ڕߣ(7ߞM-ogs.;g2@/nY *4iRD}c 飽>./ r$nvі9؂ j.wL<`Ð>G215 Q:odzph 4i[B4&5`uz>l '‡ׇD6xB?=ݰ1=htZΪ>(\}N%|yҍU~ QW& H35vg7 Ќuc@ܨ3\uIDDE+ehhh_،8yWff@/NV&bQIXI2/r3-Oߌ7}468@~/{&^H76g2n}rkkC[RkK̞7ל~^ܓ!ahF{ZSOu;<Ӹǟ|ӏ#)"kSG7mD9s5_Ojkkiknoxum]]]GG`4O|7/=T'վ=}ax|ÔNqF;cg_OIh5iteJ UA)a)L#~0&;'-`#\a3 teGqXЃome7k%ƏWBE^M;Ŋ-A[ݷכ6غm١s<'̱O.kO9ݶ׾Vg(+]7 qǺ cW3MMM*8Fkk {ȯecUo?j}wo@K '\{g7Lfoǰ YlVv2U)A[EI+O-e@O'ah5> o 37C=` {Z^Li3XMֲF88=CTFJu-H,"5<7ukbu:N=wxq8mss@-)г&׾t$w Uthii &_RC}ƓCDVR,u {ν::ٖx3tydz8W4+c4phҤW-bv8.OGq0g |< |L< }~pooƔ* |1F95985;+hs{xbhtɭf/v}oӃpQ_,UJ5I&MR&0N}QA賰>j"~,w;t8Ӈi}褾d:ԃY!8dKؾ,u;L} Xڸzx{xnw`mc=n'pgv=zD8r{_{8L`UݍE*8FP} K Mkl9yx9y-30^,-/[͑<焝784it t)RBld.`4|9f,=H~{bx~0ElHΖC`4tXȗ㡾@dP:)n?.s>E>WHG!Na=\|~~{Gm-Ĺ c0VWʍэ[qqTg'D"uDcB4";9~˻Os~[[ar;&vb%GC&M1ԦA6zj"^GaݰN?Cl9 oׇӻd:GjkǭO[ #dbD?CAMuoNvvyȹgvK`ۭ܂}ٺmsw斠uÈ`2Ꮓd2 jjL&J۹AY&,9R\k)(k^;H{ >]O:G@;a`H8*M4]- *Д!,GC$y8;&a:v=> >&${V`BtmhAlaCT6xqQFrS-6JyZ pid~;=9';8tu {=STx~>n'}:~CGsS;!_JY#¯M4Ds۫G::gGiUتH8 iҤIenH:$\ = ނi4x1^~<]=V^yᮎoGѦywȓ(C-L֢9dK[Nbk>4]f7^ ÊRʃ[;"k?]yzDx:xmtqﳧ@tW:XˢB|KijnkoVR7 tܫ#z=G k,U({߀*G?TNw.]ّxZzPه 8IK#d߉&MejzVN8|ނ iq㤧kDdtJam p?hbQY,%jGWG`+wݶ^l|J|}e}Z[(746WUs474֫3F;A;[#UUUF2P`9oS{W0+‘;aj^"UjҤJyH|J@NH]V3!z: ž=`c~q{̟燐tT$YZrp0+Jk ؔPqWߖ3)ܱ6{ȁwBE/M_PH`FeU Zeau5G#G:{GڨY_~a순lgwAk7C~t1`4phҤ'_Qg vAR8 B?ad~$ö`Ac7BqpN>Knܾ󢘴ӱowafbs1h݀&_/0U!S 鹗qǡBr]]+N?I4D;=`_?]^d2٨$L~1IKkҤ闱*Afhʣe>iY"9;>LATw9i"5\6`fEX9nPu7DQlkhim簨toV5D] ^P4yke1|=Q;| debM4phҤ骃*@_Aj2xKwu$y MKcgץCBTULVJӟ%$kdR14'1c'%Ɲ>,C\qyqݧsi\Rq9t=V8`-010UaUܱef):۔ڀkXyqbc_ 8JM42V̴SxZǠ !e$.S \8|88b>>Iaӽ _enLpk\Mes;]_79`lbͯ@˓GsssSSSCw"jkjjqeC5WB5vu@f\ a{CΞܷ;98{ZW|L}/`4`2]&Mz2v+C픺\tVѦ'؅H έ!iYpx'! CY#kɿ:{#'1cU8'\$L7Vzwf+y/Vu~*5T/_C'9'nhl掆}*(8y?v40No+0kA[r%Tx84i+~+I֚6$ZK C~dC.H&m!~pXs`8,1?:ߋ3q؁]q2Ԕn9&{.'7{Q]kmW/ 65 %<  tL51Ih)@BHBܛlY{\d[ͽWV_mo{Wb#/3z5sӾ',&WcO*Sֆ’$$ժ4ѓubhq R d X{vER0o;.o(_Ǯ\**);"v??yh[h ,&ݢ }++NjlxѤsU|Úm6d<|e|WTؔ#=\`П(\ pֈ<%YVhOJ^D+27HPMvKnFz+*Ԣ$뼌%9e\lCؖI?d?Z|f^7s*W"iv)󒑽$AF̃LuDvSN VBil^RE;Q e=Z-k1Ǩ Y_3yui"ixL>q}RNS0No_S8#IH;.jzQ{ȳf= 6t o𻲡+ʵ-?58;9| 8WJȉe|mT:*,^[F.1'j[Bu(8<˃*/>D]74X~1AM$ZI;ts"t}RIU U&ڟifx^ *jH1^U ^;׬"j0uUNêMk'w4  sdC\Yq"Gy#(q#J((8섯v493+: s/%ns U8eo-?ʘ@Rǝˑ?]tNАI٩ЇT&Dóu괌,[o-^ZV^yl/ZjufV2NwI]GNj%Y_2Qžqr`ւk+ïTMY6i:{ށ%T=}ӧ\KΉD=)EY>.WYN*V&_&${Yb ՗/+SOUi'$wZBI6MVe}*xY^,Udʘ' =?""9{%1ѴWz;ޭpf{?/LqQsxet#7ة*MxmN.3T[ĕh"~t7dt‰DB`,f}x,Q+:ٌ_|j6;."طQyH<<iTz;:;є@|ƼOj1b*s;v#TU21L_4Opq[GU5h_adfQ8g?~Ű,rfeE%)i3c j vTVV96 ;:p:'޵6 !q$0W0&93vRa|mL)q!.Sgu VOEC¡xO8EƄ4uRGsQEJ(ǯhDlP蓺>@yQ9.p$fZuuA"ԆqQn$DZh''' hq ,ឹX]VRҸ?WysQȴ'^ %m Q'Sب]2vފh%:)7.}/Qrf w}=h Ӥ&6b+I]C|<XP6<𸦰gܧS#j 1GRp#dw@##kfDB&zM8"DV&>/pU%҃6X8.cX,%!v$_`셀íU ZcnQG|H.;)p gZž7>.Y0Yg֊j.vuxJoo9;aW/YwߡfT~n.黁W&uU8贴 )jj-da;:Y<%eeZIi%>fQˀEv%AϏL-mea _@^4=98$͋FH,%*C3s%.3d}sW :ආZEҴ4%/ɿ[- 4X6C6VGN _B*kpb"!ye,-<^Qe⒆2U]z"АЖ=49Q%4RݡT0gW;T7Fq9Hd&ȢC.*Ð0%JL 7=P#p0ǰɌ؁o }zy$6~WF3 \}lP_aȏB4LbEcK{|8+G`sb=LoW4 y{nxѤ:!{;\6!;2_؅* ~ɊUKSR,vx<]T.㕗lۚGZ6 wM|" XI$ fM_G;BC*P]$J&N0?0!%.*v!HfvyY. ?FP+)Tj.gWF_|~VgF8C8+ɃT}Uq{g͒OG^!($atR`f5j1'$qsCt=mAf8^zE"Ci͟zy8{EkQA-]ܺKK]iVտ87y>)8!4b͟Ky~! " (M+W]jՆ5aɟIʪ 4M}SυEe9ǵ=o8 J}Dpzhz82 9ڄФۈ 8 v۞Y .vJW|>ySv*f pN%g4mtZ\X)OL Ӵ)22B41=bE4agB MbJn<)+|@X s3M$C+?7ibJ[g<階>`"qy"KLt_Av9~-/BPh~SXyN pd<[[xDyY?EĆ#f+av44, -6r{N73R|X8+gBǜ t 84,das"o\/Z!Uq׮}eUht8ؒ7 .c7[,!T^WP>CT"b?8e5?SM)*DqWf<ApY9k;?Eɍʛ;>WY'unr6)t{VZWEgX{EJ2\W- 5c%ϩP"pD&^b|לy`m$Q y04t -E|bU/wFKB,fอi~Ĕ 麘*URG: 4]TUwo8LZ"phH*zM!RUe_E (p铜2SQSYVEqY&FDۋ2GVFeL֦9E,D8 yZ}aU "_A='n(+9b.qc(o.!pXm.' ~Sq1Lr!14/ҿδusok;yJrK&m6tNR )ƒ%;a.iH{IS兪ٗ^S-ʗG*D|}F# ڂDdn TI}Cn^hjTz$*Fu +j&W$"ֽ0I4F(MHN!]|}e|⪰i ǷN<4!^̹HSZE-GiBƐm>07Nd y:(4L/)W+ (&v@` p!X0CVHC|Ec\8HF})g yڄ\J 8?pTV!pdAZzC 8P-#,G}qI4pKYa88J44v̙!jCz_@R` =_H%uEkUFrњtҞYsUU*k֨-FhXD潌]UK _xjhpLϒ>YX8>6'~cC=pPp #dfHA #3I I=(}PN.RŴ`8ubA~&~=ˉpM'G0c|!࠷"G5%kM筿r"1_E 9=pZ I1aWa'n(꛲۝2pCǷf lO8_p󍱛2LBY ^P1eqiFBL9e6M #9)C3]eΖg,7WɞVI0 p|+C`ΚrT)^/V>ݏwr=h8pl|uB;?C*?j8v ʟ`0C6W6슯<ށaa+5Z&_⠹8iCqD la3̹q,\l¥{P!>p 0WjPD&4XZWߌ Bb.Z6"]NA+{ DilYQĔ]r#GqMv읻@7'B޽'\[LX/-F[_LۧtK)^pěBs 5Oumj#Ӣ I+ zY89-{$[m%{x NI1ɣ]#S(iy͛rYqčoȬg1KxS^&ުWJ`7_/"t\Z 3CsՆ!{AR䕨Ok::7I* d0 n){ryh2ըkL/rD }Yf+7o^1'!m@Җ,ljj(02uV7HE `Kng{߱cgEy 8P2}GSxF0JQ4yEJVZd |/(a-[l yE~,B`2؛E-]lWn<4--p5YθhLu /nl+W','x]0ZPsc\"(2&Y5R^:wi[mLt'k#t:\ϊeщuDIy, FO^ݲB .$g!E8IHjJcw}y(=/9mAqyׂ[-?5+,gůa}w:W޹NPn T|J0xRCD ^Գh|B&B*G E/Ljƀcp4,rRNCWip4 _BR|5pЄ)3K#bjh^\@,v\Tgd:}V,$zoާrYv\,Ď@6Z)-ZXW Ξ=EU#LTU3]qIŅ Q8/_p/y֭[reZZj _,X@ dIϴ QXlgrŌÜ4$fԷ+g\C|@-Ja -B6k2?d8}}d$M`]9TU@h9چ?xV5ewroVM2&UZ|wW ]R!N B2_XO*jqrbQ9IÉiH1yNUB 0S)%v/3xF_MX6ti~~=\|pKtq]a"YA SIq-cn=i!:%D}V_>FCM)LY Tã* ci$5__|~8 U0!}c/Rai8ɤ43?)W$H;yue]ʰ∸s/(,EP_ +hN:s9'ްq j?+SRRp~dك2o޼Դ2Tv"pmmmhn;8JJoEpR֎MR+:3:ہ3sQhg@JAu xdedX8Bc70!,链ۨ]L -NGp* ߛWIT7_wߟ%_(\w_q% k6⪴u~px͆5×EIQ!0^Syo,8;VΊ-HYٚrclE&= =yyjCu%*IJn.rAxY~);QQ.+׊j9cdxȱ'7nڌP^Qwvw6~Pزm:C5Q6-iݾO;7w3ܶmMMMogaSNڵuGh sUUU&yI ;c̴aK6#[?p/>Xm>'+1BQy~7ד[1G۞zĪ|rn~@{%3*~SNdE}G Rp3rjij`0nP)ʊG K?q/=0^-yz;]_>hG!hcҕ!ʱ¼tmhy2EB@YJDĶ?r}OϾ_?l{+XXa{X 3n&EaM_{:1ڧh [- Sb˿c.uE h2k?h"- c AA?)#_⺑hkyBclZWڟA&lHY$HǷUPV#lz%: XU&0 d<-ߔ:t)2-8Q$ߞ(DJld^G8?7W'pI*"M5Cwݘ9/ߪC^rǺ^6 dOtVSV[|hN|_/>ehĀ~r/U|qĠ!\Z7|IՉo5Jc } LK&D{|>! 3P YcX #p9htb:4"&ӾI ,A&;VOfIfy(? 8DmVFjN nĽ4Q:xߞ3$٨"Zq E uϒ! EX*ZD&ŊmzIJ]m&. eE+uxûRH}@=J^0)1W>\M/CO?7NN#a)1[#wPu>4culTF],V%V͙'z憄Ze2ReR!|XvAcTO~gŊ5N  KuC?pu[r4Su2mDJ9 rhcC*?37dv q*aVƗn@ _>a\߅ᗡ -sl)ry&V[0Qd3P/urX[ FS9!1׉vQ SX/5B@A$lcgBdWQRXY"'YO{|%&HEZ{Bx+GOQC+[jQNwғpJ:Yʅwe׾@),j9a!gtڵ}AS%ʏL.VEk .-(~e:Aiw;ӓ;; .>0 g8ց z֣ug3J4F]eDBnOKD;!h dWfnl, ?;",%r~pJ&Μf#nM&7fBAԄ򫮄&30΢.-/n`a8\'@X0^<2n'1Ε`壴e̙[Cc3⌅qx5%[eH/p^ 8 t$96cF"pTz% 7_WWڂ[p AGAǫō`OW OM;F&=q= 1,u=Q-4F5UaƒsGnQ :\NV!>08KJaT؁XVF p =< ^496qn d7ʟ}`?#>1nܲnex|Exla5f {>YN`e<[_8$EجLۣ?AM9(񗙳7NqqCQʴs' ߸:QqX:9aڏZ1աI%S QպĔK-@XE/bbd:'>~`_gsf q=EMU'U849[DGƩ_F@#Y~+ad@`:I;McDh3HfҌL娩ZЬNJӗ%6]u{veW ccAC%fw2AcSLF(xeE$侭 e[P$d'ϿE~ZsIi2bt~ $8B`6?bxx-%e_9_Y"M4Dy-/Q984f.z^ ЏPgqlxs OR%(Aw#aŸx{?߽vgGIKٿ_ /]/Z%V)e8R/q̴^YͷLhp=iW-<|cbJXc`.p9%3ڇex đ QֿCV|dY4ME8<"1%19ؤL?ƧÞ͊0)C0(A M*v fAߡ(ǫ=nf([g }c56'.݇iB, foǖk*T%Qɹ2}B*վ(NY Lefw_ v|߿C"$'H&bhԱgTƚU]1>bJJOY\W tA ?(GtxOmvV6 uC|?]?k'/S0^(2'n.]c|-TZZүp|ШPH&U\IDjޖ^07vao.l JKg_wB@ʑRwb; rԶѢ9%;2vP<ѶrUjm\^dt.jY|2m̦l$=E3k>{@ف~0]$k){I`]W<~=gL&t;=X4B8yWs"&GŖG$VJN=}t?[^sag" p%(A&x4O>VC:tꞅ e?F(x6+^#l52JjIc5t$):we^4MBJ,)6_YhOSd']0نzFm#1`0F0O$$W⢊^ \ICNQv;=#kw`ijI[M(Dt 8,OzZ@M!aFM:.'t\' ⧠Uq;m\%(9 |fr υC3}'Xi ^}Ci],N턑 _dyԟYicSU?Uq8t )W~[?zY@龞#V,JV|]^}ŕ E i40?v1ȰN|Y~m㢛ˣS5<>":G \ K;_ɛl`?Fqxl:(hU=wɋf_+ngaߡ+E8C1Շ;HFs׬rUyҨ4ո*2@}y竿n]?l9}rp_k}v,@b}{zMgVw;R ) Ld.S o[jE{MP'x'+c JP-VdY`c9(}LY}ZXz3< o@GB8 &ƚAad놼ߚOn O(GkukU]|*2_xCW+;l - ]sX"l%n8!d ?mvTWos%c }aD즨%I1_.w,Ywu3o%zD}?FGKDE>j=mrsF1N|6IJåз l'efi"p.j^8!yﮈLȏXU$ڸ26zMdlAX\*H7ew~7պu$;H6IaDBU{8N9۾ƽ.)Y uqڨ]TVdLFxde%yژjUcCƋ(,ͽ)ASƗ֏e?W $.z nоD0K5rWYc(%4Fj_$ȒO7} 1%.97 X -:od"3tƌ,PU3#Ⲍ'\;os`և?|Ye;o5k S2Cuh\cul%ps+r2M&>(A JPc±N"w|zxX'M{ g@Ɲ[!s:>+lO{2rT*A% /-KqQ9ڿwopeMDdxmITAK@K,NDT! \c\!X-l“K&4%BMx~XXX)W8?:a+`;J3q/b7l>?P$vW r`QζJGareGJP/Lμ 7IK=7{I^(}[SrWJ$ƂJ,[@ }Gg'w-2LLM* -*6&tՆJ]Li$B_6hjt1_\S G󔎥$ê7P9Sλ[ȾCʽ _o΅"T8|Dr ))Y$G;QsJ#q6/OJ5%+ns{Sn%: st҈0Cuxd6TYkl!C_̍Q%W^47{SC8{*'׋JEuoz*+gC3*lt.г Gȯ%(߼({5vFe_c!_R nP"l])*N|GHV@쎱crrox Wѧx$+J=y(wo|GקLM7N3LO.TTM. / O('&eGN*pUU74cӕ ‘A2 a*> A}PɈhg‰V%(ߴ>VƁ$;hԕl KwCP h~ρ=҉l9m=h$f$DqSNsoD^ ր. z6sf츪8¿E =*}7e"*ʂP{ @H&I6 spwwC\16G~(!ս7!+w.C%pz+ R v JPr0 o[ OnCG* #Խ ŏ忄Wêc)(vr5ʪS3)V)hY2E`9)픏6c1lŒGJ3cew.epٲ|Rݡ(\%"\W|+\4/N<^NI%kV氞Z,SE/M޶^l|[;UyQhr80-@͖`FPZ$<e)o}Y)l%4N}^){J'v옯YGk@؏7 2O0H2>f6WEdvgicn -pAyߠq(!-alZ GVtLZ}D8q%(A}X".+C{3еvU6{ Ď_Ao`бDW$"Y{Hg#jiA!Ӓ}xb͇6d#ȇ%i&T!U=4Vsk (Sl=*72|*(A JP.:HoGPf8PHRm`?5zʟT:WK{qf S=;Hsse4! )xJ%{F$G??OkNU+iD}Y)p5!t{Po`>=%(?8l;w'#U5Dmy~T>'W> /Aй:g<= K%x|!ȒWFd[!Ux_U~4.maorP<^/~Iou JPX:KDͧM9GaO&t.m$6װO D=wI#{7i;H'[pf/O{"WѡQo:4!Cer[*wD9Y'C,)Kw9A JP.zL$Twq1LW'`Myʖw oAPoR|iW:,c3B2rTMSv{<òs@I=۔5v˭sa{J ͍o*( L г%TNyB*/7A JPƠ(#eзS9+ݙ鞚I'tIqxK+66v%wO%T2~nz睻;7y&H=wzo4gs!T{TrZ5BmaM(HF4η6T!wDeowfQv'5**b(Wf)l*>J'4wS϶G?6ΣW/@$GT%VqƦڤE444' YsR%&X\{yF?r'95;HJ{d!"W/խ&EJNIEX>~[Eu<@yPѠ\͚(Ģ[%)·AnM_GL f N)/5<2􌸆{&9]#u;z殑"N#b)~*5e.j- smEn6,X]xgzow+Q^ ϯUf^;*O*ZϢjS14:+yF{xZ̓QgV]xCA}$W̼V&*zhC M%9 RLihDcUU27ރZq|bOg6_tpXoѫ,<";)cr1f1W!7|~z V|*z%ܤ(Y Z͡hk{P՞㝿malu,-vAW@ Qv{?׫hbdPsߛ'fj\fq2kˮzϛ444>@lZXSkUz) &%&@8E&O/eUcVU*Vw\zW@ݾ$-V_[e36J g)x z+bNØ\ j9ƎY{Im೴d6ƲHS; 8twa;(+wA Q%_>#VH &?;CU2Y9Wôy2og1sChTUM$qH*r 6*?%KAUKFnNwDCCC=HiSQKvrJR*QjAuftI3d?B_ C=>wb@fZJsշj$,P;\Mumj3}+j9LuԄ0]&Xq&у,7g4-1;b?R1PK$`Lwc]jhh|JƥU\\6=11~7r'o?n*X%^̄MKR*|fVnDlhU5֬DV n샴 rQ .諠->_,UӴr>wv "hv}4}X\̴B(=˓/¤(MjVxpUp |nڢ`o ݥuSHO|A1rF%wE܏r)*=+,h$͵h.'9UV jMwNG/@5T~\FSdoD62-2_arM&ͅG&sb]Q޳iRm_(I+w9=R3>Y4Jd[bHg444>l@Z pEj<,"k{pd]F~Tھc`˹t~6 (3%jI_RTUi_͡0,QV 1*a TS{BlfhD=-+ aVO2T;jXOsdh@F\h181 mf2o.J^j2Ƈ N4a*Y Czd,1&=LW/aeZL} X&(܏qm+m*z!d!XW<Ȫ5e 6VUra}@&mcC̵<3YO$Z2!Yޑ)8K xbQ^)>caI7:CދJ1)xJ*?X(&U{*j]N ]vd$uQ6XT/Xl}wep9|O9I \@]C? .gל>m:OS!9 } r>sW&Xefh% ԰c?cH]FajUVﴽ][uW\*QK9e&)B.`\n:C~b;dvV^T ^ VFQ)!8X^Ȏ#?\yEPO=J C3YE&?ta+?O90qq:\h 9[3l<{h)<ve+[Y\h=/[;}Y rwIu foo *Z̘*EV%qelHZTqn>fg֎obf{()̉(m3p#(Uwf#?0{]F: ٤Kj"tu0]*ttJDdѯXYdq|BaGr_rQq|QK`zp/&8[j\h> stream x}OHQǿ%Be&RNW`oʶkξn%B.A1XI:b]"(73ڃ73{@](mzy(;>7PA+Xf$vlqd}䜛] UƬxiO:bM1Wg>q[ 2M'"()Y'ld4䗉2'&Sg^}8&w֚, \V:kݤ;iR;;\u?V\\C9u(JI]BSs_ QP5Fz׋G%t{3qWD0vz \}\$um+٬C;X9:Y^gB,\ACioci]g(L;z9AnI ꭰ4Iݠx#{zwAj}΅Q=8m (o{1cd5Ugҷtlaȱi"\.5汔^8tph0k!~D Thd6챖:>f&mxA4L&%kiĔ?Cqոm&/By#Ց%i'W:XlErr'=_ܗ)i7Ҭ,F|Nٮͯ6rm^ UHW5;?Ͱhendstream endobj 86 0 obj 706 endobj 48 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (../../Doc/democritos.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 87 0 R /Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] /BBox [0.00000000 0.00000000 262.00000000 76.00000000] /Resources << /Font << /F0 88 0 R >> /XObject << /Im0 89 0 R >>/ProcSet [ /PDF /Text /ImageI ] >> /Length 90 0 R >> stream q 262.047 0 0 76.2857 0 0 cm /Im0 Do Q endstream endobj 87 0 obj << /Title (democritos_03.pdf) /CreationDate (D:20110323170410) /ModDate (D:20110323170410) /Producer (ImageMagick 6.2.8 10/20/10 Q16 file:/usr/share/ImageMagick-6.2.8/doc/index.html) >> endobj 88 0 obj << /Type /Font /Subtype /Type1 /Name /F0 /BaseFont /Helvetica /Encoding /MacRomanEncoding >> endobj 89 0 obj << /Type /XObject /Subtype /Image /Name /Im0 /Filter [/FlateDecode] /Width 313 /Height 89 /ColorSpace 91 0 R /BitsPerComponent 8 /Length 92 0 R >> stream x|pUd_~{즊ԲQ7""6 *]ȈXhVk֗e %3 Q R/$H`E%1 ѐa Iȅ=}dz>s?(QQQQQQQQQQQot4]Ӭ2ۧ޵:#=Lepf2~NsgsIiuIq0 Ll x2="Gtrу-xB7gY}=>u8 5S=nq'qzwds8n^'#dKXDz<ҶنxOM,Qpy7#<~iu}Gp3#/x^)ۍUy?{DނrbX{a#-wڈH)a (tbWn(85X2xě۳ȼ(^nB,Eg2MhC;*M^W}nxZL)#RƈU܉ichN2h"S)cy1taBy*lݺ&RsQ1q#RG$yU:?\h4!T7u[\׮PugP5*. +9qH D⺋!q0p$J8=ìÞGۯc`%{L ]p=b3Ĭ&oέ/ٱH2aBs݀8,dU o>B!•,Ǖje)4B(pr Qwa>Vq=f9n}5D:ifˎR+4I{jvH<*p.V#prDHbxw$(| ڭ6"|Ns6>N;H4 D$#Ct4m"nb8vsё88x}ߪD>/k~;96n8cJw`hmU8MP28ՙc'cTi?/?~DɈCBgb Ct;`pcû#DJE8/V2{֩35}"ز<$)jֈ0ɭGСqޓc莩v:Uynh 1s7Ӕ*xLsݓ+RpkpEJx=%[)R<+7dW5IUC= 0Hgr k!Y)4ؘ:5#R."**l54LFR6` ov7@b$#ݞFb=BB/ 41MDDsqRe!5:]AKm6&sDw=~By0تTUdݸu"htce8#Gdnؐo#]9]a(vjOCQa8Lls'f_AdiT+$zYHHlUs9^5ODpwYؚb䛅AhN)n!SjaLLh%l̉" qo nQT4![h9~UqEUmWCc E G14E>>47 S+k1Z =̎;qYi' {' 'Y=M(t4SI6b#Isq%LO:q9L4rb ; I3%Se8ą=jNJE3Ýt wsƤaIŃD4M>1oQٗ-LF Y59Ks8|s}'Qq?P蓖8v"[`~/?nSݿ#jg'ㄉ5uǼs@w͛QDzıhYjg^AY4Re!B{Xy@E\fvv6;kM{QʖғGY#1($50ӉȮ,&Gs^pZ;'봄gTأ7y[AD>{9kg`)eg"B>^=4}SYU@9]x8u{t %ٕrnAlOS5o ݏdFGi²捘0Yc __8=7;wCQQ"pfIO{FMg؎]6Č{MMU\#egO/9KGy\='b*P<ٱĹNM>BB`Tɍ s$Ɓǘ$9-NjɯNՐJl#B EDH%VVI>]Rt nIҵ)G""{%6??j\\֥БRÏB5UV C6lo<أ__((x1ҡpiRI9a:B*oN}t˄wM%)-.//OP{jċWJk ?8P&;ebJl9ZÁo  ߽[ II꥽40߲Yag8 ZjRj4j@dHV'ɥh_:|- ?($Kp\N[qdA1,IPޠSZid F@OɕTwEVqdf5a3?ļ/ t߇ őZVc]=ز%˞M5~&vJnhh8NO͛RYPWT^u4ta3Yy_S0l_Wr%Ny༂ qJ bjڌ=YY' Lݑ7C/YQVHtKɂGOom%_Pd~ȼEl{a„ 7b,(~Ao^aQ_em]m6*.fGlȓ#b,Vkʎx[Rы=ғ_)S(Ze|?U@V*,23Z(S1EȊZ|*"_H4V*ȫRqk/U .S+F|>OڡU+ۢr9W{˅pd8 gX_G^w˿zeX+&n(n1CUvT.% U-I{Z`Ah&#?NCǤ]얛\~*C)WP\:"o|*t<,!wuUGjWSRo T{ZhSop0r1Ǵ;uÅ^=ς g1;Vz e5Tbc |BX\!%ʐn>~B IP!!zH{VJI] &WM@zE-ň81@))X3,Ѥm0J`Z2CR$xPٸ6|\Ilu*9>Pyۘ)w-Zv풢M=}z+dS=]+6m9WPv@܀RR޽|$}a+lWYDI:~- ߔx@~L+COїR9:IDI8[0`"N[5␎jyoކ* 9ȈSRU'{k‹Z:&4pL 2w^4f̘RUz|,BO q[qyS8;u ?-BwLh)wWeW#~RDR9VKwH.ݥ௠ZیP>6urTq WtK0KEZ|X^QW=אjgZg\3ZNID-Th佧V ?,joxNp ֲ@m8WN-ty3*d tu2ԟ q8;9X_/J8K"gzׄ qMtF[R%+>Eq1Zxn֢IChC>f,˓ʵNY-/A^D Q>܂[*)>EZ9f182dơJ-m=fJyǠ:/<'kl5Cos:+z#>lF_0uK{rf^ލ8W"nM ?Ȩ;@6TbU{)ԣ?[{'V;&ڨTl=C,ޅZ\ա*ӴU ݶ[۠{}*J#u+vCKŖn m[iv8iC·a :TR=J,r:?B#onӶmU SKw݋(*w}/B)N(U{4V8c9 \FĀ^Fc}jQGx(z̢hַ ^ MӏY,1Y 'etiZ4s-4Z DEΌ[+!"0\9&YSbqW'tm)h`>%evMB˜_1|/8q{5[֢!VGC%7|M9G}B A 4VWiqRi^\}];@ hX*oX#aR\ !g ;o9#J7:]?Yrj[ E.mrq P:ιZ>hJ#CG78/EW]+}Ъ{1ZN@LEU`mBwTmaQꕢŷ)ZHvr:މ &;|j n;lz /8@f|\fP04Fv\jU/5xVYm"#\Czo薾Ղ+H\*}GX9\87^tׂsbt#DrĐlv SOZV+hh{ wSzr*مWz^@<}`<[Z{SZQ тQq1 VmeU-'F"c:ЛA#K,kc;P'aDwXUQ%^#5 *巈F{ YxǨd/ɧ6T:D7ѣwH*K>JAemST79fZ _tK~{Z.fYt-rT&\v+.F/|)U:WW 0RB}TGi!Ic@Hj"_*gz`6^| i%Bc"m+fQHZjҬiD#:ClI/kURn 3V^ uih˚0"KogqeD|c"6 ~hg0ϓ @")~${I+ޔqy(K=̳ Sg@݂O+z+ P_z츕Wjz$,cЍf4ف B?(+)8AaWW] 3|lUZg 9_/b{Л_{zf.tЅ9ߧ`e6kkз 5O5C~=F:G:YL;I:Zi+AO08YWՈiӆ~@޴lډ\ߎiֺB!ldGE1>Pt©:c'ƪ*a_Yvtz.٨}]4w#GLY;/a)C֭%vYUI•t Y ^ e2իTVLt\ɍLP3e vz&|8dZ A4'F4\ .cWi(dn`vRe22L3F25I%`W~)ȿ!F/RI|gd2ȏ> stream 32f06i54h64i88g;;j?>nA@pEDuHGw HJt!OIuKMw( )!)OQ{$0RT~UV-1WY.2\Y0819_\3:b^:<;Aaefc=Che>D?EeiFLjnnnHNKOrrQWuuSXyxUZZ[}}\b_eydfz{fi|w}x~hpmrosptrvvxxz߀⃆ነ䋋㌒厔⑕唗留䙚曜眝¬鞟蟥ĭ褢礨馪ꧫ쩭͵魯ļϸ믱Ǿɽendstream endobj 94 0 obj 768 endobj 63 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [71.0037 509.751 164.5694 520.0458] /Subtype /Link /A << /S /GoTo /D (section.1) >> >> endobj 64 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [71.0037 481.2746 232.1119 493.8939] /Subtype /Link /A << /S /GoTo /D (section.2) >> >> endobj 65 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [71.0037 455.1228 162.8466 467.7421] /Subtype /Link /A << /S /GoTo /D (section.3) >> >> endobj 66 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [88.5627 440.677 211.6776 453.2963] /Subtype /Link /A << /S /GoTo /D (subsection.3.1) >> >> endobj 70 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [71.0037 416.8498 155.5324 427.1445] /Subtype /Link /A << /S /GoTo /D (section.4) >> >> endobj 71 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [88.5627 400.0794 269.5572 412.6987] /Subtype /Link /A << /S /GoTo /D (subsection.4.1) >> >> endobj 72 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [88.5627 387.9581 222.0829 398.2528] /Subtype /Link /A << /S /GoTo /D (subsection.4.2) >> >> endobj 73 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [71.0037 359.4817 159.559 372.101] /Subtype /Link /A << /S /GoTo /D (section.5) >> >> endobj 74 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [71.0037 335.6545 169.9644 345.9492] /Subtype /Link /A << /S /GoTo /D (section.6) >> >> endobj 75 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [71.0037 307.1781 185.5864 319.7974] /Subtype /Link /A << /S /GoTo /D (section.7) >> >> endobj 51 0 obj << /D [46 0 R /XYZ 72 786.281 null] >> endobj 52 0 obj << /D [46 0 R /XYZ 72 761.3744 null] >> endobj 62 0 obj << /D [46 0 R /XYZ 72 525.1931 null] >> endobj 6 0 obj << /D [46 0 R /XYZ 72 290.1586 null] >> endobj 49 0 obj << /Font << /F19 55 0 R /F20 58 0 R /F25 61 0 R /F15 69 0 R /F36 78 0 R >> /XObject << /Im1 47 0 R /Im2 48 0 R >> /ProcSet [ /PDF /Text ] >> endobj 97 0 obj << /Length 3191 /Filter /FlateDecode >> stream xڭZIw6Wepvd؎_IF&{X~\ vׯUr)3db.o/3uBYկZHÕVmwBgIT6+. ^zixűWxZ:RIprRr2TeYTLc;\,~[BAس5U5i).%u!<)`M\/nF"[cS&W`a<h VwE¿GU8a,pì%g'~W 92XHX-差B!G ;\Q"Z fsw#m'x\1UoʺfH[{PtCp~ pTF`*x[HyԟyU؀Y{8(M{N% {NM n5i>Ȗ5}ړC ̖QP~|ng-;+sZUBp söy% Nitm5~k˜wUY~|Gj̣Wf;?#UL#,_裏?v8ل 5ciUڸp:_=OPѿ|;jo@bjT}ۗ59 676fe=>[ _$>&}Jr f'j$Uڂۤ^i*̂ӏv z9vyLw~ps;YoMC,SRR.{z*+ҷyP(: \'L2qT-S$c]xUwwС,ƷZrA/etuCO*knm3d|A}K4vNt,llʌ ~Oaȁl(>lkx-D?74.N.X$'+ٻ%2vϯяW-;[\ֿq/"@p%+x;κdG~`$PS$id~@Tv[;זkOkD'B}Y".sUBgBj5@h*&X~W\xE"Ƿ_(t@9Bnn܉ )RG:BKc ^"2xdrWzv k"5|mohnE| `ht\]՞)dy4!R`݌6j%" ^Cf1pƁ~]FBbuYm/s"", ^hRby4bqq8K $1 VY$»%8 HAy[fN?r%2݈r)V@TUK!K1]U{fooSxzrpohg>"`-(`^c^gR"V vSS0c~WNaܘs^ Ć#lhήFJB-?Hw I؜#8H-WK 91 fjpcCG@cyD`W8{1VK$g8P" D)QD 8} iwlQ fʦQ~y(DnZl #b*@o$qP+ |>f̥H,\{KfG8!]KMjÇ1"M60N9 `iy . Is }]K$> D> ID8gC7/۠u8uNM[8@R `c -yG z; $ѵ$1M9DN2åd5TAvyfpt0Ȋ$Ij30[ =|v!r7ۖkNA?ž619mK͞ݮvE |9 眱Scڹva3mC@#Pɑ'[` X߹^qMhiO\Ooʚ?r> XLYz &d\:SsGΉ>G.bwp8ڱO@d:93ad* h"!1͸8r7:f~=r w;JN S"XBN5{qWrNR)_:x̎LeH *HO2?$H]q[&K)^#_m5Rn4jeN(ҕ۞1cd~ˊ# $PwD[2D*k2G'|3[S8;` {,V>KcƬR<'a),MIHTi|?[*? z/Q-U&{N~Yѩ۰!ᏉVw? VL3=';nKƝY0Ӏۭ*7])<'ҮgAEE )7öJDӍicG7=?=Iћk$:l7>~A]GʋfPl,b*(EClXc3yQ}lf\N9 7ѱ/ ^0Ij"Me`DB,Md":&װLoDa F@Tѽ)l&jìZ6 iX?96$ 'ݦ@endstream endobj 96 0 obj << /Type /Page /Contents 97 0 R /Resources 95 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 79 0 R >> endobj 98 0 obj << /D [96 0 R /XYZ 72 786.281 null] >> endobj 10 0 obj << /D [96 0 R /XYZ 72 761.3744 null] >> endobj 14 0 obj << /D [96 0 R /XYZ 72 489.9257 null] >> endobj 18 0 obj << /D [96 0 R /XYZ 72 193.5288 null] >> endobj 102 0 obj << /D [96 0 R /XYZ 72 133.3379 null] >> endobj 95 0 obj << /Font << /F25 61 0 R /F15 69 0 R /F20 58 0 R /F36 78 0 R /F32 101 0 R >> /ProcSet [ /PDF /Text ] >> endobj 105 0 obj << /Length 3644 /Filter /FlateDecode >> stream xڭZ{o6ߟbQ] *p$ࢍhB^!jG߼(iJ^ IQp7ۋ*\)aWұDbzFyjUכ_oxu{V>9ir^_~W\^&:T J\~$)n$_.j/Ծ>lylԺ}޶͇>l-6Ժ,,nsաx SZͫ~"8Xǫ80QI.!=pZ/١hMo2/2"%4J' <EI'eo{D4(G/Gq;'"ıhC;]-TEok~9῝>jmRK"hJ0lzMhj@fXSOZEii}s J{Iii5%;x/P(xw?z"0 ?ݾ>v2t^09Gf>޻]yz: ԊĖ}yga $iV :YJJ^0ZSq*VQ8Gq;'/1BGAu֖Chb!cy Z_BAa`|fGRO b y@㘡llY+cIO@s@4Q,dCYy+ tssj#S]FWaK),@A#}_;~GU񋪼cD)ۅAmmZ%Xp q8|*`( y{tK2(RdĈpj}O }Ƌn=d?d<|%g` +  r73]P- /P±8G6H SZF|:)P0)8j:^~ ΩC'EР muB&pXXgzId"4e](l0=p1 Ea9TR?z:9IBS?,/F߱!ܡnIAԃu"0RhtIWf/~0$QSai|$.~bEI ө}dO # dF |(n$$PA-(źRLk!Hk ch㧜boJ]yA)(y oz. 杜H*Vo7SL 1WKD*c*'Ǜ;+ UFh{0'_`^¿x9;+ɢ  e%jMJ}=^,Q*(7W/)CR*Q%_W"f,5)Uٲ>6t vy#IfIڎG*$@gs :AH=04|D)n$2bG[̎h;8GR+}[)~jKAbDmADyױeǏ1Hf876< N3X*(^'Ɇ@I3{Srtܥrn8GtJ ȼ/(fC~)'S'ArÌ02pI /щ/'ހ`d-7~ q`ʺ8~Hc5O3. gL̺Eg8bPQb݁;ܹ0T*H:J!0=MXӜVx_"łW) | C-n@)#X”%̗c/r2lr7G7LՃD&#C>+e|1 $pPH b8;ҫDjOEy8EL"6~so`]`GТ/Ё>=ɯfU>TY)$c}A ysy,'@.BŸL:|>ˌ,%+ 8tQP\9L#' OeRh>ZOZhmi' yʜɍ2247 Ho`OOG?3۱^;7qiA!)%V> 3B(hZd ?&3fPu…";@u o@ǝ*orxm$Ņ)K䖇ȩ=//ormy,3pӍJՎD{[Q$=L!&v@E 2XIzv[lh HY߹@(K 'Pt Ҷl<֓[ tG'*Z/; lE4cjpYr̸ͪ ~K +1 sX~ø אq&Se;؛~(X,eOq<:F<)<]Ĵb."x |.'i-c g^E:J.l/\!j;?tq۔b 7e4:LO&:JrJ8AU]N&5]RY@w;둌488$;~[k&Χ+6+Ns:ġxS֋1DN/S,Tċ$p; tKXƟ@xH.w,n[KK19hpveW\EM߰rD^>2hxc 8˕%Xh#d0Z:F9<(pWCKar8("6Z؏6\ r(O:9uR`u n3ݺʢn%|>!u4 |p&,s̾ڋK }ӟЃ8څu)N`r-*O&SVT{~kg?Hq+b)Gnmȭ)7 @ƾFbHϱjYh 'Wзٸ~;r3BI"pѣ SbSpNw1kJp~l}XgǿX~$?@2>nH 6nyF഑'KȎ3ѧѳ{ q8T> endobj 107 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [464.4698 591.1205 481.4199 605.0682] /Subtype /Link /A << /S /GoTo /D (subsection.4.1) >> >> endobj 106 0 obj << /D [104 0 R /XYZ 72 786.281 null] >> endobj 22 0 obj << /D [104 0 R /XYZ 72 242.5041 null] >> endobj 103 0 obj << /Font << /F15 69 0 R /F25 61 0 R /F36 78 0 R /F20 58 0 R >> /ProcSet [ /PDF /Text ] >> endobj 110 0 obj << /Length 2600 /Filter /FlateDecode >> stream xڭɒܶ>_чUC.MT+&T`R=2lshy &[I;wBEJ.SEDCR?d{܇I}_ˡlq5˫'>qg?z' i Dn/pm EϦՎW4@`} dN!OJP8H\H]X3ldjmG2&`\$GbM~^ӆbysDl_#$8KO8ħ@pi4h˹ gAH8/~KeDBG>ÌpZ[\fϧv҆ڐi8S"7[jy-XY"'Ng 7s/IBglc JxrHRxj#n:+3Bt&8QԦpHr2RDъP2%4_**tM@Z`R4 ؈vl*C6!)Z@#YY^Yp@;S^::VCN6%ZD2x'l,Es2$r4#KdD}~25E&F:Ba+WB>Zh Jrd0@״'׸`b+!dF{, 42O K$%0}Uz{iL+V*N#zJ Ϣc=D]/^h7*QLX_?h}?edV,JJߧc9O{4h:#:mY: (J>{%4ұv}DWdz[Q-2]dphRj%Q" z'GJ;,LzMy٥>7pdjw8l'QS׵ sCCܤ n0oNH=8 Ɗytэ~|2ys #;h>O6PTV#2I+b{(%U),HZ@bChәAKT`:Uit!iMh:\%Lz/t3oM.ݎ)=b uZ8NxLƬG.$|F6gNIS&\l"I:B2>=ɔ Q||k@fǀO" ~rw{ami$,-##$.C*u"Ygo$ħ|7ƨF )ե0Eb8M值 g}ὢSB.ib"T6|MZ 6h||IG>ρ(Ҧ֔ZxҶqM%6j;mjZ>,zDRb5 {/A<)d &jwJ`dƧZbxq'zpqk/?|}tBzBN0#ﴋŤ p,'ϠXs/ǭ{%fR=lU>8[7_3l(VmUN G}3Q#X|K߬"HN keZ4^%ȃ7oo`y, ,"vwM&ULHܝnH y{z.Ag+E_P#D8JG"oDJ?twE&Re .N;l0bUHb5-|U1\$V=Z`^r?c)wx4Cu}E8ô /[C,0@{ uqhS ^=|7}f ADHr0%|Xx . No|+Ҹ5B}@{xU"׮ܴcX-¿q{^ '痴)bJGݷo[:xބ\& %D]>g{?|uZ7 'ʑ8qo w '+Oj_tHobv0uuƓ_?O_ 'THuc3-D<>HjG>CtB/]G:W/G79s;u :)w07Dm}7J4> endobj 111 0 obj << /D [109 0 R /XYZ 72 786.281 null] >> endobj 26 0 obj << /D [109 0 R /XYZ 72 761.3744 null] >> endobj 112 0 obj << /D [109 0 R /XYZ 72 719.9465 null] >> endobj 113 0 obj << /D [109 0 R /XYZ 72 680.428 null] >> endobj 114 0 obj << /D [109 0 R /XYZ 72 642.2379 null] >> endobj 115 0 obj << /D [109 0 R /XYZ 72 603.3836 null] >> endobj 116 0 obj << /D [109 0 R /XYZ 72 564.5293 null] >> endobj 30 0 obj << /D [109 0 R /XYZ 72 392.5492 null] >> endobj 108 0 obj << /Font << /F25 61 0 R /F15 69 0 R /F20 58 0 R >> /ProcSet [ /PDF /Text ] >> endobj 119 0 obj << /Length 2960 /Filter /FlateDecode >> stream xڽZ[۶~_GmƂAnovinI2H8.!%;sHJ e/"]/^Qv"PҚ|9qjL.d^43)~)] ?_d<-3B*Ф` kH[p,Td4r.fqh ;gcZs5?2:W3k =ƀ6"Me(6 n_ -wω^Œ [4 ̤΅3N0If).g&ˁ ۪(k9ӎDrTaσT/x[ ӄ|+UōvQȩe#^;O挔dʄM  6zl?4ДSejsj'@IDzG΍wE|>*tR'N6b)$# * A!?ԛyǘkaUQǢEl8?rSuSP. f5(sWWWJ㦥=q|(n{O薅@(7H F-Hx! M!x'^Ǔ^ڶbN-oqsz]ex<ɖnŵ:HNY< fmFGhK|M{ܠz7=7Brknu >XtXA$ڵr< au[-2(J܋QD b8?=_DLTNC܅@?AEmol=eS3Wze!1IId-$، |MQF#ϓ22Ofx]ŎЉ߽omlGWlcE#᡼!hfBC vUy!!e/>fgySnn߆ 7Rۓ:B uѾN#G=r16 GIߢziT@mKs>N,P#s˳@q6&ˆ%ʸaiY2"R6^*8Vưi/[R=h2Pox a}bH nT)fO m}O@#$PzT7}njp ;6dWRWKs.Ȭ0֥YeR`S)3/1BCYa$b)$#Ta/ZٰmK9B(\޵UJ G)M SH-MMKURJ9KJNrV ݾ+H^qY^Ph;E[bϢiAw2r:@; a.\wi@<.ؼP6&N! [3ALobV kxy)j ^r=وbLMS#Q- 0Ud3@0 }I@~3TWoiRl WΒ  ]KnB%7 t|[K](;xdX/_e" / -R@D@QYSIF ~\ϻ28rpiVN%>j:w6=v'2EmA[֮:Zy /]qo- ~w%y eӢ,q%S_\Rr].]xwJPtzƥExCw~p8Pk;pPXjy4H^4J+]tW-QHw<*Jظ7_2Wb֛?}7o,sQ 3 ZᠴS HÝLR ߇P,C(aS5 AbN%!D> endobj 120 0 obj << /D [118 0 R /XYZ 72 786.281 null] >> endobj 34 0 obj << /D [118 0 R /XYZ 72 761.3744 null] >> endobj 121 0 obj << /D [118 0 R /XYZ 72 715.8286 null] >> endobj 122 0 obj << /D [118 0 R /XYZ 72 690.7559 null] >> endobj 117 0 obj << /Font << /F25 61 0 R /F20 58 0 R /F15 69 0 R /F29 125 0 R /F27 128 0 R >> /ProcSet [ /PDF /Text ] >> endobj 131 0 obj << /Length 3277 /Filter /FlateDecode >> stream xڥَ}Bj Y#HI`C$bym_,_5ϐGvYsaHgc&rZϙx4U=E2\rC3ZIfR5x̂_K:R}|H!M!DdDEHl^ZaV]Ϩ=,E|Se[Qi:KBK"Qmm7\ GIRȊ> m˜uM.eۇi\ћM1ZxN.Dldt8Kh)ȀQFyp#z0`3ITKZA淩I7iEwHTTYv z${HxP H\V%^eu!'WBP* <`),dkIY|w*(t7G+rB._JmpoɎ_΃L ~sҷ$u ¶4QtE[I&dFd D/UaS?`ۯw~@e)KtKD h??F^xm0~.>·bRq# zOsaCRɶppx'9~ƳŊE ( C٠Q; DCj%'w4/4*_C`BO@;q4J:JYre0#G`B~DžZH~"~\ !29=j/uR%jmh1'RmL?XE;W$ir"׼G5O{]tgndvTiqtҪb:YG(I %\N7gζ,YwENu"Vq2q LxLV=..sR[*ͥ8FEfuU\wŇϙ!JG(CEsGYmL.Td9z1}reogPiХ^TZR:}gA+.v3}/u33Sk @5V6R#ဖAũ J]ل`'\j}΢y_r-Vr-9B#8df ?&4b<\Uyt)oʣЊI,BXVb_+0F͚nd뒻8A%> ,Xbg>¨ ~ru@ht ) Ʀr q; >{ڕ|ցlǩ4 X_a%THelϽv c6W-Vc@hY?HĆ_.endstream endobj 130 0 obj << /Type /Page /Contents 131 0 R /Resources 129 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 79 0 R >> endobj 132 0 obj << /D [130 0 R /XYZ 72 786.281 null] >> endobj 133 0 obj << /D [130 0 R /XYZ 72 474.9485 null] >> endobj 137 0 obj << /D [130 0 R /XYZ 72 392.7567 null] >> endobj 138 0 obj << /D [130 0 R /XYZ 72 310.565 null] >> endobj 139 0 obj << /D [130 0 R /XYZ 72 272.3749 null] >> endobj 140 0 obj << /D [130 0 R /XYZ 72 232.8564 null] >> endobj 141 0 obj << /D [130 0 R /XYZ 72 165.7746 null] >> endobj 129 0 obj << /Font << /F20 58 0 R /F15 69 0 R /F36 78 0 R /F39 136 0 R >> /ProcSet [ /PDF /Text ] >> endobj 144 0 obj << /Length 1627 /Filter /FlateDecode >> stream xڭWɎ8+|-"%mz& 4C,Ӷ-%M'S %ieT܊*?^JRƨa˜|&Hd׏mQm*nK_4Z$*Μn\=Y[ch#ΰJUV࿉ l `6Y ꔅ' Qb?Gmhr1Ŷ**IDt6q]@4EqUOy&>rK:Oc՟ґk @HC&PC.]kyo9;^Yq7|ق7w%8qwefWv-^iU{1I֑z{2w%@K#1LřHTՐ_ b35SR eA1+4A)N2Ô W1F-3CvEgf0<]}B(6d_<ͦ)X*ϯabTKb)b/8TCB%X UӃEh `SuF|VN7B;#AM.͓p{E`SI)*"\kK,8UByLCCe)KRB*poW߼Z%= Ff#(/F0TMpM=Z\ L@yW𸇪WozkTq\ZrQMH#ү#\br+ m.s,rކ"ݻũU|3Ile܊X5ءRrJX(gTzdJ 7~gSOswB%rm%DwCmiR9rСF6R3RpimdE{JpхTU*H;c2gR)X;9Yd5Rfrq{CB* }qUDE2U{a3ycɤ̙ 7yjןЀqԡ^PϺ!ؙRjƠ'ӗZS=H&y-PO ؛鲲:iHb(Zz>zsΓg'Bw-2z 1~7 O0zBzUn>@n`;luv(2̝vx'LsKX9$NA'ǩ@]o-uG^zfڏܡs>1 CaghqWĔ','LX'0BFq4rޜ+Nb>ɄC>WU}r Y t5j%6:Ws*|SP8'bBD^R@$*endstream endobj 143 0 obj << /Type /Page /Contents 144 0 R /Resources 142 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 146 0 R >> endobj 145 0 obj << /D [143 0 R /XYZ 72 786.281 null] >> endobj 38 0 obj << /D [143 0 R /XYZ 72 656.5176 null] >> endobj 42 0 obj << /D [143 0 R /XYZ 72 561.7397 null] >> endobj 142 0 obj << /Font << /F15 69 0 R /F20 58 0 R /F25 61 0 R >> /ProcSet [ /PDF /Text ] >> endobj 135 0 obj << /Length1 833 /Length2 2082 /Length3 532 /Length 2669 /Filter /FlateDecode >> stream xRy<3"$+3CCLd5dɘylƐ9lGBSȾe9"d8J:s;|>SQAc PAhVfU@ @!bDzxq PEhյjYBexO:`GH Ő+ $15"`G@:C#۽>-@ p,p2ȌA4q?Z~ ͇i P`Tq2@,9 d:oVؗHD 2~gPHT_:H(8F՜#1DV'2 :ǘ t'!u 3}sƖvJui! *dcğ8Up<|3̈d{8e5u@YR4#b}i4L~̈V@BF)XTWJy+F}wEA|@*AU>/cE'0rX^`K,b[PT;egW֌GHޏHR+GձZ#4[>hhpgʥ8[ܛHvQuݑc{/sѼa6pɤֲ£fu[ks:\_ _L?5n25hJm vdC0B79U)O  1p$z^0; +dz+r߅VH .=P!Fg{1Tk;&9 |N3v:+C<|zEJ;c7\~afmJ $RirVgoOkSi&B\DLP-eE'/h=nP% NK%mǬQhb㼡`'1v fautɯ"nC׊wUc/OX._Yv.Rrf{BcŞ%Is3^_ *IJo-iG͢_e^F6V3d~= k?)0mp}Tr`򓒨9)-?FU2H 4*׀~t#?r3dz/O_Iqrtz[ϝ+ωiX.Ln RMFAetfwtQ Da Mˁ?Rk>B:^SE/ HSy)sV8QLzO㱒ˀVGO.*DOr9x<7P۟$+}xk8RDE?_půj)gn/˻ B족uREܭAʔGC..ukD(ٰBn>?KɀMyD";VzZJAĆ]:],vYV׌n\$ec;~~'#gŠ. "nO줙 [XPdBIp4IҳpcLXKU@3+Ax^lƨ>٨kUy'5dٛCmֳ&N;2yar| X}"9 O<ġŏN&ED8ä7A6'á'byG/HW,).omM&;bQ^\SA9wmBrNeH;>}$ *<aTyԨVҤүwe|gw9|4mfEh楿6ؕE^t vEBf?Ov1Ű0D,Cwm-~ɡjҋ3寪(*uuJq}XS:vquz8{`Qk R&SM=](_"ޒa oJ[S^IY @b?YL rDUnod昸Y8*t) ڰO5a \} t 7ku9%Fl =uv+_%o8NiWNtPwb+rL}ojfVZ0džng I]]Uv7A >]Uގiz!MXVH1^C;meQ3.ʖ{H>^wi]ke:i;[ܐj%3j%ʩA)1]uS]o+2pF߻뇖~۝g@(ku+I CtW^gF8j/wI]2'{sQ<O7MW/+S78f|8/'xM텰ڥ48WEc K6]$s>{!иz%Zږc؈u,e mҪb8ΔJ|0(,\b5p+71S>!%|^S؝SVs֖ O6+ꄞ"g&2gP? A N!ah {>yendstream endobj 136 0 obj << /Type /Font /Subtype /Type1 /Encoding 147 0 R /FirstChar 97 /LastChar 115 /Widths 148 0 R /BaseFont /UFLKKS+CMTI12 /FontDescriptor 134 0 R >> endobj 134 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /UFLKKS+CMTI12 /ItalicAngle -14.04 /StemV 63 /XHeight 431 /FontBBox [-36 -251 1103 750] /Flags 4 /CharSet (/a/c/e/i/n/r/s) /FontFile 135 0 R >> endobj 148 0 obj [500 0 450 0 450 0 0 0 300 0 0 0 0 550 0 0 0 413 400 ] endobj 147 0 obj << /Type /Encoding /Differences [ 0 /.notdef 97/a 98/.notdef 99/c 100/.notdef 101/e 102/.notdef 105/i 106/.notdef 110/n 111/.notdef 114/r/s 116/.notdef] >> endobj 127 0 obj << /Length1 736 /Length2 1114 /Length3 532 /Length 1663 /Filter /FlateDecode >> stream xRkXWjV tCKHBsA%+ $Hf$DEVQXnjB` Pܼ-EZQP),6E}̟}{{>'ҍ!` U(4 J"Y8 ) eCJh*=`ar %J8G #R $ `H7wBxƓa!D!"PX$9?>oB- p"LnE!J5@HqL8oZ(J# ٜȉƋӆړAzǼbo|Exl.ʠd>;U:֊cEggvՁR&||:lBoto #\J{pb|TˆW9SA, 䵉4X;F:8^J,iz+Oyʮ]7ml ,89q#=\9_[~7#Gk90_-!E69Tl?糖>Z햗@ԚU,h X./iIogG%携ڄ;YgO< ג?NE/ׁd5tcםx~&PQX0QN}2O_t!/gv>]ZdnlLwWq^Gw0ޝq/`т>)6Ig^zEFHT2yukOUȸTVS#Noۚ&<[eTkǫUItu `zgL0+mù{tGT{VnI*]շ~ygXsp*1=$%k6gY M]2K6KZtmҹ̑|c4h&pݚvmЈ9ek `zj{LWs^~C\չ&K{Ô^gf?ڟ\Ê:?=wĭ՘SR]7$0:)tE}rvI&gؙO.48]qhbS"\W?j+e&RVoeԦn7^-OHҖȾu7;Dί5jËEk,<Գ~R1Iy54D UGr]&^mUAkAI&s lft"_B@ !\ <+&6wendstream endobj 128 0 obj << /Type /Font /Subtype /Type1 /Encoding 149 0 R /FirstChar 48 /LastChar 48 /Widths 150 0 R /BaseFont /EGRDRK+CMR8 /FontDescriptor 126 0 R >> endobj 126 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /EGRDRK+CMR8 /ItalicAngle 0 /StemV 76 /XHeight 431 /FontBBox [-36 -250 1070 750] /Flags 4 /CharSet (/zero) /FontFile 127 0 R >> endobj 150 0 obj [531 ] endobj 149 0 obj << /Type /Encoding /Differences [ 0 /.notdef 48/zero 49/.notdef] >> endobj 124 0 obj << /Length1 813 /Length2 2252 /Length3 532 /Length 2841 /Filter /FlateDecode >> stream xRWTSU)"J9(]!EB ER!9$4CP)Q@"UA@(E, Su}rwTu0hMt4`igg@o8fq,2fchadHnFQ(`Igpd"hZj}*$q4"TGx2 pvp@fHЅ g> Le4(d Bcj:/fO 7blnO79JpPЩ IYgԟ,ЈA~d?k2$8YxyF99`nN;X#Lcp [#Ƃd6ׅtF(}d8 B\@@6a4:Kp4ҙo{E0`5t7et*c  _H[?K:%G(xȿ L&Hc}U}ɂA !]tqнm"Z~ )y-5Q)ƺ2/U.G("a_԰|%& #I+3Y^ה^z^qFNo;jDJN ߟ.Z =|Wm |Op07Cv>OB[{Cv=h>V)ϕMua ܑph )/jk/" vV=(ܢ!y%zr5ػ.+M]r0EÞI=)*uZlnR}bXf]B (}a7sl ;dDl.OrbrlEɞg]7ђo0ۿ|bJ-,&DNDNN;Nb:G!C^T@ګNhmmٷ% wN'نNΨT$Qf;nü_WD x~v%WAt&lٔIw~WW.#cV4-s SWn""R|Y&'5ύ3X_^ 4?,1S<"\ ѓE)qkn\PtSYV{LigczIŊU/g_EXߍX, oD1G_ laOg=c̥œ"Pm{R]qSlKmM_ +xLi(-Z61}eTY@H8EdŴamLp~qǼmPɯǶ:z"+]"/^LغH"2щ$B8f6"-3(;}Hq`AlՏ>yX]ָlb͞Mi:iԏM)z6/ <1Yt*y;t#endstream endobj 125 0 obj << /Type /Font /Subtype /Type1 /Encoding 151 0 R /FirstChar 58 /LastChar 97 /Widths 152 0 R /BaseFont /FFWNRF+CMMI12 /FontDescriptor 123 0 R >> endobj 123 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /FFWNRF+CMMI12 /ItalicAngle -14.04 /StemV 65 /XHeight 431 /FontBBox [-30 -250 1026 750] /Flags 4 /CharSet (/period/comma/N/X/a) /FontFile 124 0 R >> endobj 152 0 obj [272 272 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 784 0 0 0 0 0 0 0 0 0 813 0 0 0 0 0 0 0 0 514 ] endobj 151 0 obj << /Type /Encoding /Differences [ 0 /.notdef 58/period/comma 60/.notdef 78/N 79/.notdef 88/X 89/.notdef 97/a 98/.notdef] >> endobj 100 0 obj << /Length1 750 /Length2 576 /Length3 532 /Length 1110 /Filter /FlateDecode >> stream xSU uLOJu+53Rp 44P03RUu.JM,sI,IR04Tp,MW04U002225RUp/,L(Qp)2WpM-LNSM,HZRQZZTeh\ǥrg^Z9D8&UZT tБ @'T*qJB7ܭ4'/1d<80s3s**s JKR|SRЕB盚Y.Y옗khg`l ,vˬHM ,IPHK)N楠;|`EhC,WRY`P "P*ʬP6300*B+2׼̼t#S3ĢJ.` L 2RR+R+./jQMBZ~(ZI? % q.L89WTY*Z 644S077EQ\ZTWN+2AZuZ~uKmm+\_XŪڗ7D쨛Rl:/P1dɫϾ(l=Uhd_OܗEkv-X1tލ`i_y. 1dz:un~Q?3/S}] $e~s]F1ʻ/Q?m򻳷|<ċݺ/q'}I+6EgxT.GgtvՏGU|~]Rޅ_k9:{pG d}dN<6-uBoH=cMvHzqaRK~,K̞}˛myo~v _s>.#ҭߦ{/əkܗ\m|rXϾadj|ǝR/,2p0, HIM,*M,rendstream endobj 101 0 obj << /Type /Font /Subtype /Type1 /Encoding 153 0 R /FirstChar 15 /LastChar 15 /Widths 154 0 R /BaseFont /VZMNLT+CMSY10 /FontDescriptor 99 0 R >> endobj 99 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 /FontName /VZMNLT+CMSY10 /ItalicAngle -14.035 /StemV 85 /XHeight 431 /FontBBox [-29 -960 1116 775] /Flags 4 /CharSet (/bullet) /FontFile 100 0 R >> endobj 154 0 obj [500 ] endobj 153 0 obj << /Type /Encoding /Differences [ 0 /.notdef 15/bullet 16/.notdef] >> endobj 77 0 obj << /Length1 904 /Length2 2877 /Length3 532 /Length 3511 /Filter /FlateDecode >> stream xy3 qdИLB}DH"'*L:RK Ҝ&DiihiA4͋wr h"`H)x,b 3d,zCAAHR OD:Nr$8?K ŝ P`TXqd uJOsc`!M!n4*HL8BSz;)ӈbx!ɉKxwc'3S΀#$ܟ!X~s9OZz! `%d|q KINP0^a:$ pLemX]ȏpg/7g~E~&&$?ToRg~kp/B"X o}>rTB(uai HĬaÎxhABzX@F9ݥ_W,ׁ1GuDz(o,=7]t{s&O8Gqkg7Ep2/mkJi$&~έT1*3HC9}ߗퟺM)? jݘNx$q1aeTH0Vx)#^Bmv%PQumSin431H]$ey=if!s+lnĐwx#w-w@D]2l>DhGhrM<.|Tsko=ձQ1cE@j$|eg9J܃uGm3g*F/<9`bd!NEq;B4ß OJ/(h1Iw@,b:# Z6>n.!*;ߣ {#'8|5*~KPWQ,v*Kv"|efp(ZrStw -cioo}\Vf#+sZ*%+?ٛnj3SCН^^?@A_Vv׃c"| Uu5zv#-&M6T5ߎ~,2qbp|W?[#Q 7gW2.fJjՑ|~e矄V?Hg~/Z󼝱< ;l%wԪFyBS,lAt.Ϸ_^>e_(ZRd+Wm O~ŭ%PUi"|XZB_#GR=fE=TWm{qy7Q8UM7IaƉmQbʑѐpʣSop%=7E?h9#jrtS4Wnӵ ٺ.apnXR<WنlEKVKyo.|W;JxȻg'w|B/fhA H5hG"k͞ GeshUR5{gz63I{/մ/VF- ж~f)}'>"jUSQ|\@t`{V~^w2?t2L>779'FppmH7gt-~,ůZ4͋:R2wÓmm&\1!b+ 'w_tJšj_ԩC;*~IbHNC>bK #K'ZEA+D#$Dכyؤ6m0vz9PxtH//KqdSj#ͺZTEׂπrk0~>S3|]b0ٙOpEXlY_yU@8,~9>D /65v/ 4~W\Ӻ2[X~쫨MM&tM@zN3H(fV/!MI}0HJfw {-đUtNqaqCf'-NɯU)W 2]KjFw|U*2xg }ih*DCS;Y:?A{j06_|nKL뙯!3B BLl`JODN D< 8%]œU;GiTAնz|hM0}xFߔSgS ~J6͞h#o*/s035.޾D[\.oD5v+9,KgTW$NcO\٠M !$GMQ=u`J;{GSvs툫)F(񙓟V9t X2 c!ږ}= f*]3Vn t%v;3pѸ nԨ<\>o\2䎕TImKY%%0`|*ظݨͻ44z;Dmp#~>%]\kCčgOWb)ew 2WSN|S v*lGOQXq> endobj 76 0 obj << /Ascent 514 /CapHeight 683 /Descent 0 /FontName /DBKAZW+CMCSC10 /ItalicAngle 0 /StemV 72 /XHeight 431 /FontBBox [14 -250 1077 750] /Flags 4 /CharSet (/hyphen/E/O/P/Q/R/S/a/m/n/t/u) /FontFile 77 0 R >> endobj 156 0 obj [378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 742 0 0 0 0 0 0 0 0 0 844 742 844 800 611 0 0 0 0 0 0 0 0 0 0 0 0 0 613 0 0 0 0 0 0 0 0 0 0 0 747 613 0 0 0 0 0 591 613 ] endobj 155 0 obj << /Type /Encoding /Differences [ 0 /.notdef 45/hyphen 46/.notdef 69/E 70/.notdef 79/O/P/Q/R/S 84/.notdef 97/a 98/.notdef 109/m/n 111/.notdef 116/t/u 118/.notdef] >> endobj 68 0 obj << /Length1 1898 /Length2 12714 /Length3 532 /Length 13756 /Filter /FlateDecode >> stream xUXͶp =@!ݥqwnݝ%[Z{ds̪z)Hi Mli²JLF:x aGل t101ٸ9X)vf*Lbژ8Zm@gsP#5@ك hm P '1<##`hbfa Oacr5qtI@ Ec;[k)< \ZhOXX{;{gGno7Yc =* 0560;d$fnb`ld0Z;+nbk%@/z%y *1;@4_-@@x+`akl0q 9`jvv_#-,z;gcCF8kY@G[kӿ_AŀNp4=Ml@ A 蝬N"zOG?$glh׌OqkH Ua_ 1[rӡ_S8yF@:&.?Pr?Z?*#@5D(ԶUC%[?jU\E\dE\C ?@ՕUWCjT]k!Pu'ӟ?,覢s9A) (џԁ_ϦԒ_/5e ANV!H/YAF_ AV!/Y9d\B_rrY +d/oS!!;w/ZuDzK9A?8nQfS nbnb`gdR+Z0UE .d'W=ہ ܺxDځzV")[q\!.uAg MǾ=c)J[+hYf@i! Xk}OFXjhp-%3jCYKjb˗.`m.x4Wƍ$i ONҖHFmݶAUb wڊJqQR {ʹ)!t3YG *nGX붞Yѿ0<~ &jP;%SdH yƊptI+Uj!Tk13;죎nQa=5rnt=XvK!U?9`^GEnőL0|3h‰Oa_SόO %xTN;nZ՘[gbɠ W^>EnɳuVpMo (.|mė#N"dT}͠DE,ŲV>BvZx6CXL'rslv'i)bA"7G9%G%Od-M`- [Z{M;d?Jɛ#s 泆i@8bM9EBfڷS` GpsH ?WdP/  )71&##c!=Ewҿitq.~~BBHޟICK\j2ub7b @ci$=!Pk&ּ'u%Z$<^]}КGcJZ{bFFWD͸ެ"j|FnX݆QGx<{ȬWRILzQ $]bUgLN&҂bm!:&k ip9ZrlJ gPC$K^dQI+rΨk¼o^7돩q8]ЎmeMobmg(3F&. w<+f@$>M8tQ&p,r GTdkq|6ŷjZ 7}ـ ;t+ A޹opeX1Կ}p: 6̚ly4e9pGm Mj}^_2e!TjMT7G8,Ùò1BV H-V!B7}=IxL>?:~8i4%4%n`GWJy vP:Ν]M!zdeulBO3x¼lYj3rN_-bF2xk=7^+>L/ڻ׸[ NpRfGAYڂIğ4OY/\J=v 0Rx,)uY?(x'M02 .V_)”QVP~}YC FxnNMV/q f_*;6 =,QIAlhFL\0Q=Ë;/hֵAA\H)m9͸7e$ʬ |c== _R"Djᄺ}y?%8{եEݴr寀$ۇ!cHL3DN7X?LD󳸉;p3X%H!n⸹nA~2w+ EXo'U56Bfٚh{d!Rj`.d}Ҡ8SAG9@(Y]i% <_N^|tbC˩2/8?3~o(ux^ dmt0\Be*b'otl*dnWgE8g3t =RײjBT?}Yl$r/ j韔܂ ʹ?\76 ^fpؙ4N-Gk¡xBH l`iDiVyP HJͨ% y-GXS3^C-lFr)ZF WeZ&`WWV|RƠzKv.G ep'q>k P(ؖ6ǚ4'2̅⋰&gnP#3_o~GM (e,4qP%$b] vr#rc FZqAѩC><hXWw~$UNQcgw&?>BEHn8M_JlRH bs շP;XnȞ>>m/2,%jݘH.d8y.ldT 6 "D@# RK$G# bSI@ew"e-mf:/MNpcku )ڗn=O a4HkiQ!r u⟤C F$'7<4u+:p=Vɗl{{ƊTʳ:Υ 7ԧGZOP^c˖bk1hxO`oHK>ap&}󈉎Kj"PYw˹} )DcΓINN*EUL*$Icԩ[׶9`f;p1 ӄ9F5y?SY B{ 7[2'.;TPͳ"`-V2^ڸ ݇4fK|qr?|`0lʿd> _}HrӺ?Q(w HЮ4}ٿʙkB*42OCVćӤ32'Y`c|&&dޞRoBjfQxl`l_ c#/nܢ3lĠ:a`u+*Bq--:3!b84w[ٳ\ '=8')jބ4e,: cTB׻cBw۠-J\ylxN~GO5C%!Q)'1E)y8^ 0|nu/1 w08qX5+̿/(keIΟDs3jiuW جYRE]« LI:M LպEXͱu,p`t_$|膮Bi/G@eDcn5RZƮ yci-'.) [j!0^h!(i„lz \ǑUS ~NBEn[<7n0qh4ČR+S¡d*О24 >6 رpV3EdĀ'hD1Yc~dvs&̣v L.;N%D<@G6*\l)e"(dSWC`9b|2XN5 Hd5Q7>ϯ  3tR)G7n,G Rix@ ^+ Ń_}F/6ۢ/^XXE3TJ ޤT)8*>᳡cYqm*ݧ>vaJ*L)]_va#H]jJCi&3ek{?P\-UmPXfiXɓ:9~(֢nz,k\=9d0B4[YI0>Xv~!1oC4Y\1/`T!Y URL +K?jx2@"#18FO 5XPxTOجY@I>f9;Xu/pSq޻ZVV^q ~ Q%Kk$( a4nR xrpc2fj7[oW4: P( ^ku 粑?jWyTV+oF="xE.;ǛS({^?ZHQp]2J;% B7W|{4Pa}Q桜G3!+::^r=|)N\I r"QYrQ`Qn1.Y>dMGMZQ? K::BN.UY7 'N{/\"WmN:[- y}ߏc#k/3?Mu Vy.f pa\S4`&ϐ,c䴵/UlM S'}m.ZEȽ&cp<#yRmx'rg]aV:^_jHK-˙D92{V1'j| m~#׫LN;^wt>:E&H*xG*:x4q\AMG&yǹ%G2k*dTG}MfoizSSRY{v.+~xGpMfsJ^A<S|g֗dLX7g8 %=D^#۸w nby4Bߕc5RumN~,x#ϩ9 r$;$~Ǖ4P"r+/:EfͯW2[pgz&-pw0#[Dm-5mFP wL} ւ-w\mGH_Yvʪ?lKȟs9y ֖ȋ}n~:ĉ5qG$Fjh@>X j7D5wL۝OyS#8U" OY)@XJpAqfGƇ#d{ 償1^3~ɭ̝[;!(O=dZPб sZ .LJk0R[Xiz5Xp4cw1ഛ׀[}TF~ _bRVb=S u?( +0F# S9n9dg6 poG;Ubr]m\PFW 37s1Cs+|[ZZaK}/r179ąxD^- !S_Ƭ ~E~-u&yM*ugaq>Ho#.N?멦n>=l xn K0CtqW{/lgU:ܞw ԙ줮11bk0%L;OLDk?Ї)`'¾IX{Ё4Z řڲ\\4qFrj̒\5 x<~Aq:5qs構.Q 9Iw:|NX*R|ښ @2X堲0$ul ^ *նݍZ9Z;.j&u 2s aoio\%p)r|: [KvSu3X!MR:!p0#kHM?':𜚛tS?>V\Yàb S%摽,(cB˵}|^M[2D&DFs} -,IE²;rta/p[% ."Qt*XYpkaVc?pDBI1|LɰꛁBR|`@ĉ-9\9i:i +pbnVs"Dz/Bxg'ZSڢqϦ(~J1mj`ݮpGh&1ayC`iO9|J+[Mf+v9@ԹQc.CxzcV{P]`?w *pvJ'ixY_F,ЕaTJX_ #"xRd`_;_R@P4q"Pī [?. NPޢ YXQДD_Kw]Gj-]J-'3?zRX#5:'R\1otiOPc{Jc[0# iBd0|fQ-, +hJHr@*oaء*p#Bʠ݆;cɊ|Oλm3V ';\SJL 38crPh]6o;&דnӉz9g D޿儅k&XsȾ p82bօO3MhJm+ ),UPv,v[J։g9L}~nwÑze\\LA|XVkN,ٕ0*=ˬg}zg+2,B){](| I@UrrYy7GjY3OA#"ֽN]~`Nͨs;yT)~]xtO]`]p!5Q6 QNo{I= ,u<%p{3Pn[=Nĸp*:CʔX[E\~ ͷazѤYE^+B>C!c5?x Ζ"Y=靑(+J} e0˟M@' ׾| Ta!T`+!1d@Z+*굘5 D9>2_#\JaJ#qQJ[DV$ϹyE:kIF=6KCwDM퀓|Xje ]CnT%%AJj,pE!+TICC$5oFQ3 xXUW>t/So𡫁"ݣ%!UŌ\ߤXXX:cQΌsJmK*F8$A]!p6✍a{<\a'4;0 >EXĒ'^^ _^5;&9"iֲqmT>I訠Z n wf|(z1ʬ3_?AwJ4'L5,iҷA\k+4p_$ۍMs)TE 2fƻ2ByX@S7vjHy;6/"4wg x퓪9T0h? X/$Go;|漵 ; k WIi`+ξ}Va]ogvVM*-G9I}bώsfrϓŒŦo(ϑFTMm/!ʰBdrIm6/[gE=UږB Zژ>]WFl5fu~Y_ÚQU,OF&@Gg;̷vendstream endobj 69 0 obj << /Type /Font /Subtype /Type1 /Encoding 157 0 R /FirstChar 11 /LastChar 122 /Widths 158 0 R /BaseFont /TROLXL+CMR12 /FontDescriptor 67 0 R >> endobj 67 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /TROLXL+CMR12 /ItalicAngle 0 /StemV 65 /XHeight 431 /FontBBox [-34 -251 988 750] /Flags 4 /CharSet (/ff/fi/quotedblright/quoteright/parenleft/parenright/asterisk/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/nine/colon/semicolon/equal/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/quotedblleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z) /FontFile 68 0 R >> endobj 158 0 obj [571 544 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 490 0 0 0 0 272 381 381 490 0 272 326 272 490 490 490 490 490 490 490 490 490 0 490 272 272 0 762 0 0 0 734 693 707 748 666 639 768 734 353 503 761 612 897 734 762 666 0 721 544 707 734 734 1006 734 734 0 0 490 0 0 0 0 490 544 435 544 435 299 490 544 272 299 517 272 816 544 490 544 517 381 386 381 544 517 707 517 517 435 ] endobj 157 0 obj << /Type /Encoding /Differences [ 0 /.notdef 11/ff/fi 13/.notdef 34/quotedblright 35/.notdef 39/quoteright/parenleft/parenright/asterisk 43/.notdef 44/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven 56/.notdef 57/nine/colon/semicolon 60/.notdef 61/equal 62/.notdef 65/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P 81/.notdef 82/R/S/T/U/V/W/X/Y 90/.notdef 92/quotedblleft 93/.notdef 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z 123/.notdef] >> endobj 60 0 obj << /Length1 1302 /Length2 6471 /Length3 532 /Length 7269 /Filter /FlateDecode >> stream xWX&HNRB EPz/ҥ$@0$JEPzHA:"IJGN}yyNrߘc|q_GO)> ?P )g 8800B*10IPBu b""Dy;nkp:p c`0aw~,k3@ C D@ `0[8H/GH0K03kE!(̆H@ Ղa0ŕ\-_@98``h& C#3/sr(ɨb8Di;+`P8b#aaHZo:Z&Z<^Ñ}w73;hT_PM~?F݉%QK 07c~$ `Bu"bG왠XT y@,ۡadlP.alG@D(a08@B~Gİ~  WMXo C7a]C&lM߄  b% #?vX ւ?X]EX]?+j.>{Pn/' PX!.h4 N>f8e`QD*>ubrZCopy_՝xg*ϋ(VWX^\286zڧ0kj%A#-Q\·rS:63uWoԵKrX) aX)|_<0X$hۘ^AL\gf3:Q߉s']49=[c^蒡,K qsHby~oz)_޺j»>;aCLZK,2{)jlvTP*`\DE`GB9Mf'"C߻2B?.6,ίGK%Ź3z8SE,d:?"OQ"_X !G8Qz3 rYqd !-uWG^ d;s%,Smf~쵀|]Qq x8}^ʏc8RIõШWqI`V 9[Nth}3gA!L^2SkZ(pWo_D4:ss=y,.1j1N`.: qjrv[m!~<{y"Hc)r)adjp9kz$dWc- *dڙ T;GT8?쎠V6#wn H .7m˩Hnx}\JG3cO7=K+k !t̛V׮r n+" ҅b.)Y/] ? @D.Z)&"˃@7<+blME-z; n}ȫ0 C?Nc1MWfZgD='X5Fh)8ۗz(sxܱv'{GˁLc8tLe҄#ײ[Vؾ5-VI u^Udf}9!=oOzmZx'+81C9-[qw]x>DXWT0:1~a)DVzP(.Mr%N"Gy{-O[BpJ?0Kj65* @=Ǝ OmVY#6HTY*|{OIiyFΎPg%Ǚͮ"ۃҩ*KT/t Xxb'+H0oM﫷,/|b9m~a(?0h{<YJA>Nv냙O sI-9LXK0x<͟i2F~5-+s\2%d!L)b3%$R #)+* ˽XjlVH̖4>Λ)kɕ}" R+(#̥^ȢQoK]ީݮPEmHb.QqٮZmط\jdvol>1PqgoX7eZ߂Y[ 7 _4WH+i9J yO |ݿְH^ 4{X*%jT>RZ0{y[/ř%]M,DZwM !W։N)C]鯮7#w tgѧ ۶bJF& wi,d 6K?_ʭeRg2L,p%`< sYZ_A_enz}3>I>0>^fr[!g@ vz,Qʝaͷ&b)7*0o,KC5⹽Rp!2i8I ڵ<98u)h>:9|My jǒ-JA %UR)sB5A}ޗH#ɊMIAwQ3]+dwk(J% G$~W7gcl}ۿoϒ /ZrSDT穫"?cH֐3tncY _,k#ZqpؑFq[_Պ7D2jE&5LWZß8>Ul%e]-.ȁS6k˾5Ե ay1"v\rĴ7@Wx[9bԙʀT8’F{c8QӓOrE 7uӇ@w> ޾.ĿdΝ!B~eٴYT\"E6'k@ƸD _|]#~9|S{\_C%*kՁtwMƮԻ՛aJm ${w_R+0k|!;Pk%==~*aKz7*~h}zقK, \wr$T3K*_FoH:A=6ElZ!Ext巐c+1q f] ؘT`Owwz?hF"NWIDE@`=zH\wc/nIܤkCM~j\M"Μ| A5g'p, TUKyIcP#:)JFĝT1[ U7|a}o@yF%˄/7e$=h573k$* X.<#6=jG{/ joqG#)%G,T*Q~W]\`& v]dZZ{fdn&dm7ףelQr֝<[xMPj]-*^HiSʼ b2ak]1]"3¸M; +&zMҨ]cq/ۈi_JEѼJ)&b9z8JxQtF~(VcsŬ";GQ̼:ہwBp:cRȷ#ODp- V-繭2+tW7nr%lk#l#Җ6 !ZB}!7wƅ,2.{ @> /$t@:r{)`m]׊r6@ź@uδic M {k/`St/]Eu x:7y:eZ#ktHrbЫe0yJibd|D1]erhƃ(Orxg\'_OD6T ?unվ:U# %J"~e4<e6:w3'h k%C"MdjMTD%9( 7DU؏?tX`wOz=~l+ =R* }3Vx:bMCM3Wu?3n; 0)h 3#oЦ?u~iU?L<4ܻkhp꺐#?=pȵ? uƅ8%/[YY 5@fQL|RKK! S^1XZ^]cVy סܧl=rB)Y2צ cjq6vn{)#5"_9ul3Pif ڨjYfkyJZxW7*arj_M<"QhT 0.yM~\Tϩ$z-ڌij~PGHjS.*#;{_f g0;$~[tz91Ejƌsmj.<uK5K ~rHazu4IO"?^WkLZRt<.z=L>u]7v'|B$zތ9tӴ=֗Ȗ,?X?KDAL6I=r (Z`4gCVմUKmm_qEːR91wJ+m@Sy?FJ*L]~່rSwx`OSНʖ-ͦ˖#ZR}=6#6l/Qy Sb4sx=;qPKDVe|~LQB}U‹u䂌o,_UVyz@bRU*śt<'SeEdS(4X1`}vۚl>HOSM1Lq7CAB#l鐩QCK>s1 u.~1بРOSq0W8VyIĤOqO٫ x}D;~/tmQt:-RxWel#7SEf$䲏3jÜb|"ǩ$C?hZWm˒*][60+Nwi XL5r ,;[, "D-0ZR2AºLI"f^fgȲ:"ST8~zHiMӽ ]ޒqe^ ɓD`Fsձb y% lA%6d{G| 6@}ř=ld8>ꟸ =D3grϫZs } G br|5Y$a_5xO)O땣jsW3L6J\Ț?ЎI|eo&Uk? /2^hmN~Nȳr+gcq@)R3އ9^w=`EPwFC|> endobj 59 0 obj << /Ascent 694 /CapHeight 686 /Descent -194 /FontName /PCRNZN+CMBX12 /ItalicAngle 0 /StemV 109 /XHeight 444 /FontBBox [-53 -251 1139 750] /Flags 4 /CharSet (/period/one/two/three/four/five/six/seven/colon/B/C/I/N/P/R/T/U/a/b/c/d/e/f/g/h/i/l/m/n/o/p/r/s/t/u/v/x/z) /FontFile 60 0 R >> endobj 160 0 obj [313 0 0 563 563 563 563 563 563 563 0 0 313 0 0 0 0 0 0 0 800 813 0 0 0 0 0 419 0 0 0 0 880 0 769 0 839 0 782 865 0 0 0 0 0 0 0 0 0 0 0 547 625 500 625 513 344 563 625 313 0 0 313 938 625 563 625 0 459 444 438 625 594 0 594 0 500 ] endobj 159 0 obj << /Type /Encoding /Differences [ 0 /.notdef 46/period 47/.notdef 49/one/two/three/four/five/six/seven 56/.notdef 58/colon 59/.notdef 66/B/C 68/.notdef 73/I 74/.notdef 78/N 79/.notdef 80/P 81/.notdef 82/R 83/.notdef 84/T/U 86/.notdef 97/a/b/c/d/e/f/g/h/i 106/.notdef 108/l/m/n/o/p 113/.notdef 114/r/s/t/u/v 119/.notdef 120/x 121/.notdef 122/z 123/.notdef] >> endobj 57 0 obj << /Length1 1695 /Length2 10078 /Length3 532 /Length 11056 /Filter /FlateDecode >> stream xUXҮ!6]i4%{pwߜduѺV'}רQ3j :9$wafga+jhsYPihĝ@@0^D]-lv.n.T8 lig' jr@+1\ ?`5;`ut@O t'lZy:X_BЊ,Kl tzX@NTbsX]_ƹ\К #< g; =q@Zs@/yK}!j^JJt!^ A_*BV)TOzJ/SAT^BP6Nㅠ|! AtCLWqrr68lV_:ClP?!Դ_umB̀B /ڰ{Av jBm8P!Ԇ_B7/r B+>!ԕ_us`{?Abbofv3'pAO(+ d[o2C] [4~̟(Ax#fT9݆cuXZ}i:#֏cRgqLҽu.=w(a4\s(O|K-:?UGZxեVוë#nRCI:[8Wت _0& H+}>r?pcZ&paZ2hc粟WQEԫ{1~Rd٦!͸4}ՑVwM&6}qObf⛒븻q3D6~}0᎞^Va(Zc0Mi7Ut&p9ss Wү'^[|Ec% iW;zHGZ4 ߇!}jߓ}Eu&!ǽzkVVyX/њ uJ|: "{Qc ,2lK? 9Lk-H WbO=ײ Mr,enjp4iHν #e֚!"?V%T?$C4Ga;80A oLӸ"7/[}^t >yquk/ 6;RنƆd=xJTEck*]|K<\X_Fr\+S)W\ۥV'x{Gi6j fG u$*>Z,>MvY5d^0lhw[% QƏTmULGV{Y|)<^ӕt]yG~?jACQU߅1J~0( }%eɿWquNd˚-xd)ZCC5k|q~mz9rO6~#L<~k ۝ٿo JkTԭ)RK:µ4Š+STn@f_cQm =d!Xp 'Igfc Eٜq":Br\'MBnXV{(msd:PG`$^[c q+`\,g[FLyF=Uǖa_,Őɧ#{~,%KU.1IFEpYW,1-3 r4`3A#ȅI m]W '>`ױ8bӯs;w!7dg'I=^^ׯH4޸zd?ͯS \e##fİN II'($ ⍂{g 妍Wdf 6ѬuKc0 z4 Ef!j%oִJf~ÔAxts t֨'b*:NleJlc[6SpƦ2Nmض˧λn yJ_}ҲKҪ퉮3T@E7bgqX9YIX~'$1Ŝ:*eW9SSEeәNQyf/lֵ޹YR0![ESU3U H/LȦI`7O=7HysmF)ǿpҍ!7G1ٿ8|Cu{kc3ĺΉ-d*$ΎliD̔3f4MDHHYYӄmFT.!r&?޻eMg|q@ nAp86oNxG{/ɞ0[mQe7{Z#{7o[8G56i.dSndBr-h*8gLR@Je15{2_bS\ YDFy:湗<[{@ }3Q]U:({ՖĽ~A>}Ȗhȕ5S#}G+C³8bܞ4ғ.Ct>Oد ݙ,\PJgtbS9NUNHtVd`'(RguxJ؆ہ0cfEZ3yYud~ٍD %Z%P)rlu)A}x.L6^[}ݞMi}#=] ۢ86G -y4vjR!<;9zXh0Cr@8{z:1x6Vp.{ vMKOҤ| oF9?]_`d%sF%ii>^iӎ*cѣ|Z`1rM`Hčڄst8$eMO"$A\\1I/"jak'W.ЛO` 0KTWPk<{JaC=(C)YE: {l]![o^y#T[f"oXUTPGG[9V|؛=QfQP97CL)aʡؤr3xٿcqFp%t Bkݖԓ8Hkz{{>![dgZ]K{?pimGxvQbP]-j 9GEDݸ[;!O aOITWV- n2DƹUT6,ʛ .M-|1, P0R7 I"&Ry$7}k1YqxADs53u{RjÛmrN ޳@lm3jB$NJa2F>.[$'h?Δ{Gn|D 0z=2E:HBO3U+ਟ7Q)ef_ֽLBxWw/J-T쎫|OT`r2x::M:&ȴeFkX'm-Ӛ=Vc"U`33OƎ_XPCGH1+p.ͳ) lh32!FJlaWNWC" [elv֙f[w4|uEF5Q"3Ƥ{|Z̞)*bKp]`;uSE ͣ9G䦌7h2վVqk12˦E Q62p"XExHTFݳ*k)  '\L'+,ܖNenP0HCo p$ѦUڀq7Xa[ :&~.Wo[vG;;r]Ɵ_/Rw]&*vߠRh2z֣ޣ8\8Jk8}K]TfjIވO{tuZ>1_3:5BԆquXhU[5nYR|;YX|tI|R|.Xgc_2}ad"t$Btp![(;5|`h_sͩ; oJh;ⴐ)3J&},F#q2*w :JIm_vx|kN̜^ޣZ$MGCQ7[}p2%IR#k9hĵD^b.pށ;hnȨJ=kߏYQB@mUlEsK_#:Q62zgya'ߵ6N 0fw~.iݙL)G! 梃ݠ|]'vƳ^4U΍J+V~5׫)ohk+S.:#abs|lݽ49&jߞ`: ?9(l8poEJRS0Y(>|`iIt*#X툕A}ϸ;v͋}ʥ_KgHʹhozקXڧ7fBtaZo%i{JWPL3DXJ*wet.{ϛuEQ-z{wIR,/EM@Ւ"h65yyLxs&;Pj~b4c}h)imf VcٖDִ/IØN#eaM ªrs7]̰flq=j, v#)Ijs$6&nU`+]MLX([ꞇN23"baz҇|4RNx`TU$E.D(zc@jάJ2Z{&*5Sxcjp\:7ٹ>D!j 3[*RՐq_I:=ZSvژSӯ}X/b+(BYQ}"q,^ `:ՍN$gEnT(wVoYF:ޝiJ(K_WׯdWL4~Sqw}; tU 1pQ{&WD{-<#e۱E}r/d['z+>)so}GC4jY3lVsˀК[ER3g~cfW=q őwv^ۃ\U-%ȴ٪2RtAVdeB4e>ld9xBxGǡb1MyJt[2~F Eq@3nqlM(8Hg>ŘxG@M K*B!RZxqm qK&XYU&{|eDvQYvA&(`FHՖD=0 _z Jsi_ONbnkl.9]$s̢KёqM0N4zdoI}²Rp C!tt+a:5bBUJhpw٪9 5%kako'D!e,9IP)q/S#$Lk}X- k7uwX.ZͰ8i}&_A.&>ިU(e:42}rWSW͎Q,Ν> `\oX\$a'R_x8Jf@/J2Hbqz:5/F8SImw[L'߳P{\ _ڋ-c;zOo&%WHu5fZQP2/DڇjA|䲽O2iZrjfTBvi,|4nuh ٶgcXltAN/h^ (a4jHb.ux7D㎩9,9aIl}Bj hH|ԫd9*B"i3Sxn;lTYWT,L*_>/:ZiWg77Gc4&}Y/7A| t䈻 3&:tb7#=_{V׷Xd7 ;͒-&gN,VeqńaCObE0~F;Vh*Q8ynkw2Y㮒L7 i:&5PX^ #}&pē(0pPto P_4]ؗ\DӜd[6O  gu"miodN@2Rn?+{@*&/G\uաίfDi6MŖ? f6]:GWj6l/ ꒲opMyxO^[`3EN8%m}}+$ޛ:1d29{J""qNg_;B>p254LɗwR#S>f?*mf;`Z<%ReϔE:.?Lڻ o8TA :t{o%fٰ#4mCUPbNJPzvCЫ^=nq= OXmvA \x SmNO=x8qU'"`+ FU*2l+YbbE Re9I1J"2> N%+ĸ]צ3)#4cn&h>gW ]5G:K`!ga`jm΀Aҽ6jj߄ )ZffUd8r6ȧufxqԼs:u9hx~jWGǯjU VCgTJs, my9Rֳy<uiHAYCRG( +@;% wYwPT}Cp ,pmTE7[&v#?9L4ܴ\>HO?/|I/C0is e'pO7Z6HDZ;Lj2Cأ2O(6[ey&S OcTׁCKϵn7~akD}xWolw70NSkN/خҿj+Yetִ$D/o߻hS z9s Xo~):XOa\/͓Lb qr6<`?9 bA~˧^$OkB TA&#3~,D)CT+eiJ㽸ud—!v .ی>--kp뫚ᕦp9!GM=!]^k^ גH,hj5-D3[btAɆtendstream endobj 58 0 obj << /Type /Font /Subtype /Type1 /Encoding 161 0 R /FirstChar 36 /LastChar 126 /Widths 162 0 R /BaseFont /BAIGOZ+CMTT12 /FontDescriptor 56 0 R >> endobj 56 0 obj << /Ascent 611 /CapHeight 611 /Descent -222 /FontName /BAIGOZ+CMTT12 /ItalicAngle 0 /StemV 65 /XHeight 431 /FontBBox [-1 -234 524 695] /Flags 4 /CharSet (/dollar/quoteright/asterisk/hyphen/period/slash/zero/one/two/four/six/colon/less/equal/greater/A/B/C/D/E/F/G/H/I/L/M/N/O/P/R/S/T/U/W/X/underscore/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/asciitilde) /FontFile 57 0 R >> endobj 162 0 obj [515 0 0 515 0 0 515 0 0 515 515 515 515 515 515 0 515 0 515 0 0 0 515 0 515 515 515 0 0 515 515 515 515 515 515 515 515 515 0 0 515 515 515 515 515 0 515 515 515 515 0 515 515 0 0 0 0 0 0 515 0 515 515 515 515 515 515 515 515 515 0 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 515 0 0 0 515 ] endobj 161 0 obj << /Type /Encoding /Differences [ 0 /.notdef 36/dollar 37/.notdef 39/quoteright 40/.notdef 42/asterisk 43/.notdef 45/hyphen/period/slash/zero/one/two 51/.notdef 52/four 53/.notdef 54/six 55/.notdef 58/colon 59/.notdef 60/less/equal/greater 63/.notdef 65/A/B/C/D/E/F/G/H/I 74/.notdef 76/L/M/N/O/P 81/.notdef 82/R/S/T/U 86/.notdef 87/W/X 89/.notdef 95/underscore 96/.notdef 97/a/b/c/d/e/f/g/h/i 106/.notdef 107/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z 123/.notdef 126/asciitilde 127/.notdef] >> endobj 54 0 obj << /Length1 1036 /Length2 3707 /Length3 532 /Length 4395 /Filter /FlateDecode >> stream xTy>2: pLh'%BƎD;`p ٟpxp;&Md" (=H'&;0@٤#]0X%]\=h`G ?SfFa<\X:0o4CsXw/Ciܷ_d-/Y :_1$G_oL XAɉ/?Qy H"O)PC7ٰ O$xq”Y7CxԿ)%@P$ ~0@uAJ?*GFɹߠ]3(r3;W^ڗo]YvΌ)N[Qq\-YܖV_HI-|tB&!9aX`Ѭ/6"v_XT5< i0M[ P m=g:/6J\Ͷ0٭2g?#O||ę'j30v[ ,';#YȜX;9tmp+qF*^'$UX=Z.Tr$: J}t:R ?ء6WKac+'z'kĆ ? 'ga&2/9^lbXǯA(}9U|³i;(U[T{钨 D/A ll1i;6}'yʷ'I2/LtjIQȁ+`{ <]rI!sh Mdbw|Ae ;7֬)[7iLF2߬qaO`tEeHՠd@G>jC9sZY̛Q&nPiM:\7NRH3U-۽h$Dm T5},ȵt |) ޱ^ْ /_UP-^JP9Č-0H8?!I:P! &l/:z݋FDŽa;͸q׍H8-Kderi{Ӹ$.j}Xm@JůXK`7]5ijuO2WZJY4If5.iqxtgOzבxD'p\6oĞ&})v, Q(PjR$N}8 B1.F(vhh6Rjע+?EkSlo/DlĶ⅓"lY@릇h틱M  *DzPC ֘Pd,nFG.GާA|7 祾rO J?3T=evIfa6#놹p@ z/IOnfgDq^nQ}9?_V#@eΝWBOy1υ49*`.*ҽ˦QM~Y,S-eSoK'o9.WbK9Ǿby}wݑ{ΰ6z'k68%tl̉}*$N! Dk&&bpCBS[&[,fI"6DrË 42ΗRӶ^~ >t(t&R|X n;mt,&!A\nljTbTZvG5!Q3xJɋ`;|#bgvo9Y 8po-ʜVyeXަ~@7o?w `ś ⠅ڏC>jw辎JHP}NR_+go{fx65i{*ʣ{2J ʼnFwfޅMHY|Z"iWkO|mǸJm{>D9:IYV4˸)7$ԦrgKfGP—fM=*h:zt'^DkuN; I6ÇĻ"-ж0i:a|X61>7t@?W 5x1`*Kz~[ER~=NU|tđ\ sg/EYQ7vE%U23(]Fzg?$g4p&U=8wID`ςaѨu./A,D(B8ܹOT!Br'h$wAAendstream endobj 55 0 obj << /Type /Font /Subtype /Type1 /Encoding 163 0 R /FirstChar 39 /LastChar 118 /Widths 164 0 R /BaseFont /VEJQVN+CMR17 /FontDescriptor 53 0 R >> endobj 53 0 obj << /Ascent 694 /CapHeight 683 /Descent -195 /FontName /VEJQVN+CMR17 /ItalicAngle 0 /StemV 53 /XHeight 430 /FontBBox [-33 -250 945 749] /Flags 4 /CharSet (/quoteright/parenleft/parenright/period/zero/two/five/G/U/d/e/f/i/n/o/r/s/u/v) /FontFile 54 0 R >> endobj 164 0 obj [250 354 354 0 0 0 0 250 0 459 0 459 0 0 459 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 726 0 0 0 0 0 0 0 0 0 0 0 0 0 693 0 0 0 0 0 0 0 0 0 0 0 0 0 0 511 406 276 0 0 250 0 0 0 0 511 459 0 0 354 359 0 511 485 ] endobj 163 0 obj << /Type /Encoding /Differences [ 0 /.notdef 39/quoteright/parenleft/parenright 42/.notdef 46/period 47/.notdef 48/zero 49/.notdef 50/two 51/.notdef 53/five 54/.notdef 71/G 72/.notdef 85/U 86/.notdef 100/d/e/f 103/.notdef 105/i 106/.notdef 110/n/o 112/.notdef 114/r/s 116/.notdef 117/u/v 119/.notdef] >> endobj 79 0 obj << /Type /Pages /Count 6 /Parent 165 0 R /Kids [46 0 R 96 0 R 104 0 R 109 0 R 118 0 R 130 0 R] >> endobj 146 0 obj << /Type /Pages /Count 1 /Parent 165 0 R /Kids [143 0 R] >> endobj 165 0 obj << /Type /Pages /Count 7 /Kids [79 0 R 146 0 R] >> endobj 166 0 obj << /Type /Outlines /First 7 0 R /Last 43 0 R /Count 7 >> endobj 43 0 obj << /Title 44 0 R /A 41 0 R /Parent 166 0 R /Prev 39 0 R >> endobj 39 0 obj << /Title 40 0 R /A 37 0 R /Parent 166 0 R /Prev 35 0 R /Next 43 0 R >> endobj 35 0 obj << /Title 36 0 R /A 33 0 R /Parent 166 0 R /Prev 23 0 R /Next 39 0 R >> endobj 31 0 obj << /Title 32 0 R /A 29 0 R /Parent 23 0 R /Prev 27 0 R >> endobj 27 0 obj << /Title 28 0 R /A 25 0 R /Parent 23 0 R /Next 31 0 R >> endobj 23 0 obj << /Title 24 0 R /A 21 0 R /Parent 166 0 R /Prev 15 0 R /Next 35 0 R /First 27 0 R /Last 31 0 R /Count -2 >> endobj 19 0 obj << /Title 20 0 R /A 17 0 R /Parent 15 0 R >> endobj 15 0 obj << /Title 16 0 R /A 13 0 R /Parent 166 0 R /Prev 11 0 R /Next 23 0 R /First 19 0 R /Last 19 0 R /Count -1 >> endobj 11 0 obj << /Title 12 0 R /A 9 0 R /Parent 166 0 R /Prev 7 0 R /Next 15 0 R >> endobj 7 0 obj << /Title 8 0 R /A 5 0 R /Parent 166 0 R /Next 11 0 R >> endobj 167 0 obj << /Names [(Doc-Start) 52 0 R (Item.1) 102 0 R (Item.10) 137 0 R (Item.11) 138 0 R (Item.12) 139 0 R (Item.13) 140 0 R (Item.14) 141 0 R (Item.2) 112 0 R (Item.3) 113 0 R (Item.4) 114 0 R (Item.5) 115 0 R (Item.6) 116 0 R (Item.7) 121 0 R (Item.8) 122 0 R (Item.9) 133 0 R (page.1) 51 0 R (page.2) 98 0 R (page.3) 106 0 R (page.4) 111 0 R (page.5) 120 0 R (page.6) 132 0 R (page.7) 145 0 R (section*.1) 62 0 R (section.1) 6 0 R (section.2) 10 0 R (section.3) 14 0 R (section.4) 22 0 R (section.5) 34 0 R (section.6) 38 0 R (section.7) 42 0 R (subsection.3.1) 18 0 R (subsection.4.1) 26 0 R (subsection.4.2) 30 0 R] /Limits [(Doc-Start) (subsection.4.2)] >> endobj 168 0 obj << /Kids [167 0 R] >> endobj 169 0 obj << /Dests 168 0 R >> endobj 170 0 obj << /Type /Catalog /Pages 165 0 R /Outlines 166 0 R /Names 169 0 R /PageMode /UseOutlines /OpenAction 45 0 R >> endobj 171 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfeTeX-1.21a)/Keywords() /CreationDate (D:20121121135449+01'00') /PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.4) >> endobj xref 0 172 0000000001 65535 f 0000000002 00000 f 0000000003 00000 f 0000000004 00000 f 0000000000 00000 f 0000000009 00000 n 0000061329 00000 n 0000140882 00000 n 0000000054 00000 n 0000000084 00000 n 0000064984 00000 n 0000140796 00000 n 0000000129 00000 n 0000000171 00000 n 0000065040 00000 n 0000140671 00000 n 0000000217 00000 n 0000000247 00000 n 0000065096 00000 n 0000140610 00000 n 0000000298 00000 n 0000000333 00000 n 0000069411 00000 n 0000140485 00000 n 0000000379 00000 n 0000000409 00000 n 0000072433 00000 n 0000140411 00000 n 0000000460 00000 n 0000000507 00000 n 0000072779 00000 n 0000140337 00000 n 0000000558 00000 n 0000000599 00000 n 0000076149 00000 n 0000140249 00000 n 0000000645 00000 n 0000000675 00000 n 0000082319 00000 n 0000140161 00000 n 0000000721 00000 n 0000000752 00000 n 0000082376 00000 n 0000140086 00000 n 0000000798 00000 n 0000000832 00000 n 0000002807 00000 n 0000003007 00000 n 0000048901 00000 n 0000061384 00000 n 0000000882 00000 n 0000061162 00000 n 0000061217 00000 n 0000138945 00000 n 0000134271 00000 n 0000138786 00000 n 0000133046 00000 n 0000121709 00000 n 0000132886 00000 n 0000120783 00000 n 0000113234 00000 n 0000120623 00000 n 0000061273 00000 n 0000059611 00000 n 0000059764 00000 n 0000059918 00000 n 0000060072 00000 n 0000111910 00000 n 0000097874 00000 n 0000111751 00000 n 0000060230 00000 n 0000060384 00000 n 0000060543 00000 n 0000060702 00000 n 0000060854 00000 n 0000061008 00000 n 0000097281 00000 n 0000093490 00000 n 0000097120 00000 n 0000139753 00000 n 0000003484 00000 n 0000003628 00000 n 0000047997 00000 n 0000048016 00000 n 0000048038 00000 n 0000048073 00000 n 0000048881 00000 n 0000049349 00000 n 0000049551 00000 n 0000049660 00000 n 0000058681 00000 n 0000058700 00000 n 0000058748 00000 n 0000058769 00000 n 0000059591 00000 n 0000065209 00000 n 0000064811 00000 n 0000061541 00000 n 0000064929 00000 n 0000093171 00000 n 0000091782 00000 n 0000093011 00000 n 0000065152 00000 n 0000069468 00000 n 0000069052 00000 n 0000065328 00000 n 0000069354 00000 n 0000069193 00000 n 0000072836 00000 n 0000072255 00000 n 0000069575 00000 n 0000072376 00000 n 0000072490 00000 n 0000072548 00000 n 0000072605 00000 n 0000072663 00000 n 0000072721 00000 n 0000076322 00000 n 0000075971 00000 n 0000072931 00000 n 0000076092 00000 n 0000076206 00000 n 0000076264 00000 n 0000091311 00000 n 0000088189 00000 n 0000091150 00000 n 0000087881 00000 n 0000085939 00000 n 0000087722 00000 n 0000080325 00000 n 0000079800 00000 n 0000076443 00000 n 0000079921 00000 n 0000079978 00000 n 0000085479 00000 n 0000082528 00000 n 0000085317 00000 n 0000080036 00000 n 0000080094 00000 n 0000080151 00000 n 0000080209 00000 n 0000080267 00000 n 0000082433 00000 n 0000082140 00000 n 0000080433 00000 n 0000082262 00000 n 0000139867 00000 n 0000085766 00000 n 0000085694 00000 n 0000088104 00000 n 0000088080 00000 n 0000091641 00000 n 0000091531 00000 n 0000093403 00000 n 0000093379 00000 n 0000097691 00000 n 0000097501 00000 n 0000112761 00000 n 0000112368 00000 n 0000121333 00000 n 0000121083 00000 n 0000133770 00000 n 0000133444 00000 n 0000139432 00000 n 0000139214 00000 n 0000139944 00000 n 0000140012 00000 n 0000140954 00000 n 0000141628 00000 n 0000141667 00000 n 0000141705 00000 n 0000141834 00000 n trailer << /Size 172 /Root 170 0 R /Info 171 0 R /ID [<9EF5C17A21093D93AB806E74EFADC7A7> <9EF5C17A21093D93AB806E74EFADC7A7>] >> startxref 142097 %%EOF NEB/Doc/INPUT_NEB.def0000644000700200004540000001435012053145633013236 0ustar marsamoscminput_description -distribution {Quantum Espresso} -package NEB -program neb.x { toc {} intro { Input data format: { } = optional, [ ] = it depends, | = or All quantities whose dimensions are not explicitly specified are in RYDBERG ATOMIC UNITS BEWARE: TABS, DOS CHARACTERS ARE POTENTIAL SOURCES OF TROUBLE General input file structure: =============================================================================== neb.x DOES NOT READ FROM STANDARD INPUT There are two ways for running a calculation with neb.x: 1) specifying a file to parse with the ./neb.x -inp or neb.x -input command line option. 2) or specifying the number of copies of PWscf input ./neb.x -input\_images. For case 1) a file containing KEYWORDS has to be written (see below). These KEYWORDS tells the parser which part of the file regards neb specifics and which part regards the energy/force engine (at the moment only PW). After the parsing different files are generated: neb.dat, with neb specific variables and a set of pw_*.in PWscf input files like one for each input position. All options for a single SCF calculation apply. The general structure of the file to be parsed is: BEGIN BEGIN_PATH_INPUT ... neb specific namelists and cards END_PATH_INPUT BEGIN_ENGINE_INPUT ...pw specific namelists and cards BEGIN_POSITIONS FIRST_IMAGE ...pw ATOMIC_POSITIONS card INTERMEDIATE_IMAGE ...pw ATOMIC_POSITIONS card LAST_IMAGE ...pw ATOMIC_POSITIONS card END_POSITIONS ... other pw specific cards END_ENGINE_INPUT END For case 2) neb.dat and all pw_1.in, pw_2.in ... should be already present. Structure of the input data (file neb.dat) : =============================================================================== &PATH ... / [ CLIMBING_IMAGES list of images, separated by a comma ] } namelist PATH { var string_method -type CHARACTER { default { 'neb' } info { a string describing the task to be performed: 'neb', 'smd' } } var restart_mode -type CHARACTER { default { 'from_scratch' } info { 'from_scratch' : from scratch 'restart' : from previous interrupted run } } var nstep_path -type INTEGER { info { number of ionic + electronic steps } default { 1 } } var num_of_images -type INTEGER { default { 0 } info { Number of points used to discretize the path (it must be larger than 3). } } var opt_scheme -type CHARACTER { default { 'quick-min' } info { Specify the type of optimization scheme: 'sd' : steepest descent 'broyden' : quasi-Newton Broyden's second method (suggested) 'broyden2' : another variant of the quasi-Newton Broyden's second method to be tested and compared with the previous one. 'quick-min' : an optimisation algorithm based on the projected velocity Verlet scheme 'langevin' : finite temperature langevin dynamics of the string (smd only). It is used to compute the average path and the free-energy profile. } } var CI_scheme -type CHARACTER { default { 'no-CI' } info { Specify the type of Climbing Image scheme: 'no-CI' : climbing image is not used 'auto' : original CI scheme. The image highest in energy does not feel the effect of springs and is allowed to climb along the path 'manual' : images that have to climb are manually selected. See also CLIMBING_IMAGES card } } var first_last_opt -type LOGICAL { default { .FALSE. } info { Also the first and the last configurations are optimized "on the fly" (these images do not feel the effect of the springs). } } var temp_req -type REAL { default { 0.D0 Kelvin } info { Temperature used for the langevin dynamics of the string. } } var ds -type REAL { default { 1.D0 } info { Optimisation step length ( Hartree atomic units ). If opt_scheme="broyden", ds is used as a guess for the diagonal part of the Jacobian matrix. } } vargroup -type REAL { var k_max var k_min default { 0.1D0 Hartree atomic units } info { Set them to use a Variable Elastic Constants scheme elastic constants are in the range [ k_min, k_max ] this is useful to rise the resolution around the saddle point. } } var path_thr -type REAL { default { 0.05D0 eV / Angstrom } info { The simulation stops when the error ( the norm of the force orthogonal to the path in eV/A ) is less than path_thr. } } var use_masses -type LOGICAL { default { .FALSE. } info { If. TRUE. the optimisation of the path is performed using mass-weighted coordinates. Useful together with quick-min optimization scheme, if some bonds are much stiffer than others. By assigning a larger (fictitious) mass to atoms with stiff bonds, one may use a longer time step "ds" } } var use_freezing -type LOGICAL { default { .FALSE. } info { If. TRUE. the images are optimised according to their error: only those images with an error larger than half of the largest are optimised. The other images are kept frozen. } } } # # CLIMBING_IMAGES # card CLIMBING_IMAGES { label { Optional card, needed only if CI_scheme = 'manual', ignored otherwise ! } syntax { list climbing_images_list -type INTEGER { format { index1, index2, ... indexN } info { index1, index2, ..., indexN are indices of the images to which the Climbing-Image procedure apply. If more than one image is specified they must be separated by a comma. } } } } } NEB/tools/0000755000700200004540000000000012053440276011624 5ustar marsamoscmNEB/tools/path_interpolation.sh0000755000700200004540000001545312053145633016075 0ustar marsamoscm#!/bin/bash --noprofile # ################################################################################ ## Copyright (C) 2004 Carlo Sbraccia. ## ## This file is distributed under the terms ## ## of the GNU General Public License. ## ## See http://www.gnu.org/copyleft/gpl.txt . ## ## ## ## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ## ## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ## ## MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ## ## NONINFRINGEMENT. IN NO EVENT SHALL CARLO SBRACCIA BE LIABLE FOR ANY ## ## CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, ## ## TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ## ## SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## ################################################################################ # make sure there is no locale setting creating unneeded differences. LC_ALL=C export LC_ALL # ################################################################################ ## Set these variables according to your needs ## ################################################################################ # # ... root directory of the PWscf package # ROOT_DIR="" # # ... old and new restart file name # ... ( usually old_prefix.neb and new_prefix.neb ) # old_restart_file="" new_restart_file="" # # ... number of images of the old and of the new path # old_num_of_images= new_num_of_images= # # ... interpolation is performed between the first_image and the last_image # ... of the old path # first_image= last_image= # # ... the number of atoms # nat= # # ... lattice parameter ( celldm(1) in the pw input file ) # alat=1.D0 # # ... interpolation is possible only in the ibrav=0 case # ... this card is the same used in the pw input file # cat > CELL_PARAMETERS << EOF CELL_PARAMETERS 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 EOF # # ... optional informations: # ... needed to gereate visualization files ( xyz and axsf formats ) # # ... put a symbol for each atomic specie that compose the system # list_of_atoms="" # # ... number of atoms of each specie # ... (the sum of all N[i] must be equal to nat) # N[1]= # ################################################################################ ################################################################################ ###### DO NOT MODIFY THE SCRIPT UNDER THESE LINES ###### ################################################################################ ################################################################################ # GAWK=$( which gawk ) # ################################################################################ ## lattice vectors for gawk scripts ## ################################################################################ a11=$( cat CELL_PARAMETERS | $GAWK '{ if (NR==2) {printf "%12.8f", $1} }' ) a12=$( cat CELL_PARAMETERS | $GAWK '{ if (NR==2) {printf "%12.8f", $2} }' ) a13=$( cat CELL_PARAMETERS | $GAWK '{ if (NR==2) {printf "%12.8f", $3} }' ) a21=$( cat CELL_PARAMETERS | $GAWK '{ if (NR==3) {printf "%12.8f", $1} }' ) a22=$( cat CELL_PARAMETERS | $GAWK '{ if (NR==3) {printf "%12.8f", $2} }' ) a23=$( cat CELL_PARAMETERS | $GAWK '{ if (NR==3) {printf "%12.8f", $3} }' ) a31=$( cat CELL_PARAMETERS | $GAWK '{ if (NR==4) {printf "%12.8f", $1} }' ) a32=$( cat CELL_PARAMETERS | $GAWK '{ if (NR==4) {printf "%12.8f", $2} }' ) a33=$( cat CELL_PARAMETERS | $GAWK '{ if (NR==4) {printf "%12.8f", $3} }' ) # ################################################################################ ## the input file for the iterpolator code is generated ## ################################################################################ # if [ ! -f ${old_restart_file} ]; then echo "Error: file ${old_restart_file} not fount"; exit fi # cat > input << EOF ${nat} ${old_num_of_images} ${new_num_of_images} ${first_image} ${last_image} ${old_restart_file} ${new_restart_file} ${alat} EOF # cat CELL_PARAMETERS | $GAWK '{ if ( NR == 1 ) { print }; if ( NR > 1 ) \ { printf " %12.8f %12.8f %12.8f\n", $1, $2, $3} }' >> input # # $ROOT_DIR/bin/path_int.x < input # if [[ "${list_of_atoms}" != "" ]]; then # ############################################################################## ## dynamical generation of the "from_restart_to_axfs.gawk" script ## ############################################################################## file="from_restart_to_axsf.gawk" cat > ${file} << EOF BEGIN{ a_0 = 0.529177 ; count = -10000; printf " ANIMSTEPS %3i \n", ${new_num_of_images} ; printf " CRYSTAL \n" ; printf " PRIMVEC \n" ; printf " %16.10f %16.10f %16.10f \n", ${a11}*a_0, ${a12}*a_0, ${a13}*a_0; printf " %16.10f %16.10f %16.10f \n", ${a21}*a_0, ${a22}*a_0, ${a23}*a_0; printf " %16.10f %16.10f %16.10f \n", ${a31}*a_0, ${a32}*a_0, ${a33}*a_0; } { if ( \$0 == "RESTART INFORMATIONS" ) { next; next; next } if ( \$0 == "ENERGY, POSITIONS AND GRADIENTS" ) { next } if ( \$0 == "VELOCITIES" ) { exit } if ( \$1 == "Image:" ) { count = -1 ; printf " PRIMCOORD %3i \n", \$2 ; printf "%4i 1 \n", ${nat} ; } else { count++; EOF # ref1=0 ref2=0 # index=0 # for atom in ${list_of_atoms}; do # index=$(( ${index} + 1 )) # ref1=$(( ${ref2} + 1 )) ref2=$(( ${ref2} + ${N[${index}]} )) # echo " if ( count >= ${ref1} && count <= ${ref2} ) { " >> ${file} echo " printf \"${atom} \"; " >> ${file} echo " printf \" %16.10f \", \$1 * a_0 ; " >> ${file} echo " printf \" %16.10f \", \$2 * a_0 ; " >> ${file} echo " printf \" %16.10f \", \$3 * a_0 ; " >> ${file} echo " printf \" %16.10f \", \$4 / a_0 ; " >> ${file} echo " printf \" %16.10f \", \$5 / a_0 ; " >> ${file} echo " printf \" %16.10f \", \$6 / a_0 ; " >> ${file} echo " printf \" \\n\"; " >> ${file} echo " } " >> ${file} # done # echo " } " >> ${file} echo "} " >> ${file} # ############################################################################## # $GAWK -f from_restart_to_axsf.gawk ${new_restart_file} > \ ${new_restart_file}.axsf # rm -f from_restart_to_axsf.gawk # fi # echo "done" # rm -f input rm -f CELL_PARAMETERS NEB/tools/path_merge.sh0000755000700200004540000001031712053145633014277 0ustar marsamoscm#!/bin/bash ################################################################################ ## Copyright (C) 2007 Guido Fratesi. ## ## This file is distributed under the terms ## ## of the GNU General Public License. ## ## See http://www.gnu.org/copyleft/gpl.txt . ## ## ## ## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ## ## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ## ## MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ## ## NONINFRINGEMENT. IN NO EVENT SHALL GUIDO FRATESI BE LIABLE FOR ANY ## ## CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, ## ## TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ## ## SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## ################################################################################ # # # Suitable for PWSCF v. 4.0, might require revisions for future releases. # # Execute with no arguments for help. # # # ################################################################################ function showhelp () { cat < /dev/stderr USAGE: path_merge.bash file0.path n0 m0 file1.path n1 m1 merges the two path files file0.path and file1.path by taking the images n0 to m0 from file0.path and images n1 to m1 from file file1.path. Merged file is written to standard output. EOF if [ "$err" ]; then cat << EOF > /dev/stderr * ERROR: $err EOF fi exit } awk=`which awk` # # ... Parse and check input parameters # inpf[0]=$1 # first path file (file0.path) imlw[0]=$2 # from this image index (n0) imup[0]=$3 # to this image index (m0) inpf[1]=$4 # second path file (file1.path) imlw[1]=$5 # from this image index (n1) imup[1]=$6 # to this image index (m1) # if (($#==0)); then err=""; showhelp; fi if (($#<6)); then err="Too few arguments!"; showhelp; fi if (($#>6)); then err="Too many arguments!"; showhelp; fi for i in 0 1; do if [ ! -f ${inpf[$i]} ]; then err="File n.$i \"${inpf[$i]}\" not found!" showhelp fi # # ... Extract number of atoms # nat[$i]=`$awk ' ($1=="Image:")&&($2==1) {n=NR}; ($1=="Image:")&&($2==2) {printf NR-n-2; exit}; ' ${inpf[$i]}` # # ... Read number of images # nim[$i]=`$awk '/NUMBER OF IMAGES/ {getline; printf $1; exit}' ${inpf[$i]}` # if ((${imlw[$i]}<1)) || ((${imlw[$i]}>${nim[$i]})) || ((${imup[$i]}<1)) || ((${imup[$i]}>${nim[$i]})) || ((${imup[$i]}<${imlw[$i]})) ; then err="Check the images requested from file n.$((i+1))" showhelp fi # done # if ((${nat[0]}!=${nat[1]})); then err="The number of atoms in the two path files is not the same!" showhelp fi # # ... Write the header # cat <=nfix+1)&&(NR<=nfix+nat) {fix[NR-nfix]=sprintf("%3i%3i%3i",$7,$8,$9)}; # # ... Write images in the range requested # ($1=="Image:")&&($2>=imlw)&&($2<=imup) { n=NR+1; printf("Image:%5i\n",iim); } (NR==n) (NR>=n+1)&&(NR<=n+nat) { for(i=1;i<=6;i++) printf("%20.12f",$i); if(iim==1) printf("%9s",fix[NR-n]); printf("\n"); }; (NR==n+nat) { iim++; }; ' ${inpf[$i]} # iim=$(($iim+${imup[$i]}-${imlw[$i]}+1)) # done