78CrackExportModule :: doOutput(
TimeStep *tStep,
bool forcedOutput)
84 double crackLength_projection;
85 double crackLength_sqrt;
96 double weight, totWeight;
100 std::vector< FloatArray > pointsVector;
104 int csNumber = elem->giveCrossSection()->giveNumber();
109 crackLength_projection = 0.;
110 crackLength_sqrt = 0.;
113 for (
int i = 0; i < elem->giveNumberOfIntegrationRules(); i++ ) {
116 for (
auto &gp: *iRule ) {
119 elem->giveIPValue(tmp, gp, IST_DamageScalar, tStep);
121 elem->giveIPValue(strainVector, gp, IST_StrainTensor, tStep);
125 weight = elem->computeVolumeAround(gp);
128 elem->giveIPValue(tmp, gp, IST_CharacteristicLength, tStep);
129 elementLength = tmp.
at(1);
130 elem->giveIPValue(crackVector, gp, IST_CrackVector, tStep);
131 crackVector.
times(1./damage);
135 princDir.
at(1,1) = crackVector.
at(2);
136 princDir.
at(2,1) = -crackVector.
at(1);
138 princDir.
at(1,2) = crackVector.
at(1);
139 princDir.
at(2,2) = crackVector.
at(2);
142 strainVector = {strainVector(0), strainVector(1), strainVector(6)*0.5};
144 StructuralMaterial :: givePlaneStressVectorTranformationMtrx(rotMatrix, princDir,
false);
147 crackWidth += elementLength * princStrain.
at(1) * damage * weight;
148 crackLength_projection += elem->giveCharacteristicSize(gp, crackVector,
ECSM_Projection) * weight;
151 if ( crackVector.
at(1) != 0. ) {
152 double contrib = atan( crackVector.
at(2) / crackVector.
at(1) ) * 180./3.1415926;
153 if ( contrib < 0. ) {
155 }
else if ( contrib > 180. ) {
158 crackAngle += contrib * weight;
160 crackAngle += 90. * weight;
166 double length3 = elem->giveCharacteristicSize(gp, crackVector,
ECSM_Oliver1);
168 double length5 = elem->giveCharacteristicSize(gp, crackVector,
ECSM_Projection);
173 crackLength_projection += 0.;
174 crackLength_sqrt += 0.;
179 if ( totWeight > 0. ) {
180 crackWidth /= totWeight;
181 crackLength_projection /= totWeight;
182 crackLength_sqrt /= totWeight;
183 crackAngle /= totWeight;
188 pointsVector.emplace_back({
192 crackLength_projection,
200 std :: stringstream strCracks;
std ::vector< std ::unique_ptr< Element > > & giveElements()