dockonsurf / global_script.sh @ f43a1b4c
Historique | Voir | Annoter | Télécharger (5,6 ko)
1 | 86112fec | Marti Aliod Carles | #!/bin/bash |
---|---|---|---|
2 | 86112fec | Marti Aliod Carles | |
3 | 86112fec | Marti Aliod Carles | user="$(pwd | awk -F"/" '{print $3}')" |
4 | f43a1b4c | Marti Aliod Carles | file_path="$(find $HOME -name "DockOnSurf_path")" |
5 | f43a1b4c | Marti Aliod Carles | echo $file_path |
6 | 86112fec | Marti Aliod Carles | |
7 | 86112fec | Marti Aliod Carles | ### Mise en place de l'arborescence |
8 | 86112fec | Marti Aliod Carles | |
9 | 86112fec | Marti Aliod Carles | source ${file_path} |
10 | 86112fec | Marti Aliod Carles | |
11 | 86112fec | Marti Aliod Carles | ### Récupération des vecteurs de cellule |
12 | 86112fec | Marti Aliod Carles | |
13 | 86112fec | Marti Aliod Carles | a1="$(grep "A\ " ${CP2K_input_MolOnSurf} | awk '$1 ~/^A/ {print}' | awk '{print $2}')" |
14 | 86112fec | Marti Aliod Carles | if [[ $a1 =~ "E+00" ]]; then a1="$(echo $a1 | cut -d "E" -f1)"; fi ; export a1 |
15 | 86112fec | Marti Aliod Carles | a2="$(grep "A\ " ${CP2K_input_MolOnSurf} | awk '$1 ~/^A/ {print}' | awk '{print $3}')" |
16 | 86112fec | Marti Aliod Carles | if [[ $a2 =~ "E+00" ]]; then a2="$(echo $a2 | cut -d "E" -f1)"; fi ; export a2 |
17 | 86112fec | Marti Aliod Carles | a3="$(grep "A\ " ${CP2K_input_MolOnSurf} | awk '$1 ~/^A/ {print}' | awk '{print $4}')" |
18 | 86112fec | Marti Aliod Carles | if [[ $a3 =~ "E+00" ]]; then a3="$(echo $a3 | cut -d "E" -f1)"; fi ; export a3 |
19 | 86112fec | Marti Aliod Carles | b1="$(grep "B\ " ${CP2K_input_MolOnSurf} | awk '$1 ~/^B/ {print}' | awk '{print $2}')" |
20 | 86112fec | Marti Aliod Carles | if [[ $b1 =~ "E+00" ]]; then b1="$(echo $b1 | cut -d "E" -f1)"; fi ; export b1 |
21 | 86112fec | Marti Aliod Carles | b2="$(grep "B\ " ${CP2K_input_MolOnSurf} | awk '$1 ~/^B/ {print}' | awk '{print $3}')" |
22 | 86112fec | Marti Aliod Carles | if [[ $b2 =~ "E+00" ]]; then b2="$(echo $b2 | cut -d "E" -f1)"; fi ; export b2 |
23 | 86112fec | Marti Aliod Carles | b3="$(grep "B\ " ${CP2K_input_MolOnSurf} | awk '$1 ~/^B/ {print}' | awk '{print $4}')" |
24 | 86112fec | Marti Aliod Carles | if [[ $b3 =~ "E+00" ]]; then b3="$(echo $b3 | cut -d "E" -f1)"; fi ; export b3 |
25 | 86112fec | Marti Aliod Carles | c1="$(grep "C\ " ${CP2K_input_MolOnSurf} | awk '$1 ~/^C/ {print}' | awk '{print $2}')" |
26 | 86112fec | Marti Aliod Carles | if [[ $c1 =~ "E+00" ]]; then c1="$(echo $c1 | cut -d "E" -f1)"; fi ; export c1 |
27 | 86112fec | Marti Aliod Carles | c2="$(grep "C\ " ${CP2K_input_MolOnSurf} | awk '$1 ~/^C/ {print}' | awk '{print $3}')" |
28 | 86112fec | Marti Aliod Carles | if [[ $c2 =~ "E+00" ]]; then c2="$(echo $c2 | cut -d "E" -f1)"; fi ; export c2 |
29 | 86112fec | Marti Aliod Carles | c3="$(grep "C\ " ${CP2K_input_MolOnSurf} | awk '$1 ~/^C/ {print}' | awk '{print $4}')" |
30 | 86112fec | Marti Aliod Carles | if [[ $c3 =~ "E+00" ]]; then c3="$(echo $c3 | cut -d "E" -f1)"; fi ; export c3 |
31 | 86112fec | Marti Aliod Carles | |
32 | 86112fec | Marti Aliod Carles | ### Paramètres initiaux |
33 | 86112fec | Marti Aliod Carles | |
34 | 86112fec | Marti Aliod Carles | echo 'Name of the molecule (without .mol) ' |
35 | 86112fec | Marti Aliod Carles | read molecule |
36 | 86112fec | Marti Aliod Carles | |
37 | 86112fec | Marti Aliod Carles | echo '' |
38 | 86112fec | Marti Aliod Carles | |
39 | 86112fec | Marti Aliod Carles | module load rdkit |
40 | 86112fec | Marti Aliod Carles | |
41 | 86112fec | Marti Aliod Carles | ### Generation des conformeres |
42 | 86112fec | Marti Aliod Carles | |
43 | 86112fec | Marti Aliod Carles | ${DockOnSurf_path}/modules/generation_conformeres.py $molecule 5000 |
44 | 86112fec | Marti Aliod Carles | echo ' -- CONFORMERS HAVE BEEN GENERATED --' |
45 | 86112fec | Marti Aliod Carles | |
46 | 86112fec | Marti Aliod Carles | ### Conversion des fichiers .mol en .xyz |
47 | 86112fec | Marti Aliod Carles | |
48 | 86112fec | Marti Aliod Carles | ${DockOnSurf_path}/modules/mol_to_xyz.sh $molecule |
49 | 86112fec | Marti Aliod Carles | |
50 | 86112fec | Marti Aliod Carles | ### Lancement des calculs pour les molecules seules |
51 | 86112fec | Marti Aliod Carles | |
52 | 86112fec | Marti Aliod Carles | ${DockOnSurf_path}/modules/launch_cp2k_molecule_seule.sh $molecule |
53 | 86112fec | Marti Aliod Carles | |
54 | 86112fec | Marti Aliod Carles | echo ' -- ALL CALCULATIONS FOR MOLECULE ALONE HAVE BEEN DONE --' |
55 | 86112fec | Marti Aliod Carles | |
56 | 86112fec | Marti Aliod Carles | ### Suppression des fichiers inutiles |
57 | 86112fec | Marti Aliod Carles | |
58 | 86112fec | Marti Aliod Carles | rm -r ${Molecule_results_path}/${molecule}/*/*RESTART* |
59 | 86112fec | Marti Aliod Carles | rm -r ${Molecule_results_path}/${molecule}/*/*restart* |
60 | 86112fec | Marti Aliod Carles | rm -r ${Molecule_results_path}/${molecule}/*/*BFGS* |
61 | 86112fec | Marti Aliod Carles | rm -r ${Molecule_results_path}/${molecule}/*/*.p* |
62 | 86112fec | Marti Aliod Carles | |
63 | 86112fec | Marti Aliod Carles | echo ' ' |
64 | 86112fec | Marti Aliod Carles | echo ' -- RESULTS --' |
65 | 86112fec | Marti Aliod Carles | |
66 | 86112fec | Marti Aliod Carles | min_energy_molecule=0 |
67 | 86112fec | Marti Aliod Carles | for struct in ${Molecule_results_path}/${molecule}/${molecule}*; do |
68 | 86112fec | Marti Aliod Carles | energy_molecule="$(awk '/ENERGY/{E=$NF} END{print E}' ${struct}/*${molecule}.out)" |
69 | 86112fec | Marti Aliod Carles | if [[ "${energy_molecule}" > "${min_energy_molecule}" ]] |
70 | 86112fec | Marti Aliod Carles | then |
71 | 86112fec | Marti Aliod Carles | min_energy_molecule=${energy_molecule} |
72 | 86112fec | Marti Aliod Carles | numero_mol_stable="$(echo $struct | awk -F'/' '{print $NF}')" |
73 | 86112fec | Marti Aliod Carles | fi |
74 | 86112fec | Marti Aliod Carles | done |
75 | 86112fec | Marti Aliod Carles | echo " Most stable structure for molecule alone: ${numero_mol_stable} with energy ${min_energy_molecule} Ha" |
76 | 86112fec | Marti Aliod Carles | |
77 | 86112fec | Marti Aliod Carles | echo ' ' |
78 | 86112fec | Marti Aliod Carles | echo ' -- ARGUMENTS FOR ADSORPTION -- ' |
79 | 86112fec | Marti Aliod Carles | echo ' ' |
80 | 86112fec | Marti Aliod Carles | echo 'Name of the file to use for the surface (without .xyz) ' |
81 | 86112fec | Marti Aliod Carles | read surface |
82 | 86112fec | Marti Aliod Carles | echo 'Number of the central atom of the molecule' |
83 | 86112fec | Marti Aliod Carles | read center |
84 | 86112fec | Marti Aliod Carles | read -a list_atom_1_mol -p 'List of atoms of the molecule to adsorb ' |
85 | 86112fec | Marti Aliod Carles | read -a list_atom_2_mol -p 'List of neighboring atoms of the molecule (linked to the atoms to adsorb) ' |
86 | 86112fec | Marti Aliod Carles | nombre_atom_mol=${#list_atom_1_mol[@]} |
87 | 86112fec | Marti Aliod Carles | if [ ${#list_atom_2_mol[@]} != ${nombre_atom_mol} ] |
88 | 86112fec | Marti Aliod Carles | then |
89 | 86112fec | Marti Aliod Carles | echo " Problem: number of atoms different in the two lists" |
90 | 86112fec | Marti Aliod Carles | exit |
91 | 86112fec | Marti Aliod Carles | fi |
92 | 86112fec | Marti Aliod Carles | read -a list_atom_surf -p 'List of the atoms of the surface that can be adsorption sites ' |
93 | 86112fec | Marti Aliod Carles | echo 'Value of cutoff energy for reoptimisation (eV)' |
94 | 86112fec | Marti Aliod Carles | read cutoff |
95 | 86112fec | Marti Aliod Carles | echo '' |
96 | 86112fec | Marti Aliod Carles | |
97 | 86112fec | Marti Aliod Carles | ### Adsorption de la molecule sur la surface |
98 | 86112fec | Marti Aliod Carles | |
99 | 86112fec | Marti Aliod Carles | ${DockOnSurf_path}/modules/script_add_adsorbate+diss.sh $molecule $surface "${list_atom_1_mol[*]}" "${list_atom_2_mol[*]}" "${list_atom_surf[*]}" |
100 | 86112fec | Marti Aliod Carles | |
101 | 86112fec | Marti Aliod Carles | echo ' -- ADSORPTION SUTRUCTURES HAVE BEEN CALCULATED --' |
102 | 86112fec | Marti Aliod Carles | |
103 | 86112fec | Marti Aliod Carles | # Changes labels of elements to its original definition, thus allowing different kinds of same element (Fe1 Fe2) with different properties (e.g. spin state in compounds with magnetic coupling) |
104 | 86112fec | Marti Aliod Carles | |
105 | 86112fec | Marti Aliod Carles | ${DockOnSurf_path}/modules/fe_change.sh $molecule $surface ${MolOnSurf_results_path}/${molecule} |
106 | 86112fec | Marti Aliod Carles | |
107 | 86112fec | Marti Aliod Carles | ### Lancement des calculs pour les molecules adsorbees |
108 | 86112fec | Marti Aliod Carles | |
109 | 86112fec | Marti Aliod Carles | ${DockOnSurf_path}/modules/launch_script+diss.sh $molecule |
110 | 86112fec | Marti Aliod Carles | |
111 | 86112fec | Marti Aliod Carles | echo ' -- ALL CALCULATIONS FOR ADSORPTION STRUCTURES HAVE BEEN DONE --' |
112 | 86112fec | Marti Aliod Carles | |
113 | 86112fec | Marti Aliod Carles | ### Suppression des fichiers inutiles |
114 | 86112fec | Marti Aliod Carles | |
115 | 86112fec | Marti Aliod Carles | rm -r ${MolOnSurf_results_path}/${molecule}/*/*RESTART* |
116 | 86112fec | Marti Aliod Carles | rm -r ${MolOnSurf_results_path}/${molecule}/*/*BFGS* |
117 | 86112fec | Marti Aliod Carles | rm -r ${MolOnSurf_results_path}/${molecule}/*/*.p* |
118 | 86112fec | Marti Aliod Carles | |
119 | 86112fec | Marti Aliod Carles | ### Clustering et lancement des structures centres des clusters |
120 | 86112fec | Marti Aliod Carles | |
121 | 86112fec | Marti Aliod Carles | nb_at_surf="$(awk 'NR==1{print}' ${Surface_path}/${surface}.xyz)" |
122 | 86112fec | Marti Aliod Carles | num_center="$(expr ${nb_at_surf} + $center )" |
123 | 86112fec | Marti Aliod Carles | |
124 | 86112fec | Marti Aliod Carles | ${DockOnSurf_path}/modules/script_grandes_molecules+diss.sh $molecule $num_center ${nb_at_surf} ${cutoff} |
125 | 86112fec | Marti Aliod Carles | |
126 | 86112fec | Marti Aliod Carles | echo ' -- ALL CLUSTER CENTERS CALCULATIONS HAVE BEEN DONE --' |
127 | 86112fec | Marti Aliod Carles | |
128 | 86112fec | Marti Aliod Carles | |
129 | 86112fec | Marti Aliod Carles | echo " " |
130 | 86112fec | Marti Aliod Carles | echo ' -- RESULTS --' |
131 | 86112fec | Marti Aliod Carles | |
132 | 86112fec | Marti Aliod Carles | echo ' ' |
133 | 86112fec | Marti Aliod Carles | echo "Most stable structure for molecule alone: ${numero_mol_stable} with energy ${min_energy_molecule} Ha" |
134 | 86112fec | Marti Aliod Carles | |
135 | 86112fec | Marti Aliod Carles | min_energy_global=0 |
136 | 86112fec | Marti Aliod Carles | for global_struct in ${MolOnSurf_results_path}/${molecule}/relaunched_calculations/* ; do |
137 | 86112fec | Marti Aliod Carles | if [[ "$global_struct" != *.inp ]] |
138 | 86112fec | Marti Aliod Carles | then |
139 | 86112fec | Marti Aliod Carles | if [[ "$global_struct" != *.j ]] |
140 | 86112fec | Marti Aliod Carles | then |
141 | 86112fec | Marti Aliod Carles | energy_global="$(awk '/ENERGY/{E=$NF} END{print E}' ${global_struct}/*${molecule}.out)" |
142 | 86112fec | Marti Aliod Carles | if [[ "${energy_global}" > "${min_energy_global}" ]] |
143 | 86112fec | Marti Aliod Carles | then |
144 | 86112fec | Marti Aliod Carles | min_energy_global=${energy_global} |
145 | 86112fec | Marti Aliod Carles | numero_global_stable="$(echo ${global_struct} | awk -F'/' '{print $NF}')" |
146 | 86112fec | Marti Aliod Carles | fi |
147 | 86112fec | Marti Aliod Carles | fi |
148 | 86112fec | Marti Aliod Carles | fi |
149 | 86112fec | Marti Aliod Carles | done |
150 | 86112fec | Marti Aliod Carles | |
151 | 86112fec | Marti Aliod Carles | echo "Most stable structure for adsorption: ${numero_global_stable} with energy ${min_energy_global} Ha" |
152 | 86112fec | Marti Aliod Carles |