Commit 82badf85 authored by sjplimp's avatar sjplimp
Browse files

git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15783 f3b2605a-c512-4ea7-a41b-209d697bcdaa
parent 6d759f1b
Loading
Loading
Loading
Loading
+63 −0
Original line number Diff line number Diff line
# Install/unInstall package files in LAMMPS
# mode = 0/1/2 for uninstall/install/update

mode=$1

# enforce using portable C locale
LC_ALL=C
export LC_ALL

# arg1 = file, arg2 = file it depends on

action () {
  if (test $mode = 0) then
    rm -f ../$1
  elif (! cmp -s $1 ../$1) then
    if (test -z "$2" || test -e ../$2) then
      cp $1 ..
      if (test $mode = 2) then
        echo "  updating src/$1"
      fi
    fi
  elif (test -n "$2") then
    if (test ! -e ../$2) then
      rm -f ../$1
    fi
  fi
}

for file in *.cpp *.h; do
  action $file
done

# edit 2 Makefile.package files to include/exclude package info

if (test $1 = 1) then

  if (test -e ../Makefile.package) then
    sed -i -e 's/[^ \t]*netcdf[^ \t]* //g' ../Makefile.package
    sed -i -e 's|^PKG_SYSINC =[ \t]*|&$(netcdf_SYSINC) |' ../Makefile.package
    sed -i -e 's|^PKG_SYSLIB =[ \t]*|&$(netcdf_SYSLIB) |' ../Makefile.package
    sed -i -e 's|^PKG_SYSPATH =[ \t]*|&$(netcdf_SYSPATH) |' ../Makefile.package
  fi

  if (test -e ../Makefile.package.settings) then
    sed -i -e '/^include.*netcdf.*$/d' ../Makefile.package.settings
    # multiline form needed for BSD sed on Macs
    sed -i -e '4 i \
include ..\/..\/lib\/netcdf\/Makefile.lammps
' ../Makefile.package.settings

  fi

elif (test $1 = 0) then

  if (test -e ../Makefile.package) then
    sed -i -e 's/[^ \t]*netcdf[^ \t]* //g' ../Makefile.package
  fi

  if (test -e ../Makefile.package.settings) then
    sed -i -e '/^include.*netcdf.*$/d' ../Makefile.package.settings
  fi

fi
+40 −0
Original line number Diff line number Diff line
USER-NC-DUMP
============

This package provides the nc and (optionally) the nc/mpiio dump styles.
See the doc page for dump nc or dump nc/mpiio command for how to use them.
Compiling these dump styles requires having the netCDF library installed
on your system. See lib/netcdf/README for additional details.

PACKAGE DESCRIPTION
-------------------

This is a LAMMPS (http://lammps.sandia.gov/) dump style for output into a NetCDF
database. The database format follows the AMBER NetCDF trajectory convention
(http://ambermd.org/netcdf/nctraj.xhtml), but includes extensions to this
convention. These extension are:
* A variable "cell_origin" (of dimension "frame", "cell_spatial") that contains
  the bottom left corner of the simulation cell.
* Any number of additional variables corresponding to per atom scalar, vector
  or tensor quantities available within LAMMPS. Tensor quantities are written in
  Voigt notation. An additional dimension "Voigt" of length 6 is created for
  this purpose.
* Possibility to output to an HDF5 database.

NetCDF files can be directly visualized with the following tools:
* Ovito (http://www.ovito.org/). Ovito supports the AMBER convention and all of
  the above extensions.
* VMD (http://www.ks.uiuc.edu/Research/vmd/).
* AtomEye (http://www.libatoms.org/). The libAtoms version of AtomEye contains
  a NetCDF reader that is not present in the standard distribution of AtomEye.

The person who created these files is Lars Pastewka at
Karlsruhe Institute of Technology (lars.pastewka@kit.edu).
Contact him directly if you have questions.

Lars Pastewka
Institute for Applied Materials (IAM)
Karlsruhe Institute of Technology (KIT)
Kaiserstrasse 12, 76131 Karlsruhe
e-mail: lars.pastewka@kit.edu
+1147 −0

File added.

Preview size limit exceeded, changes collapsed.

+143 −0
Original line number Diff line number Diff line
/* ======================================================================
   LAMMPS NetCDF dump style
   https://github.com/pastewka/lammps-netcdf
   Lars Pastewka, lars.pastewka@kit.edu

   Copyright (2011-2013) Fraunhofer IWM
   Copyright (2014) Karlsruhe Institute of Technology

   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
   ====================================================================== */

/* ----------------------------------------------------------------------
   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.
------------------------------------------------------------------------- */
#if defined(LMP_HAS_NETCDF)

#ifdef DUMP_CLASS

DumpStyle(nc,DumpNC)

#else

#ifndef LMP_DUMP_NC_H
#define LMP_DUMP_NC_H

#include "dump_custom.h"

namespace LAMMPS_NS {

const int NC_FIELD_NAME_MAX = 100;
const int DUMP_NC_MAX_DIMS  = 100;

class DumpNC : public DumpCustom {
 public:
  DumpNC(class LAMMPS *, int, char **);
  virtual ~DumpNC();
  virtual void write();

 private:
  // per-atoms quantities (positions, velocities, etc.)
  struct nc_perat_t {
    int dims;                     // number of dimensions
    int field[DUMP_NC_MAX_DIMS];  // field indices corresponding to the dim.
    char name[NC_FIELD_NAME_MAX]; // field name
    int var;                      // NetCDF variable

    bool constant;                // is this property per file (not per frame)
    int ndumped;                  // number of enties written for this prop.
  };

  typedef void (DumpNC::*funcptr_t)(void *);

  // per-frame quantities (variables, fixes or computes)
  struct nc_perframe_t {
    char name[NC_FIELD_NAME_MAX]; // field name
    int var;                      // NetCDF variable
    int type;                     // variable, fix, compute or callback
    int index;                    // index in fix/compute list
    funcptr_t compute;            // compute function
    int dim;                      // dimension
    char id[NC_FIELD_NAME_MAX];   // variable id

    bigint bigint_data;           // actual data
    double double_data;           // actual data
  };

  int framei;                  // current frame index
  int blocki;                  // current block index
  int ndata;                   // number of data blocks to expect

  bigint ntotalgr;             // # of atoms

  int n_perat;                 // # of netcdf per-atom properties
  nc_perat_t *perat;           // per-atom properties

  int n_perframe;              // # of global netcdf (not per-atom) fix props
  nc_perframe_t *perframe;     // global properties

  bool double_precision;       // write everything as double precision

  bigint n_buffer;             // size of buffer
  int *int_buffer;             // buffer for passing data to netcdf
  double *double_buffer;       // buffer for passing data to netcdf

  int ncid;

  int frame_dim;
  int spatial_dim;
  int Voigt_dim;
  int atom_dim;
  int cell_spatial_dim;
  int cell_angular_dim;
  int label_dim;

  int spatial_var;
  int cell_spatial_var;
  int cell_angular_var;

  int time_var;
  int cell_origin_var;
  int cell_lengths_var;
  int cell_angles_var;

  virtual void openfile();
  void closefile();
  virtual void write_header(bigint);
  virtual void write_data(int, double *);
  void write_prmtop();

  virtual int modify_param(int, char **);

  void ncerr(int, const char *, int);

  void compute_step(void *);
  void compute_elapsed(void *);
  void compute_elapsed_long(void *);
};

}

#endif
#endif
#endif /* defined(LMP_HAS_NETCDF) */
+1077 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading