102 lines
2.4 KiB
C++
102 lines
2.4 KiB
C++
/* ----------------------------------------------------------------------
|
|
LIGGGHTS - LAMMPS Improved for General Granular and Granular Heat
|
|
Transfer Simulations
|
|
|
|
LIGGGHTS is part of the CFDEMproject
|
|
www.liggghts.com | www.cfdem.com
|
|
|
|
Christoph Kloss, christoph.kloss@cfdem.com
|
|
Copyright 2009-2012 JKU Linz
|
|
Copyright 2012- DCS Computing GmbH, Linz
|
|
|
|
LIGGGHTS is based on LAMMPS
|
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
http://lammps.sandia.gov, Sandia National Laboratories
|
|
Steve Plimpton, sjplimp@sandia.gov
|
|
|
|
This software is distributed under the GNU General Public License.
|
|
|
|
See the README file in the top-level directory.
|
|
------------------------------------------------------------------------- */
|
|
|
|
#ifdef FIX_CLASS
|
|
|
|
FixStyle(insert/stream,FixInsertStream)
|
|
|
|
#else
|
|
|
|
#ifndef LMP_FIX_INSERT_STREAM_H
|
|
#define LMP_FIX_INSERT_STREAM_H
|
|
|
|
#include "fix_insert.h"
|
|
|
|
namespace LAMMPS_NS {
|
|
|
|
class FixInsertStream : public FixInsert {
|
|
public:
|
|
|
|
FixInsertStream(class LAMMPS *, int, char **);
|
|
~FixInsertStream();
|
|
void post_create();
|
|
void pre_delete(bool unfixflag);
|
|
|
|
virtual int setmask();
|
|
virtual void init();
|
|
virtual void end_of_step();
|
|
|
|
void init_defaults();
|
|
|
|
private:
|
|
|
|
virtual void calc_insertion_properties();
|
|
void create_mesh_copy();
|
|
|
|
void pre_insert();
|
|
|
|
int is_nearby(int);
|
|
inline void generate_random(double *pos, double rad);
|
|
inline void generate_random_global(double *pos);
|
|
|
|
void x_v_omega(int ninsert_this,int &ninserted_this,
|
|
int &ninserted_spheres_this,
|
|
double &mass_inserted_this);
|
|
|
|
double insertion_fraction();
|
|
void calc_ins_fraction();
|
|
virtual void finalize_insertion(int);
|
|
|
|
// additional insertion settings
|
|
int duration; //duration for insertion in time-steps
|
|
|
|
// stuff for insertion region
|
|
double normalvec[3];
|
|
double extrude_length;
|
|
double p_ref[3]; //reference point on face
|
|
int face_style;
|
|
double v_normal[3]; // insertion velocity projected on face
|
|
double ins_fraction;
|
|
bool do_ins_fraction_calc;
|
|
|
|
// mesh face and bounding box of extruded face
|
|
class TriMesh *ins_face;
|
|
class TriMesh *mesh_copy;
|
|
bool do_copy;
|
|
double ins_vol_xmin[3];
|
|
double ins_vol_xmax[3];
|
|
int ntry_mc;
|
|
|
|
|
|
// non-mesh face
|
|
double c_center[3], c_r; // non mesh face - currently only circle
|
|
|
|
// per particle release step
|
|
class FixPropertyAtom *fix_release;
|
|
bool i_am_integrator;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|
|
#endif
|