void XfemManager :: propagateFronts(bool &oAnyFronHasPropagated) { oAnyFronHasPropagated = false; for ( auto &ei: enrichmentItemList ) { bool eiHasPropagated = false; ei->propagateFronts(eiHasPropagated); if(eiHasPropagated) { oAnyFronHasPropagated = true; } #if 0 if ( giveVtkDebug() ) { GeometryBasedEI *geoEI = dynamic_cast< GeometryBasedEI * >( ei ); if ( geoEI != NULL ) { std :: vector< FloatArray >points; geoEI->giveSubPolygon(points, -0.1, 1.1); std :: vector< double >x, y; for ( size_t j = 0; j < points.size(); j++ ) { x.push_back( points [ j ].at(1) ); y.push_back( points [ j ].at(2) ); } char fileName [ 200 ]; sprintf( fileName, "crack%d.dat", ei->giveNumber() ); XFEMDebugTools :: WriteArrayToGnuplot(fileName, x, y); } } #endif } updateNodeEnrichmentItemMap(); }
void GnuplotExportModule::doOutput(TimeStep *tStep, bool forcedOutput) { if (!(testTimeStepOutput(tStep) || forcedOutput)) { return; } // Export the sum of reaction forces for each Dirichlet BC if(mExportReactionForces) { outputReactionForces(tStep); } Domain *domain = emodel->giveDomain(1); // Export output from boundary conditions if(mExportBoundaryConditions) { int numBC = domain->giveNumberOfBoundaryConditions(); for(int i = 1; i <= numBC; i++) { PrescribedGradient *presGradBC = dynamic_cast<PrescribedGradient*>( domain->giveBc(i) ); if(presGradBC != NULL) { outputBoundaryCondition(*presGradBC, tStep); } PrescribedGradientBCNeumann *presGradBCNeumann = dynamic_cast<PrescribedGradientBCNeumann*>( domain->giveBc(i) ); if(presGradBCNeumann != NULL) { outputBoundaryCondition(*presGradBCNeumann, tStep); } PrescribedGradientBCWeak *presGradBCWeak = dynamic_cast<PrescribedGradientBCWeak*>( domain->giveBc(i) ); if(presGradBCWeak != NULL) { outputBoundaryCondition(*presGradBCWeak, tStep); } } } mTimeHist.push_back( tStep->giveTargetTime() ); if(mExportXFEM) { if(domain->hasXfemManager()) { XfemManager *xMan = domain->giveXfemManager(); int numEI = xMan->giveNumberOfEnrichmentItems(); std::vector< std::vector<FloatArray> > points; for(int i = 1; i <= numEI; i++) { EnrichmentItem *ei = xMan->giveEnrichmentItem(i); ei->callGnuplotExportModule(*this, tStep); GeometryBasedEI *geoEI = dynamic_cast<GeometryBasedEI*>(ei); if(geoEI != NULL) { std::vector<FloatArray> eiPoints; geoEI->giveSubPolygon(eiPoints, 0.0, 1.0); points.push_back(eiPoints); } } outputXFEMGeometry(points); } } if(mExportMesh) { outputMesh(*domain); } if(mMonitorNodeIndex != -1) { DofManager *dMan = domain->giveDofManager(mMonitorNodeIndex); outputNodeDisp(*dMan, tStep); } }