def customReport_VRMS_Nusselt(sciBTest, mResults): # Some custom output generation and analysis vrmsTCs, vrmsResults = sciBTest.getTCRes("VRMS vs Blankenbach") nusseltTCs, nusseltResults = sciBTest.getTCRes("Nusselt vs Blankenbach") vrmsActuals = [tc.actualVal for tc in vrmsTCs] nusseltActuals = [tc.actualVal for tc in nusseltTCs] # TODO: useful if below values available on modelResults automatically. for mRes in mResults: mRes.readFrequentOutput() nSteps = [mRes.freqOutput.finalStep() for mRes in mResults] # Plotting / CSV writing thermalConvPostProc.plotResultsVsBlankenbach(BBRa, BBVrmsMin, BBVrmsMax, BBNusseltMin, BBNusseltMax, {"UW Actual":vrmsActuals}, {"UW Actual":nusseltActuals}, os.path.join(sciBTest.outputPathBase, "VrmsAndNusseltValues.png")) observables = {'Vrms':vrmsActuals, 'Vrms Passed':vrmsResults, 'Nusselt':nusseltActuals, 'Nusselt Passed':nusseltResults, 'nSteps':nSteps} msuite.writeInputsOutputsToCSV(sciBTest.mSuite, observables, "thermalDimBMResults.csv") modelplots.plotOverAllRuns(mResults, 'Nusselt', path=sciBTest.outputPathBase) modelplots.plotOverAllRuns(mResults, 'Vrms', path=sciBTest.outputPathBase) #TODO: modularise the below import plotCpuTimesAllRuns as plotCpus plotCpus.plotAllRuns(sciBTest.outputPathBase) sciBTest.mSuite.analysisImages = [ 'VrmsAndNusseltValues.png', 'Nusselt-multiRunTimeSeries.png', 'Vrms-multiRunTimeSeries.png', 'cpuTimePerStep.png'] sciBTest.mSuite.modelImagesToDisplay = [[] for runI in \ range(len(sciBTest.mSuite.runs))] lastImgSteps = [] for finalStep, mRun in zip(nSteps, sciBTest.mSuite.runs): simParams = mRun.getSimParams() lastImgSteps.append(simParams.nearestDumpStep(finalStep, finalStep)) sciBTest.mSuite.modelImagesToDisplay[0] = [ (0, ""), (700, ""), (lastImgSteps[0], "")] sciBTest.mSuite.modelImagesToDisplay[1] = [ (0, ""), (800, ""), (lastImgSteps[1], "")] sciBTest.mSuite.modelImagesToDisplay[2] = [ (0, ""), (400, ""), (lastImgSteps[2], "")] for rGen in getGenerators(["RST", "ReportLab"], sciBTest.outputPathBase): sReps.makeSciBenchReport(sciBTest, mResults, rGen, os.path.join(sciBTest.outputPathBase, "%s-report.%s" %\ (sciBTest.testName, rGen.stdExt)), imgPerRow=3)
def customReporting(sciBTest, mResults): #Plotting/CSV writing for mRes in mResults: mRes.readFrequentOutput() vrmsTCs, vrmsResults = sciBTest.getTCRes("Scaled VRMS") recSteps = [mRes.freqOutput.finalStep() for mRes in mResults] vrmsActuals = [mRes.freqOutput.getValueAtStep("Nusselt", ns) \ for mRes, ns in zip(mResults, recSteps)] nusseltActuals = [mRes.freqOutput.getValueAtStep("Nusselt", ns) \ for mRes, ns in zip(mResults, recSteps)] for mRes in mResults: mRes.freqOutput.plotOverTime('Vrms', depName='Time', show=False, path=mRes.outputPath) mRes.freqOutput.plotOverTime('Nusselt', depName='Time', show=False, path=mRes.outputPath) observables = {'Vrms':vrmsActuals, 'Vrms Pass':vrmsResults, 'Nusselt':nusseltActuals, 'nSteps':recSteps, 'ScalingFac':vrmsScalingFactors} msuite.writeInputsOutputsToCSV(sciBTest.mSuite, observables, "scalingResults.csv") # Actually for this benchmark, we want to show the VRMS and Nusselt # images generated in _each run_ sciBTest.mSuite.analysisImages = None #sciBTest.mSuite.analysisImages = [ # 'VrmsAndNusseltValues.png', # 'Nusselt-multiRunTimeSeries.png', # 'Vrms-multiRunTimeSeries.png'] sciBTest.mSuite.modelImagesToDisplay = [[] for runI in \ range(len(sciBTest.mSuite.runs))] lastImgSteps = [] for finalStep, mRun in zip(recSteps, sciBTest.mSuite.runs): simParams = mRun.getSimParams() lastImgSteps.append(simParams.nearestDumpStep(finalStep, finalStep)) for runI in range(len(mResults)): sciBTest.mSuite.modelImagesToDisplay[runI] = [ (0, "initial"), (lastImgSteps[runI], "final")] for rGen in getGenerators(["RST", "ReportLab"], sciBTest.outputPathBase): sReps.makeSciBenchReport(sciBTest, mResults, rGen, os.path.join(sciBTest.outputPathBase, "%s-report.%s" %\ (sciBTest.testName, rGen.stdExt)), imgPerRow=2)
def customReporting(sciBTest, mResults): import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt stress = {} recDeviatoricStress = {} recDeviatoricStressTCs = {} recDeviatoricStressRes = {} stressTCs = {} stressRes = {} for fComp in ["XX", "XY", "YY"]: recDeviatoricStressTCs[fComp], recDeviatoricStressRes[fComp] = sciBTest.getTCRes(\ "recoveredDeviatoricStress-%s" % fComp) stressTCs[fComp], stressRes[fComp] = sciBTest.getTCRes(\ "Stress-%s" % fComp) recDeviatoricStress[fComp] = [tc.actualVal for tc in recDeviatoricStressTCs[fComp]] stress[fComp] = [tc.actualVal for tc in stressTCs[fComp]] inIter = msuite.getVariantIndicesIter(sciBTest.mSuite.modelVariants, iterStrategy) varDicts = msuite.getVariantNameDicts(sciBTest.mSuite.modelVariants, inIter) for resI, mRes in enumerate(mResults): print "Post-process result %d" % (resI), print "with variants applied of:" print varDicts[resI] print "Value of recDeviatoricStress(%s) is (%s)\n stress(%s) is (%s)." %\ (", ".join(fCompMap), ", ".join(["%g" % recDeviatoricStress[c][resI] for c in fCompMap]), ", ".join(fCompMap), ", ".join(["%g" % stress[c][resI] for c in fCompMap])) # TO DO: #plotDeviatoricStressVsAnalytic(maxStressXX, maxStressYY, maxStressXY, # minStressXX, minStressYY, minStressXY, # {"DeviatoricStress_XX":recDeviatoricStress['XX']}, {"DeviatoricStress_YY":recDeviatoricStress['YY']}, # {"DeviatoricStress_XY":recDeviatoricStress['XY']}, # {"Stress_XX":stressXX}, {"Stress_YY":stressYY}, {"Stress_XY":stressXY}) #plt.savefig(os.path.join(mSuite.outputPathBase, # "RecoveredDeviatoricStressAndStressValues.png"), # dpi=None, facecolor='w', edgecolor='w', # orientation='portrait', papertype=None, format=None, # transparent=False) # Save to a CSV file. observables = {'recovered DeviatoricStress XX': recDeviatoricStress['XX'], 'recovered DeviatoricStress XX Passed': recDeviatoricStressRes['XX'], 'recovered DeviatoricStress YY': recDeviatoricStress['YY'], 'recovered DeviatoricStress YY Passed': recDeviatoricStressRes['YY'], 'recovered DeviatoricStress XY': recDeviatoricStress['XY'], 'recovered DeviatoricStress XY Passed': recDeviatoricStressRes['XY'], 'stress XX': stress['XX'], 'stress XX Passed': stressRes['XX'], 'stress YY': stress['YY'], 'stress YY Passed': stressRes['YY'], 'stress XY': stress['XY'], 'stress XY Passed': stressRes['XY']} msuite.writeInputsOutputsToCSV(sciBTest.mSuite, observables, "OrthotropicTestStressValues.csv") sciBTest.mSuite.analysisImages = None sciBTest.mSuite.modelImagesToDisplay = None for rGen in getGenerators(["RST", "ReportLab"], sciBTest.outputPathBase): sReps.makeSciBenchReport(sciBTest, mResults, rGen, os.path.join(sciBTest.outputPathBase, "%s-report.%s" %\ (sciBTest.testName, rGen.stdExt)))