Source code for issm.loadresultsfromdisk

import os
from issm.results import results
from issm.parseresultsfromdisk import parseresultsfromdisk
import issm.MatlabFuncs as m

[docs]def loadresultsfromdisk(md,filename): """ LOADRESULTSFROMDISK - load results of solution sequence from disk file "filename" Usage: md=loadresultsfromdisk(md=False,filename=False); """ #check number of inputs/outputs if not md or not filename: raise ValueError("loadresultsfromdisk: error message.") if not md.qmu.isdakota: #Check that file exists if not os.path.exists(filename): raise OSError("binary file '%s' not found." % filename) #initialize md.results if not a structure yet if not isinstance(md.results,results): md.results=results() #load results onto model structure=parseresultsfromdisk(md,filename,not md.settings.io_gather) if not len(structure): raise RuntimeError("No result found in binary file '%s'. Check for solution crash." % filename) setattr(md.results,structure[0].SolutionType,structure) #recover solution_type from results md.private.solution=structure[0].SolutionType #read log files onto fields if os.path.exists(md.miscellaneous.name+'.errlog'): with open(md.miscellaneous.name+'.errlog','r') as f: setattr(getattr(md.results,structure[0].SolutionType)[0],'errlog',[line[:-1] for line in f]) else: setattr(getattr(md.results,structure[0].SolutionType)[0],'errlog',[]) if os.path.exists(md.miscellaneous.name+'.outlog'): with open(md.miscellaneous.name+'.outlog','r') as f: setattr(getattr(md.results,structure[0].SolutionType)[0],'outlog',[line[:-1] for line in f]) else: setattr(getattr(md.results,structure[0].SolutionType)[0],'outlog',[]) if len(getattr(md.results,structure[0].SolutionType)[0].errlog): print ("loadresultsfromcluster info message: error during solution. Check your errlog and outlog model fields.") #if only one solution, extract it from list for user friendliness if len(structure) == 1 and not m.strcmp(structure[0].SolutionType,'TransientSolution'): setattr(md.results,structure[0].SolutionType,structure[0]) #post processes qmu results if necessary else: md=postqmu(md) os.chdir('..') return md