void MatlabExportModule :: doOutput(TimeStep *tStep) { FILE *FID; FID = giveOutputStream(tStep); fprintf( FID, "function [mesh area data specials]=%s\n\n", functionname.c_str() ); if ( exportMesh ) { doOutputMesh(tStep, FID); } else { fprintf(FID, "\tmesh=[];\n"); } if ( exportData ) { doOutputData(tStep, FID); } else { fprintf(FID, "\tdata=[];\n"); } if ( exportArea ) { computeArea(); fprintf(FID, "\tarea.xmax=%f;\n", xmax); fprintf(FID, "\tarea.xmin=%f;\n", xmin); fprintf(FID, "\tarea.ymax=%f;\n", ymax); fprintf(FID, "\tarea.ymin=%f;\n", ymin); fprintf(FID, "\tarea.area=%f;\n", Area); } else { fprintf(FID, "\tarea=[];\n"); } if ( exportSpecials ) { if ( !exportArea ) { computeArea(); } doOutputSpecials(tStep, FID); } else { fprintf(FID, "\tspecials=[];\n"); } fprintf(FID, "\nend\n"); fclose(FID); }
void MatlabExportModule :: doOutput(TimeStep *tStep, bool forcedOutput) { if ( !( testTimeStepOutput(tStep) || forcedOutput ) ) { return; } int nelem = this->elList.giveSize(); if ( nelem == 0 ) { // no list given, export all elements this->elList.enumerate(this->emodel->giveDomain(1)->giveNumberOfElements()); } FILE *FID; FID = giveOutputStream(tStep); Domain *domain = emodel->giveDomain(1); ndim=domain->giveNumberOfSpatialDimensions(); // Output header fprintf( FID, "%%%% OOFEM generated export file \n"); fprintf( FID, "%% Output for time %f\n", tStep->giveTargetTime() ); fprintf( FID, "function [mesh area data specials ReactionForces IntegrationPointFields]=%s\n\n", functionname.c_str() ); if ( exportMesh ) { doOutputMesh(tStep, FID); } else { fprintf(FID, "\tmesh=[];\n"); } if ( exportData ) { doOutputData(tStep, FID); } else { fprintf(FID, "\tdata=[];\n"); } if ( exportArea ) { computeArea(tStep); fprintf(FID, "\tarea.xmax=%f;\n", smax.at(0)); fprintf(FID, "\tarea.xmin=%f;\n", smin.at(0)); fprintf(FID, "\tarea.ymax=%f;\n", smax.at(1)); fprintf(FID, "\tarea.ymin=%f;\n", smin.at(1)); if ( ndim == 2 ) { fprintf(FID, "\tarea.area=%f;\n", Area); fprintf(FID, "\tvolume=[];\n"); } else { fprintf(FID, "\tarea.zmax=%f;\n", smax.at(2)); fprintf(FID, "\tarea.zmin=%f;\n", smin.at(2)); fprintf(FID, "\tarea.area=[];\n"); fprintf(FID, "\tarea.volume=%f;\n", Volume); for (size_t i=0; i<this->partName.size(); i++) { fprintf(FID, "\tarea.volume_%s=%f;\n", partName.at(i).c_str(), partVolume.at(i)); } } } else { fprintf(FID, "\tarea.area=[];\n"); fprintf(FID, "\tarea.volume=[];\n"); } if ( exportSpecials ) { if ( !exportArea ) { computeArea(tStep); } doOutputSpecials(tStep, FID); } else { fprintf(FID, "\tspecials=[];\n"); } // Reaction forces if ( exportReactionForces ) { doOutputReactionForces(tStep, FID); } else { fprintf(FID, "\tReactionForces=[];\n"); } // Internal variables in integration points if ( exportIntegrationPointFields ) { doOutputIntegrationPointFields(tStep, FID); } else { fprintf(FID, "\tIntegrationPointFields=[];\n"); } // Homogenized quantities if ( exportHomogenizeIST ) { doOutputHomogenizeDofIDs(tStep, FID); } fprintf(FID, "\nend\n"); fclose(FID); }