void FixMoveMesh::initial_integrate(int dummy) { MultiVectorContainer<double,3,3> *v; double dt = update->dt; time_ += update->dt; time_since_setup_ += update->dt; if(move_->isFirst()) { v = mesh_->prop().getElementProperty<MultiVectorContainer<double,3,3> >("v"); v->setAll(0.); } // integration move_->initial_integrate(time_,time_since_setup_,dt); }
void FixMoveMesh::pre_delete(bool unfixflag) { // check if another fix move operates on the same mesh // which came after me in the imput script // if so, it is illegal to delete this command // without first deleting the other if(unfixflag) { int nmove = modify->n_fixes_style("move/mesh"); for(int imove = 0; imove < nmove; imove++) { FixMoveMesh* fix_move_mesh = static_cast<FixMoveMesh*>(modify->find_fix_style("move/mesh",imove)); if(fix_move_mesh != this && fix_move_mesh->fixMesh() == fixMesh() && move_->isFirst()) error->all(FLERR,"Illegal deletion of a fix move/mesh. There is another fix move/mesh command active on the same mesh. " "Superposed fix move/mesh commands must be unfixed in reverse order of creation"); } move_->pre_delete(); // do not delete property v, as a dump command may still refer to it // set velocity to zero MultiVectorContainer<double,3,3> *v; v = mesh_->prop().getElementProperty<MultiVectorContainer<double,3,3> >("v"); if(v) v->setAll(0.); // remove reference point if have one char refpt_id[200]; sprintf(refpt_id, "REFPT_%s",id); if(mesh_->prop().getGlobalProperty< VectorContainer<double,3> >(refpt_id)) mesh_->prop().removeGlobalProperty(refpt_id); } delete move_; }
void FixMoveMesh::setup(int vflag) { time_since_setup_ = 0.; reset_reference_point(); if(!mesh_->prop().getElementProperty<MultiVectorContainer<double,3,3> >("v")) { mesh_->prop().addElementProperty<MultiVectorContainer<double,3,3> >("v","comm_exchange_borders","frame_invariant","restart_no"); } move_->setup(); // do set-up in case velocity is dumped (called via set-up) if(move_->isFirst()) { MultiVectorContainer<double,3,3> *v; v = mesh_->prop().getElementProperty<MultiVectorContainer<double,3,3> >("v"); v->setAll(0.); } }