Statistiques
| Branche: | Tag: | Révision :

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