Statistics
| Branch: | Tag: | Revision:

dockonsurf / modules / script_add_adsorbate+diss.sh @ 36f722bc

History | View | Annotate | Download (2.8 kB)

1
#!/bin/bash
2

    
3
# script surface.xyz at.surf molecule.xyz at.mol distance at.surf2 at.mol2 alpha theta output(.xyz)
4

    
5
distance_mol_surf=2
6

    
7
nom_de_la_molecule=$1
8
surface_d_adsorption=$2
9
list_atom_1_mol=($3)
10
list_atom_2_mol=($4)
11
list_atom_surf=($5)
12
coads_box=$6
13
first_atom_ads1=$7
14

    
15
nombre_atom_mol=${#list_atom_1_mol[@]}
16

    
17
angles_phi=(0 0 0 270 270 270 180 180 180 90 90 90)
18
angles_theta=(0 300 300 0 300 300 0 300 300 0 300 300)
19
angles_psi=(0 0 315 0 0 315 0 0 315 0 0 315)
20

    
21
nombre_atom_surf=${#list_atom_surf[@]}
22
nombre_angles=${#angles_phi[@]}
23

    
24
if [ ! -d ${MolOnSurf_results_path}/${nom_de_la_molecule} ]
25
then mkdir ${MolOnSurf_results_path}/${nom_de_la_molecule}
26
else
27
	echo "There is already a directory for this molecule: remove this directory?"
28
	read reponse
29
	if [[ "$reponse" == "yes" ]]
30
	then rm -r ${MolOnSurf_results_path}/${nom_de_la_molecule}/*
31
	fi 
32
fi
33

    
34

    
35
##################
36
# Détermination du numéro correspondant à la molécule ayant la structure la plus stable
37
##################
38

    
39

    
40
n="$(find ${Molecule_results_path}/${nom_de_la_molecule}/${nom_de_la_molecule}*/coord.xyz | wc -l)"
41
min_energy_molecule=0
42

    
43
for ((a=1; a<=n; a++)) ; do
44
	energy_molecule="$(awk '/ENERGY/{E=$NF} END{print E}' ${Molecule_results_path}/${nom_de_la_molecule}/${nom_de_la_molecule}_$a/*${nom_de_la_molecule}.out)"
45
	if [[ "$energy_molecule" > "$min_energy_molecule" ]]
46
	then 
47
		min_energy_molecule=$energy_molecule
48
		numero_mol_stable=$a
49
	fi
50
done
51

    
52

    
53
##################
54
# Génération des structures de molécules adsorbées sur la surface
55
##################
56

    
57
b=1
58

    
59
mkdir ${MolOnSurf_results_path}/${nom_de_la_molecule}/coords
60

    
61
molecule_a_adsorber=${nom_de_la_molecule}_${numero_mol_stable}
62
for ((i=0; i<${nombre_atom_surf}; i++)) ; do
63
	atom_surf=${list_atom_surf[$i]}
64
	for ((j=0; j<${nombre_atom_mol}; j++)) ; do
65
		atom_1_mol=${list_atom_1_mol[$j]}
66
		atom_2_mol=${list_atom_2_mol[$j]}
67
		echo " "
68
		echo "Adsorption of atom $atom_1_mol on atom $atom_surf" 
69
		for ((k=0; k<${nombre_angles}; k++)) ; do
70
			angle_phi=${angles_phi[$k]}
71
			angle_theta=${angles_theta[$k]}
72
			angle_psi=${angles_psi[$k]}
73
			${DockOnSurf_path}/modules/add_adsorbate_euler+dissociation.py ${Surface_path}/${surface_d_adsorption}.xyz ${atom_surf} ${Molecule_results_path}/${nom_de_la_molecule}/${molecule_a_adsorber}/last_geo.xyz ${atom_1_mol} ${distance_mol_surf} ${atom_2_mol} ${angle_phi} ${angle_theta} ${angle_psi} ${MolOnSurf_results_path}/${nom_de_la_molecule}/coords/${nom_de_la_molecule}_$b $coads_box $first_atom_ads1
74
			b=$((b+1))
75
		done
76
	done
77
done
78

    
79
for file_molsurf in ${MolOnSurf_results_path}/${nom_de_la_molecule}/coords/*; do
80
	name="$(echo $file_molsurf | awk -F/ '{print $NF}' | awk -F. '{print $(NF-1)}')"
81
	mkdir ${MolOnSurf_results_path}/${nom_de_la_molecule}/$name
82
	mv $file_molsurf ${MolOnSurf_results_path}/${nom_de_la_molecule}/$name/coord.xyz
83
done
84
rm -r ${MolOnSurf_results_path}/${nom_de_la_molecule}/coords
85