void DEM_KDEMFabric::ComputeParticleRotationalMoments(SphericContinuumParticle* element, SphericContinuumParticle* neighbor, double equiv_young, double distance, double calculation_area, double LocalCoordSystem[3][3], double ElasticLocalRotationalMoment[3], double ViscoLocalRotationalMoment[3]) { KRATOS_TRY double fabric_coefficient = element->GetProperties()[FABRIC_COEFFICIENT]; DEM_KDEM::ComputeParticleRotationalMoments(element, neighbor, equiv_young, distance, calculation_area, LocalCoordSystem, ElasticLocalRotationalMoment, ViscoLocalRotationalMoment); DEM_MULTIPLY_BY_SCALAR_3(ElasticLocalRotationalMoment, fabric_coefficient); DEM_MULTIPLY_BY_SCALAR_3(ViscoLocalRotationalMoment, fabric_coefficient); KRATOS_CATCH("") }
void DEM_KDEMFabric2D::ComputeParticleRotationalMoments(SphericContinuumParticle* element, SphericContinuumParticle* neighbor, double equiv_young, double distance, double calculation_area, double LocalCoordSystem[3][3], double ElasticLocalRotationalMoment[3], double ViscoLocalRotationalMoment[3], double equiv_poisson, double indentation) { KRATOS_TRY double fabric_coefficient = element->GetProperties()[FABRIC_COEFFICIENT]; DEM_KDEM::ComputeParticleRotationalMoments(element, neighbor, equiv_young, distance, calculation_area, LocalCoordSystem, ElasticLocalRotationalMoment, ViscoLocalRotationalMoment, equiv_poisson, indentation); DEM_MULTIPLY_BY_SCALAR_3(ElasticLocalRotationalMoment, fabric_coefficient); DEM_MULTIPLY_BY_SCALAR_3(ViscoLocalRotationalMoment, fabric_coefficient); //mContactMoment *= 1.0; // TODO: Hardcoded the reduction of a 90% of the flection in relation to KDEM KRATOS_CATCH("") }
void TaylorScheme::QuaternionCalculateMidAngularVelocities( const Quaternion<double>& Orientation, const double LocalTensorInv[3][3], const array_1d<double, 3>& angular_momentum, const double dt, const array_1d<double, 3>& InitialAngularVel, array_1d<double, 3>& FinalAngularVel) { array_1d<double, 3 > aux = InitialAngularVel; DEM_MULTIPLY_BY_SCALAR_3(aux, dt); array_1d<double, 3 > TempDeltaRotation = aux; Quaternion<double> TempOrientation; double GlobalTensorInv[3][3]; GeometryFunctions::UpdateOrientation(Orientation, TempOrientation, TempDeltaRotation); GeometryFunctions::QuaternionTensorLocal2Global(TempOrientation, LocalTensorInv, GlobalTensorInv); GeometryFunctions::ProductMatrix3X3Vector3X1(GlobalTensorInv, angular_momentum, FinalAngularVel); }