183void QTrPlaneStress2dXFEM :: computeStiffnessMatrix(
FloatMatrix &answer, MatResponseMode rMode,
TimeStep *tStep)
185 QTrPlaneStress2d :: computeStiffnessMatrix(answer, rMode, tStep);
186 XfemStructuralElementInterface :: computeCohesiveTangent(answer, tStep);
189 const double regularizationCoeff =
mRegCoeff;
191 for(
int i = 0; i < numRows; i++) {
192 if( fabs(answer(i,i)) < tol ) {
193 answer(i,i) += regularizationCoeff;
267QTrPlaneStress2dXFEM :: giveCompositeExportData(std::vector< ExportRegion > &vtkPieces,
IntArray &primaryVarsToExport,
IntArray &internalVarsToExport,
IntArray cellVarsToExport,
TimeStep *tStep)
271 const int numCells =
mSubTri.size();
275 vtkPieces[0].setNumberOfCells(1);
277 int numTotalNodes = 6;
278 vtkPieces[0].setNumberOfNodes(numTotalNodes);
281 std :: vector< FloatArray >nodeCoords;
282 for(
int i = 1; i <= 6; i++) {
284 nodeCoords.push_back(x);
286 vtkPieces[0].setNodeCoords(i, x);
290 IntArray nodes1 = {1, 2, 3, 4, 5, 6};
291 vtkPieces[0].setConnectivity(1, nodes1);
295 vtkPieces[0].setOffset(1, offset);
298 vtkPieces[0].setCellType(1, 22);
304 vtkPieces[0].setNumberOfPrimaryVarsToExport(primaryVarsToExport, numTotalNodes);
306 for (
int fieldNum = 1; fieldNum <= primaryVarsToExport.
giveSize(); fieldNum++ ) {
309 for (
int nodeInd = 1; nodeInd <= numTotalNodes; nodeInd++ ) {
311 if ( type == DisplacementVector ) {
334 u =
Vec3(uTemp[0], uTemp[1], 0.0);
337 vtkPieces[0].setPrimaryVarInNode(type, nodeInd, u);
339 printf(
"fieldNum: %d\n", fieldNum);
352 vtkPieces[0].setNumberOfInternalVarsToExport(internalVarsToExport, numTotalNodes);
356 vtkPieces[0].setNumberOfCellVarsToExport(cellVarsToExport, 1);
357 for (
int i = 1; i <= cellVarsToExport.
giveSize(); i++ ) {
361 VTKXMLExportModule :: computeIPAverage(average, iRule.get(),
this, type, tStep);
363 average =
Vec6(0., 0., 0., 0., 0., 0.);
367 vtkPieces[0].setCellVar( type, 1, average );
372 averageV9.
at(1) = average.
at(1);
373 averageV9.
at(5) = average.
at(2);
374 averageV9.
at(9) = average.
at(3);
375 averageV9.
at(6) = averageV9.
at(8) = average.
at(4);
376 averageV9.
at(3) = averageV9.
at(7) = average.
at(5);
377 averageV9.
at(2) = averageV9.
at(4) = average.
at(6);
379 vtkPieces[0].setCellVar( type, 1, averageV9 );
385 if (
domain->hasXfemManager() ) {
397 for (
int enrItIndex = 1; enrItIndex <= nEnrIt; enrItIndex++ ) {
399 for (
int nodeInd = 1; nodeInd <= numTotalNodes; nodeInd++ ) {
410 if ( xfemstype == XFEMST_LevelSetPhi ) {
411 double levelSet = 0.0, levelSetInNode = 0.0;
413 for(
int elNodeInd = 1; elNodeInd <= nDofMan; elNodeInd++) {
417 levelSet +=
N.at(elNodeInd)*levelSetInNode;
422 vtkPieces[0].setInternalXFEMVarInNode(field, enrItIndex, nodeInd, valueArray);
424 }
else if ( xfemstype == XFEMST_LevelSetGamma ) {
425 double levelSet = 0.0, levelSetInNode = 0.0;
427 for(
int elNodeInd = 1; elNodeInd <= nDofMan; elNodeInd++) {
431 levelSet +=
N.at(elNodeInd)*levelSetInNode;
436 vtkPieces[0].setInternalXFEMVarInNode(field, enrItIndex, nodeInd, valueArray);
438 }
else if ( xfemstype == XFEMST_NodeEnrMarker ) {
439 double nodeEnrMarker = 0.0, nodeEnrMarkerInNode = 0.0;
441 for(
int elNodeInd = 1; elNodeInd <= nDofMan; elNodeInd++) {
445 nodeEnrMarker +=
N.at(elNodeInd)*nodeEnrMarkerInNode;
450 vtkPieces[0].setInternalXFEMVarInNode(field, enrItIndex, nodeInd, valueArray);