Optimisation de géométrie avec contrainte(s)

Quand on impose une (des) contraintes, on doit retirer la symétrie, donc travailler en C1. La géométrie de départ ne doit pas être TROP éloignée de la contrainte.

Avec GAMESS vous devez définir dans un groupe $CONTRL le nombre de contraintes d'optimisation (NZVAR=1) et dans un groupe $ZMAT définir la coordonnée bloquée: iFzmat(1)=2,nA,nB,nC (1 pour une distance, 2 pour un angle, 3 pour un dièdre). La valeur voulue est précisée avec Fvalue(1)=110.0.
Les options DLC et AUTO sont liées à la génération automatique de coordonnées. A noter qu'on peut devoir rajouter des coordonnées "à la main" , par exemple lorsqu'on a 2 molécules en approche. Le plus simple est la commande NONVDW(1)= nA,nB pour préciser que les atomes numéros nA et nB sont en approche. Un exemple est donné en fin de cette page pour mettre 2 contraintes dans une optimisation.

Comme c'est une optimisation on garde la commande RUNTYP=OPTIMIZE ainsi que le groupe des Points Stationnaires ($STAPT), en évitant les calculs de hessien (du genre IHREP=20 HESS=CALC HSSEND=.TRUE.). Dans certains cas rares, on peut vouloir demander un (couteux) calcul de hessien à la fin : $STATPT HSSEND=.TRUE. $END.

On peut aussi devoir ajouter à la main des coordonnées complémentaires pour tout maitriser (eXtra):
iXzmat(1)=1,nA,nB, 2,nA,nB,nC.

Attention, Gamess exige d'avoir un espace avant chaque $ ( $ZMAT $END).


Exemples

1 contrainte

Optimisation contrainte de H2O en contraignant l'angle H-O-H à 110°. A voir sur chemcompute dans le job public Job_id= 300168

On doit définir la distance 2,3 comme non Van der Waals pour avoir suffisamment de coordonnées.


! Fichier d'exemple de contrainte job_300168
 $CONTRL
  SCFTYP=RHF MAXIT=200 RUNTYP=OPTIMIZE
  MULT=1 ICHARG=0
 $END
 $SYSTEM TIMLIM=2879 MWORDS=250 MEMDDI=258 $END
 $STATPT OPTTOL=0.0005 NSTEP=999 $END
 $BASIS GBASIS=N31 NGAUSS=6 NDFUNC=1 NPFUNC=0 $END
 $SCF DIRSCF=.T. $END
 $GUESS GUESS=HUCKEL $END
 $DATA

  C1
    O 8.0 0.00000 -0.00000 0.06678
    H 1.0 1.05616 -0.00000 -0.42041
    H 1.0 -0.76403 0.00000 -0.52996
$END
 ! Customizations after this line are persisted when using Do More Calculations
 $CONTRL
  NZVAR=1
 $END
 $ZMAT
 DLC=.true. auto=.true.
  ifzmat(1)=2,2,1,3 fvalue(1)=110.0
  nonvdw(1)=2,3
 $END


2 contraintes, chacune sur 1 diedre

 ! Customizations after this line are persisted when using Do More Calculations
 $CONTRL
  NZVAR=2
 $END
 $ZMAT DLC=.true. auto=.true.
  ifzmat(1)=3,5,1,2,7, 3,3,1,2,8       fvalue(1)=0.0, 15.0
  nonvdw(1)=5,7, 3,8
 
 $END

Note: nonvdw(1) permet au programme de reconstruire une série de coordonnées basées sur les 2 atomes indiqués. Cela permet à GAMESS de gérer l'approche de 2 molécules, prennant en compte que leur orientation respectives dans l'espace. Dans des cas exceptionnels, on peut aussi vouloir définir des coordonnées spécifiquement IXZMAT(1)=1,2,3, 2,3,2,1, 2,1,3,2