v0.13.1
Public Member Functions | Public Attributes | List of all members
BCs_RVELagrange_Periodic::OpRVEBCsPeriodicRhs_givenStrain Struct Reference

#include <users_modules/homogenisation/src/BCs_RVELagrange_Periodic.hpp>

Inheritance diagram for BCs_RVELagrange_Periodic::OpRVEBCsPeriodicRhs_givenStrain:
[legend]
Collaboration diagram for BCs_RVELagrange_Periodic::OpRVEBCsPeriodicRhs_givenStrain:
[legend]

Public Member Functions

 OpRVEBCsPeriodicRhs_givenStrain (const string field_name, const string lagrang_field_name, Vec f, VectorDouble given_strain, boost::ptr_vector< MethodForForceScaling > &methods_op, RVEBC_Data_Periodic &data, CommonDataPeriodic &common_data_periodic, CommonFunctionsPeriodic &common_functions_periodic, bool ho_geometry=false)
 
PetscErrorCode doWork (int side, EntityType type, DataForcesAndSourcesCore::EntData &data)
 
- Public Member Functions inherited from BCs_RVELagrange_Periodic::OpDmatRhs
 OpDmatRhs (const string field_name, const string lagrang_field_name, RVEBC_Data_Periodic &data, CommonDataPeriodic &common_data_periodic, CommonFunctionsPeriodic &common_functions_periodic, bool ho_geometry=false)
 
PetscErrorCode calculateDmat (int side, EntityType type, DataForcesAndSourcesCore::EntData &data)
 

Public Attributes

Vec F
 
VectorDouble givenStrain
 
boost::ptr_vector< MethodForForceScaling > & methodsOp
 
VectorDouble nF
 
- Public Attributes inherited from BCs_RVELagrange_Periodic::OpDmatRhs
RVEBC_Data_PeriodicdAta
 
bool hoGeometry
 
CommonDataPeriodiccommonDataPeriodic
 
CommonFunctionsPeriodiccommonFunctionsPeriodic
 
ublas::vector< MatrixDouble > X_mat
 
MatrixDouble N_mat
 

Detailed Description

Definition at line 669 of file BCs_RVELagrange_Periodic.hpp.

Constructor & Destructor Documentation

◆ OpRVEBCsPeriodicRhs_givenStrain()

BCs_RVELagrange_Periodic::OpRVEBCsPeriodicRhs_givenStrain::OpRVEBCsPeriodicRhs_givenStrain ( const string  field_name,
const string  lagrang_field_name,
Vec  f,
VectorDouble  given_strain,
boost::ptr_vector< MethodForForceScaling > &  methods_op,
RVEBC_Data_Periodic data,
CommonDataPeriodic common_data_periodic,
CommonFunctionsPeriodic common_functions_periodic,
bool  ho_geometry = false 
)

Definition at line 675 of file BCs_RVELagrange_Periodic.hpp.

685 :
686 OpDmatRhs(
687 field_name,lagrang_field_name,data,common_data_periodic,common_functions_periodic,ho_geometry
688 ),
689 F(f), givenStrain(given_strain),methodsOp(methods_op){
690 }
constexpr auto field_name
OpDmatRhs(const string field_name, const string lagrang_field_name, RVEBC_Data_Periodic &data, CommonDataPeriodic &common_data_periodic, CommonFunctionsPeriodic &common_functions_periodic, bool ho_geometry=false)

Member Function Documentation

◆ doWork()

PetscErrorCode BCs_RVELagrange_Periodic::OpRVEBCsPeriodicRhs_givenStrain::doWork ( int  side,
EntityType  type,
DataForcesAndSourcesCore::EntData data 
)

Definition at line 694 of file BCs_RVELagrange_Periodic.hpp.

694 {
695 PetscFunctionBegin;
696 if(data.getIndices().size()==0) PetscFunctionReturn(0);
697 if(type == MBEDGE && side >= 3) PetscFunctionReturn(0); //ignore second triangel edges (cananical number 6 to 8)
698 if(type == MBTRI && side == 4) PetscFunctionReturn(0); //ignore second triangel face (cananical number 4)
699
700
701 ierr = calculateDmat(side,type,data); CHKERRQ(ierr);
702
703 ublas::vector<int> rowvec;
704 if(type == MBVERTEX) {
705 int nb=data.getIndices().size()/2; //for one face
706 rowvec.resize(nb);
707 for(int ii=0; ii<nb; ii++){
708 rowvec[ii]=data.getIndices()[ii];
709 }
710 } else{
711 rowvec=data.getIndices();
712 }
713
714 //This is to scale givenStrain vector to apply the strian in steps
715 VectorDouble scaled_given_strain;
716 scaled_given_strain.resize(6);
717 scaled_given_strain=givenStrain;
718// cout <<"givenStrain Before = "<<scaled_given_strain<<endl;
719 ierr = MethodForForceScaling::applyScale(getFEMethod(),methodsOp,scaled_given_strain); CHKERRQ(ierr);
720// cout <<"givenStrain After = "<<scaled_given_strain<<endl;
721
722// SNES snes = getFEMethod()->snes;
723// int iter;
724// SNESGetIterationNumber(snes,&iter);
725// if(iter>0) PetscFunctionReturn(0);
726
727 nF = prod(commonDataPeriodic.D_mat[0], scaled_given_strain);
728 nF*=-1;
729 ierr = VecSetValues(F,rowvec.size(),&rowvec[0],&nF[0],ADD_VALUES); CHKERRQ(ierr);
730
731 nF = prod(commonDataPeriodic.D_mat[1], scaled_given_strain);
732 nF*=-1;
733 ierr = VecSetValues(F,rowvec.size(),&rowvec[0],&nF[0],ADD_VALUES); CHKERRQ(ierr);
734
735 PetscFunctionReturn(0);
736 }
static MoFEMErrorCodeGeneric< PetscErrorCode > ierr
Definition: Exceptions.hpp:87
UBlasVector< double > VectorDouble
Definition: Types.hpp:79
PetscErrorCode calculateDmat(int side, EntityType type, DataForcesAndSourcesCore::EntData &data)
static MoFEMErrorCode applyScale(const FEMethod *fe, boost::ptr_vector< MethodForForceScaling > &methods_op, VectorDouble &nf)

Member Data Documentation

◆ F

Vec BCs_RVELagrange_Periodic::OpRVEBCsPeriodicRhs_givenStrain::F

Definition at line 671 of file BCs_RVELagrange_Periodic.hpp.

◆ givenStrain

VectorDouble BCs_RVELagrange_Periodic::OpRVEBCsPeriodicRhs_givenStrain::givenStrain

Definition at line 672 of file BCs_RVELagrange_Periodic.hpp.

◆ methodsOp

boost::ptr_vector<MethodForForceScaling>& BCs_RVELagrange_Periodic::OpRVEBCsPeriodicRhs_givenStrain::methodsOp

Definition at line 673 of file BCs_RVELagrange_Periodic.hpp.

◆ nF

VectorDouble BCs_RVELagrange_Periodic::OpRVEBCsPeriodicRhs_givenStrain::nF

Definition at line 692 of file BCs_RVELagrange_Periodic.hpp.


The documentation for this struct was generated from the following file: