//========================================================================== // Class Definition //========================================================================== // MomentumMassBackwardEulerElemSuppAlg - base class for algorithm //========================================================================== //-------------------------------------------------------------------------- //-------- constructor ----------------------------------------------------- //-------------------------------------------------------------------------- MomentumMassBackwardEulerElemSuppAlg::MomentumMassBackwardEulerElemSuppAlg( Realm &realm) : SupplementalAlgorithm(realm), bulkData_(&realm.bulk_data()), velocityN_(NULL), velocityNp1_(NULL), densityN_(NULL), densityNp1_(NULL), Gjp_(NULL), coordinates_(NULL), dt_(0.0), nDim_(realm_.spatialDimension_), useShifted_(false) { // save off fields stk::mesh::MetaData & meta_data = realm_.meta_data(); VectorFieldType *velocity = meta_data.get_field<VectorFieldType>(stk::topology::NODE_RANK, "velocity"); velocityN_ = &(velocity->field_of_state(stk::mesh::StateN)); velocityNp1_ = &(velocity->field_of_state(stk::mesh::StateNP1)); ScalarFieldType *density = meta_data.get_field<ScalarFieldType>(stk::topology::NODE_RANK, "density"); densityN_ = &(density->field_of_state(stk::mesh::StateN)); densityNp1_ = &(density->field_of_state(stk::mesh::StateNP1)); Gjp_ = meta_data.get_field<VectorFieldType>(stk::topology::NODE_RANK, "dpdx"); coordinates_ = meta_data.get_field<VectorFieldType>(stk::topology::NODE_RANK, realm_.get_coordinates_name()); // scratch vecs uNScv_.resize(nDim_); uNp1Scv_.resize(nDim_); GjpScv_.resize(nDim_); }
//========================================================================== // Class Definition //========================================================================== // ScalarMassBDF2ElemSuppAlg - CMM (BDF2) for scalar equation //========================================================================== //-------------------------------------------------------------------------- //-------- constructor ----------------------------------------------------- //-------------------------------------------------------------------------- ScalarMassBDF2ElemSuppAlg::ScalarMassBDF2ElemSuppAlg( Realm &realm, ScalarFieldType *scalarQ) : SupplementalAlgorithm(realm), bulkData_(&realm.bulk_data()), scalarQNm1_(NULL), scalarQN_(NULL), scalarQNp1_(NULL), densityNm1_(NULL), densityN_(NULL), densityNp1_(NULL), coordinates_(NULL), dt_(0.0), gamma1_(0.0), gamma2_(0.0), gamma3_(0.0), nDim_(realm_.spatialDimension_), useShifted_(false) { // save off fields stk::mesh::MetaData & meta_data = realm_.meta_data(); scalarQNm1_ = &(scalarQ->field_of_state(stk::mesh::StateNM1)); scalarQN_ = &(scalarQ->field_of_state(stk::mesh::StateN)); scalarQNp1_ = &(scalarQ->field_of_state(stk::mesh::StateNP1)); ScalarFieldType *density = meta_data.get_field<ScalarFieldType>(stk::topology::NODE_RANK, "density"); densityNm1_ = &(density->field_of_state(stk::mesh::StateNM1)); densityN_ = &(density->field_of_state(stk::mesh::StateN)); densityNp1_ = &(density->field_of_state(stk::mesh::StateNP1)); coordinates_ = meta_data.get_field<VectorFieldType>(stk::topology::NODE_RANK, realm_.get_coordinates_name()); }
//========================================================================== // Class Definition //========================================================================== // ScalarKeNSOElemSuppAlg - NSO for scalar equation //========================================================================== //-------------------------------------------------------------------------- //-------- constructor ----------------------------------------------------- //-------------------------------------------------------------------------- ScalarKeNSOElemSuppAlg::ScalarKeNSOElemSuppAlg( Realm &realm, ScalarFieldType *scalarQ, VectorFieldType *Gjq, const double turbCoeff, const double fourthFac) : SupplementalAlgorithm(realm), bulkData_(&realm.bulk_data()), scalarQNp1_(NULL), densityNp1_(NULL), pressure_(NULL), velocityNp1_(NULL), velocityRTM_(NULL), Gjq_(Gjq), Gjp_(NULL), coordinates_(NULL), nDim_(realm_.spatialDimension_), Cupw_(0.1), small_(1.0e-16), turbCoeff_(turbCoeff), fourthFac_(fourthFac) { // save off fields; for non-BDF2 gather in state N for Nm1 (gamma3_ will be zero) stk::mesh::MetaData & meta_data = realm_.meta_data(); scalarQNp1_ = &(scalarQ->field_of_state(stk::mesh::StateNP1)); pressure_ = meta_data.get_field<ScalarFieldType>(stk::topology::NODE_RANK, "pressure"); densityNp1_ = meta_data.get_field<ScalarFieldType>(stk::topology::NODE_RANK, "density"); velocityNp1_ = meta_data.get_field<VectorFieldType>(stk::topology::NODE_RANK, "velocity"); // check for mesh motion for proper velocity const bool meshMotion = realm_.does_mesh_move(); if ( meshMotion ) velocityRTM_ = meta_data.get_field<VectorFieldType>(stk::topology::NODE_RANK, "velocity_rtm"); else velocityRTM_ = meta_data.get_field<VectorFieldType>(stk::topology::NODE_RANK, "velocity"); Gjp_ = meta_data.get_field<VectorFieldType>(stk::topology::NODE_RANK, "dpdx"); coordinates_ = meta_data.get_field<VectorFieldType>(stk::topology::NODE_RANK, realm_.get_coordinates_name()); // fixed size ws_rhoVrtmScs_.resize(nDim_); ws_uNp1Scs_.resize(nDim_); ws_dpdxScs_.resize(nDim_); ws_GjpScs_.resize(nDim_); ws_dkedxScs_.resize(nDim_); }
//========================================================================== // Class Definition //========================================================================== // MomentumBuoyancySrcElemSuppAlgDep - CMM for momentum buoyancy (u-dof) //========================================================================== //-------------------------------------------------------------------------- //-------- constructor ----------------------------------------------------- //-------------------------------------------------------------------------- MomentumBuoyancySrcElemSuppAlgDep::MomentumBuoyancySrcElemSuppAlgDep( Realm &realm) : SupplementalAlgorithm(realm), bulkData_(&realm.bulk_data()), densityNp1_(NULL), coordinates_(NULL), nDim_(realm_.spatialDimension_), rhoRef_(0.0), useShifted_(false) { // save off fields stk::mesh::MetaData & meta_data = realm_.meta_data(); ScalarFieldType *density = meta_data.get_field<ScalarFieldType>(stk::topology::NODE_RANK, "density"); densityNp1_ = &(density->field_of_state(stk::mesh::StateNP1)); coordinates_ = meta_data.get_field<VectorFieldType>(stk::topology::NODE_RANK, realm_.get_coordinates_name()); // extract user parameters from solution options gravity_.resize(nDim_); gravity_ = realm_.solutionOptions_->gravity_; rhoRef_ = realm_.solutionOptions_->referenceDensity_; }