Changeset 774ae8 for pcp/src/ions.c


Ignore:
Timestamp:
Apr 21, 2008, 2:19:24 PM (17 years ago)
Author:
Frederik Heber <heber@…>
Children:
36f85c
Parents:
b74e5e
git-author:
Frederik Heber <heber@…> (04/18/08 15:21:30)
git-committer:
Frederik Heber <heber@…> (04/21/08 14:19:24)
Message:

WriteParameters() added
OutputIonCoordinates() uses WriteParameters() and additional parameter whether its MD or StructOpt

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pcp/src/ions.c

    rb74e5e r774ae8  
    959959/** Print coordinates of all ions to stdout.
    960960 * \param *P Problem at hand
    961  */
    962 void OutputIonCoordinates(struct Problem *P)
    963 {
    964   struct Ions *I = &P->Ion;
    965   int is, ia;
    966   if (P->Par.me == 0) {
    967     fprintf(stderr, "(%i) ======= Updated Ion Coordinates =========\n",P->Par.me);
     961 * \param actual (1 - don't at current RunStruct#OuterStep, 0 - do)
     962 */
     963void OutputIonCoordinates(struct Problem *P, int actual)
     964{
     965  //struct RunStruct *R = &P->R;
     966  struct Ions *I = &P->Ion;
     967  char filename[255];
     968  FILE *output;
     969  int is, ia, nr = 0;
     970  double Bohr = (I->IsAngstroem) ? 1./ANGSTROEMINBOHRRADIUS : 1.;
     971/*  if (P->Par.me == 0 && P->Call.out[ReadOut]) {
     972    fprintf(stderr, "(%i) ======= Differential Ion Coordinates =========\n",P->Par.me);
    968973    for (is=0; is < I->Max_Types; is++)
    969974      for (ia=0; ia < I->I[is].Max_IonsOfType; ia++)
    970975        //fprintf(stderr, "(%i) R[%i/%i][%i/%i] = (%e,%e,%e)\n", P->Par.me, is, I->Max_Types, ia, I->I[is].Max_IonsOfType, I->I[is].R[NDIM*ia+0],I->I[is].R[NDIM*ia+1],I->I[is].R[NDIM*ia+2]); 
    971         fprintf(stderr, "Ion_Type%i_%i\t%.6f\t%.6f\t%.6f\t0\t# Atom from StructOpt\n", is+1, ia+1, I->I[is].R[NDIM*ia+0],I->I[is].R[NDIM*ia+1],I->I[is].R[NDIM*ia+2]);
     976        fprintf(stderr, "Ion_Type%i_%i\t%.6f\t%.6f\t%.6f\t0\t# Atom from StructOpt\n", is+1, ia+1, I->I[is].R[NDIM*ia+0]-I->I[is].R_old[NDIM*ia+0],I->I[is].R[NDIM*ia+1]-I->I[is].R_old[NDIM*ia+1],I->I[is].R[NDIM*ia+2]-I->I[is].R_old[NDIM*ia+2]);
    972977    fprintf(stderr, "(%i) =========================================\n",P->Par.me);
     978  }*/
     979  if (actual)
     980    sprintf(filename, "%s.MD", P->Call.MainParameterFile);
     981  else
     982    sprintf(filename, "%s.opt", P->Call.MainParameterFile);
     983  if (((actual) && (P->R.OuterStep <= 0)) || ((!actual) && (P->R.StructOptStep == 1))) { // on first step write complete config file
     984    WriteParameters(P, filename);
     985  } else { // afterwards simply add the current ion coordinates as constrained steps
     986    if ((P->Par.me == 0) && (output = fopen(filename,"a"))) {
     987      fprintf(output,"# ====== MD step %d ========= \n", (actual) ? P->R.OuterStep : P->R.StructOptStep);
     988      for (is=0; is < I->Max_Types; is++)
     989        for (ia=0;ia<I->I[is].Max_IonsOfType;ia++) {
     990          fprintf(output,"Ion_Type%i_%i\t%2.9f\t%2.9f\t%2.9f\t%i\t%2.9f\t%2.9f\t%2.9f\t# Number in molecule %i\n", is+1, ia+1, I->I[is].R[0+NDIM*ia]*Bohr, I->I[is].R[1+NDIM*ia]*Bohr, I->I[is].R[2+NDIM*ia]*Bohr, I->I[is].IMT[ia], I->I[is].U[0+NDIM*ia]*Bohr, I->I[is].U[1+NDIM*ia]*Bohr, I->I[is].U[2+NDIM*ia]*Bohr, ++nr);
     991        }
     992      fflush(output);
     993    }
    973994  }
    974995}
Note: See TracChangeset for help on using the changeset viewer.