forked from lijiext/lammps
git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@14877 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
parent
4314ef01f6
commit
e405f015f9
|
@ -0,0 +1,109 @@
|
|||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include "write_coeff.h"
|
||||
#include "pair.h"
|
||||
#include "bond.h"
|
||||
#include "angle.h"
|
||||
#include "dihedral.h"
|
||||
#include "improper.h"
|
||||
#include "comm.h"
|
||||
#include "force.h"
|
||||
#include "universe.h"
|
||||
#include "error.h"
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
called as write_coeff command in input script
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void WriteCoeff::command(int narg, char **arg)
|
||||
{
|
||||
if (domain->box_exist == 0)
|
||||
error->all(FLERR,"write_coeff command before simulation box is defined");
|
||||
|
||||
if (narg != 1) error->all(FLERR,"Illegal write_coeff command");
|
||||
|
||||
int n = strlen(arg[0]) + 5;
|
||||
char *file = new char[n];
|
||||
|
||||
strcpy(file,"tmp.");
|
||||
strcat(file,arg[0]);
|
||||
|
||||
if (comm->me == 0) {
|
||||
char str[256], coeff[256];
|
||||
FILE *one = fopen(file,"wb+");
|
||||
if (one == NULL) {
|
||||
sprintf(str,"Cannot open coeff file %s",file);
|
||||
error->one(FLERR,str);
|
||||
}
|
||||
|
||||
if (force->pair && force->pair->writedata) {
|
||||
force->pair->init();
|
||||
fprintf(one,"# pair_style %s\npair_coeff\n",force->pair_style);
|
||||
force->pair->write_data_all(one);
|
||||
fprintf(one,"end\n");
|
||||
}
|
||||
if (force->bond && force->bond->writedata) {
|
||||
fprintf(one,"# bond_style %s\nbond_coeff\n",force->bond_style);
|
||||
force->bond->write_data(one);
|
||||
fprintf(one,"end\n");
|
||||
}
|
||||
if (force->angle && force->angle->writedata) {
|
||||
fprintf(one,"# angle_style %s\nangle_coeff\n",force->angle_style);
|
||||
force->angle->write_data(one);
|
||||
fprintf(one,"end\n");
|
||||
}
|
||||
if (force->dihedral && force->dihedral->writedata) {
|
||||
fprintf(one,"# dihedral_style %s\ndihedral_coeff\n",force->dihedral_style);
|
||||
force->dihedral->write_data(one);
|
||||
fprintf(one,"end\n");
|
||||
}
|
||||
if (force->improper && force->improper->writedata) {
|
||||
fprintf(one,"# improper_style %s\nimproper_coeff\n",force->improper_style);
|
||||
force->improper->write_data(one);
|
||||
fprintf(one,"end\n");
|
||||
}
|
||||
rewind(one);
|
||||
|
||||
FILE *two = fopen(file+4,"w");
|
||||
if (two == NULL) {
|
||||
sprintf(str,"Cannot open coeff file %s",file+4);
|
||||
error->one(FLERR,str);
|
||||
}
|
||||
fprintf(two,"# LAMMPS coeff file via write_coeff, version %s\n",
|
||||
universe->version);
|
||||
while(1) {
|
||||
if (fgets(str,256,one) == NULL) break;
|
||||
fputs(str,two); // style
|
||||
fgets(str,256,one); // coeff
|
||||
n = strlen(str);
|
||||
strcpy(coeff,str);
|
||||
coeff[n-1] = '\0';
|
||||
fgets(str,256,one);
|
||||
while (strcmp(str,"end\n") != 0) {
|
||||
fprintf(two,"%s %s",coeff,str);
|
||||
fgets(str,256,one);
|
||||
}
|
||||
fputc('\n',two);
|
||||
}
|
||||
fclose(one);
|
||||
fclose(two);
|
||||
unlink(file);
|
||||
}
|
||||
|
||||
delete [] file;
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
/* -*- c++ -*- ----------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef COMMAND_CLASS
|
||||
|
||||
CommandStyle(write_coeff,WriteCoeff)
|
||||
|
||||
#else
|
||||
|
||||
#ifndef LMP_WRITE_COEFF_H
|
||||
#define LMP_WRITE_COEFF_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include "pointers.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class WriteCoeff : protected Pointers {
|
||||
public:
|
||||
WriteCoeff(class LAMMPS *lmp) : Pointers(lmp) {};
|
||||
void command(int, char **);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* ERROR/WARNING messages:
|
||||
|
||||
E: write_coeff command before simulation box is defined
|
||||
|
||||
Self-explanatory.
|
||||
|
||||
E: Illegal ... command
|
||||
|
||||
Self-explanatory. Check the input script syntax and compare to the
|
||||
documentation for the command. You can use -echo screen as a
|
||||
command-line option when running LAMMPS to see the offending line.
|
||||
|
||||
E: Atom count is inconsistent, cannot write data file
|
||||
|
||||
The sum of atoms across processors does not equal the global number
|
||||
of atoms. Probably some atoms have been lost.
|
||||
|
||||
E: Cannot open coeff file %s
|
||||
|
||||
The specified file cannot be opened. Check that the path and name are
|
||||
correct.
|
||||
|
||||
*/
|
Loading…
Reference in New Issue