163void TrPlaneStress2dXFEM :: computeStiffnessMatrix(
FloatMatrix &answer, MatResponseMode rMode,
TimeStep *tStep)
165 TrPlaneStress2d :: computeStiffnessMatrix(answer, rMode, tStep);
166 XfemStructuralElementInterface :: computeCohesiveTangent(answer, tStep);
170 const double regularizationCoeff =
mRegCoeff;
172 for(
int i = 0; i < numRows; i++) {
173 if( fabs(answer(i,i)) < tol ) {
174 answer(i,i) += regularizationCoeff;
353TrPlaneStress2dXFEM :: giveCompositeExportData(std::vector< ExportRegion > &vtkPieces,
IntArray &primaryVarsToExport,
IntArray &internalVarsToExport,
IntArray cellVarsToExport,
TimeStep *tStep)
357 const int numCells =
mSubTri.size();
361 vtkPieces[0].setNumberOfCells(1);
363 int numTotalNodes = 3;
364 vtkPieces[0].setNumberOfNodes(numTotalNodes);
367 std :: vector< FloatArray >nodeCoords;
368 for(
int i = 1; i <= 3; i++) {
370 nodeCoords.push_back(x);
372 vtkPieces[0].setNodeCoords(i, x);
377 vtkPieces[0].setConnectivity(1, nodes1);
381 vtkPieces[0].setOffset(1, offset);
384 vtkPieces[0].setCellType(1, 5);
390 vtkPieces[0].setNumberOfPrimaryVarsToExport(primaryVarsToExport, numTotalNodes);
392 for (
int fieldNum = 1; fieldNum <= primaryVarsToExport.
giveSize(); fieldNum++ ) {
395 for (
int nodeInd = 1; nodeInd <= numTotalNodes; nodeInd++ ) {
397 if ( type == DisplacementVector ) {
420 u = {uTemp[0], uTemp[1], 0.0};
423 vtkPieces[0].setPrimaryVarInNode(type, nodeInd, u);
425 printf(
"fieldNum: %d\n", fieldNum);
438 vtkPieces[0].setNumberOfInternalVarsToExport(internalVarsToExport, numTotalNodes);
442 vtkPieces[0].setNumberOfCellVarsToExport(cellVarsToExport, 1);
443 for (
int i = 1; i <= cellVarsToExport.
giveSize(); i++ ) {
447 VTKXMLExportModule :: computeIPAverage(average, iRule.get(),
this, type, tStep);
449 average = {0., 0., 0., 0., 0., 0.};
453 vtkPieces[0].setCellVar( type, 1, average );
458 averageV9.
at(1) = average.
at(1);
459 averageV9.
at(5) = average.
at(2);
460 averageV9.
at(9) = average.
at(3);
461 averageV9.
at(6) = averageV9.
at(8) = average.
at(4);
462 averageV9.
at(3) = averageV9.
at(7) = average.
at(5);
463 averageV9.
at(2) = averageV9.
at(4) = average.
at(6);
465 vtkPieces[0].setCellVar( type, 1, averageV9 );
471 if (
domain->hasXfemManager() ) {
483 for (
int enrItIndex = 1; enrItIndex <= nEnrIt; enrItIndex++ ) {
485 for (
int nodeInd = 1; nodeInd <= numTotalNodes; nodeInd++ ) {
496 if ( xfemstype == XFEMST_LevelSetPhi ) {
497 double levelSet = 0.0, levelSetInNode = 0.0;
499 for(
int elNodeInd = 1; elNodeInd <= nDofMan; elNodeInd++) {
503 levelSet +=
N.at(elNodeInd)*levelSetInNode;
508 vtkPieces[0].setInternalXFEMVarInNode(field, enrItIndex, nodeInd, valueArray);
510 }
else if ( xfemstype == XFEMST_LevelSetGamma ) {
511 double levelSet = 0.0, levelSetInNode = 0.0;
513 for(
int elNodeInd = 1; elNodeInd <= nDofMan; elNodeInd++) {
517 levelSet +=
N.at(elNodeInd)*levelSetInNode;
522 vtkPieces[0].setInternalXFEMVarInNode(field, enrItIndex, nodeInd, valueArray);
524 }
else if ( xfemstype == XFEMST_NodeEnrMarker ) {
525 double nodeEnrMarker = 0.0, nodeEnrMarkerInNode = 0.0;
527 for(
int elNodeInd = 1; elNodeInd <= nDofMan; elNodeInd++) {
531 nodeEnrMarker +=
N.at(elNodeInd)*nodeEnrMarkerInNode;
536 vtkPieces[0].setInternalXFEMVarInNode(field, enrItIndex, nodeInd, valueArray);
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]