Skip to Content.
Sympa Menu

forum - Re: [abinit-forum] constrained optimization

forum@abinit.org

Subject: The ABINIT Users Mailing List ( CLOSED )

List archive

Re: [abinit-forum] constrained optimization


Chronological Thread 
  • From: PGanesh <pganesh@ciw.edu>
  • To: forum@abinit.org
  • Subject: Re: [abinit-forum] constrained optimization
  • Date: Thu, 08 Jan 2009 13:47:42 -0500

Dear Petr,

This is very helpful and interesting. I am trying to understand it. Are r1, r2 and r3 the three lattice vectors (i.e. the first three rows of rprim in Abinit)? What you call the compliance tensor, you use to get the strain that needs to be applied to the structure (r_(n-1))) from the stress-residue. Size of its elements will determine the rate of convergence and by selecting certain components to zero one can allow certain lattice vectors to remain constant, while others relax (I don't see how though. For example if I chose 'du' such that it makes e[1]=1, e[6]=0, e[5]=0, then I can fix the 'x' component of @r1, but I am not changing 'x' component of @r3 either!. One can of course fix @r1 and @r2 while @r3 changes by hand as you showed in the direct method).
In short, for my case of interest, I think what you are saying is that the matrix (''e'") that transforms the vector r3(old)->r3(new) has elements proportional to the stress tensor (assuming the target stress is all zero). I need to study your code to see how you choose the proportionality constants that control the convergence.

Please correct me if I am wrong. I will then try to test it myself.

Thanks,
Ganesh

Petr Sestak wrote:
Hi Matthieu and P. Ganesh,

There are two ways how to affect the relaxation procedure. The first is to set
some component of array @du (tensor bit) to zero value to avoid the relaxation
of corresponding stress tensor component. However, this tensor is affecting
only the final stress tensor, but we cannot control directly the translation
vectors. I think, that the relaxation procedure in the Abinit code is very
similar or same except the tensor bit as you wrote. May I ask, if the Abinit
is
able to avoid relaxation of some stress tensor component during the relaxation
to the given values of stress tensor (parameter STRTARGET)? Because I guess,
that this is the only difference between the mentioned relaxation procedures.
The second way is direct modification of the relaxation procedure. I am using
this in some very special cases when the first way can not be used. This
modification I used at the PGanesh problem as I demonstrated in my previous
answer. I changed the following code lines

@r1=(0, $r1[1]*$e[1]+$r1[2]*$e[6]+$r1[3]*$e[5],
$r1[1]*$e[6]+$r1[2]*$e[2]+$r1[3]*$e[4],
$r1[1]*$e[5]+$r1[2]*$e[4]+$r1[3]*$e[3]);
@r2=(0, $r2[1]*$e[1]+$r2[2]*$e[6]+$r2[3]*$e[5],
$r2[1]*$e[6]+$r2[2]*$e[2]+$r2[3]*$e[4],
$r2[1]*$e[5]+$r2[2]*$e[4]+$r2[3]*$e[3]);
@r3=(0, $r3[1]*$e[1]+$r3[2]*$e[6]+$r3[3]*$e[5],
$r3[1]*$e[6]+$r3[2]*$e[2]+$r3[3]*$e[4],
$r3[1]*$e[5]+$r3[2]*$e[4]+$r3[3]*$e[3]);

to
@r1=(0, $r1[1], $r1[2], $r1[3]);
@r2=(0, $r2[1], $r2[2], $r2[3]);
@r3=(0, $r3[1]*$e[1]+$r3[2]*$e[6]+$r3[3]*$e[5],
$r3[1]*$e[6]+$r3[2]*$e[2]+$r3[3]*$e[4],
$r3[1]*$e[5]+$r3[2]*$e[4]+$r3[3]*$e[3]);

I am afraid, that the direct modification of the relaxation procedure can not
be implemented to the source code because it is different for each structure
and relaxation conditions. This is the reason why I am using the external
script.

I have some idea how to solve this problem. I will try to implement it to my
scipt and if I get some good results I will let you know.

Yes, my indices i,j are in the cartesian coordinates.

Best regards

Ing. Peter Sestak
Institute of Physical Engineering
Faculty of Mechanical Engineering
Brno University of Technology




Archive powered by MHonArc 2.6.15.

Top of Page