Andrej пре 2 година
родитељ
комит
74273fb310
4 измењених фајлова са 91 додато и 44 уклоњено
  1. 34 16
      pythonScripts/compartmentModel.ipynb
  2. 51 26
      pythonScripts/runSolver.py
  3. 3 1
      setup/setupDay.json
  4. 3 1
      setup/setupMonth.json

Разлика између датотеке није приказан због своје велике величине
+ 34 - 16
pythonScripts/compartmentModel.ipynb


+ 51 - 26
pythonScripts/runSolver.py

@@ -78,13 +78,19 @@ def getStrides(setup):
       i+=1
    return strides
 
-def getLastStepFiles(setup):
+def getFiles(setup, getAll=False):
    strides=getStrides(setup)
    readable=['t','sol','se','qt','sOut']
    #get last stride
-   step=strides[-1]
-   l=step['label']
-   return {x:'{}{}.txt'.format(x,l) for x in readable}
+   steps=[strides[-1]]
+   if getAll:
+      steps=strides
+   inFiles=[]
+   for s in steps:
+      l=s['label']
+      inFiles.append({x:'{}{}.txt'.format(x,l) for x in readable})
+   return inFiles
+
 
 def main(parFiles,jobDir,startDir='NONE'):
    model=cModel.model()
@@ -232,7 +238,7 @@ def read3D(fName):
    return new_data.reshape(shape),lut,lutSE
 
 
-def loadSolutionFromRef(setup):
+def loadSolutionFromRef(setup, loadAll=False):
    
    if setup['startFromRef']=='None':
       return 0,numpy.array([]),numpy.array([]),numpy.array([]),numpy.array([])
@@ -273,38 +279,57 @@ def loadSolutionFromRef(setup):
    fb.readFileToFile(remotePath,localPath)
    setupFile=os.path.join(localDir,f)
 
-   setup=parseSetup(setupFile)
-   inFiles=getLastStepFiles(setup)
+   setupOld=parseSetup(setupFile)
+   inFiles=getFiles(setupOld,loadAll)
 
    #inFiles.extend(parFiles)
-   for x in inFiles:
-       f=inFiles[x]
-       localPath=os.path.join(localDir,f)
-       remotePath='/'.join([remoteDir,f])
-       fb.readFileToFile(remotePath,localPath)
-
-   return loadSolutionFromDir(localDir)
-
-def loadSolutionFromDir(jobDir):
+   for fSet in inFiles:
+      for x in fSet:
+         f=fSet[x]
+         localPath=os.path.join(localDir,f)
+         remotePath='/'.join([remoteDir,f])
+         fb.readFileToFile(remotePath,localPath)
+
+   return loadSolutionFromDir(localDir,loadAll)
+
+def merge(a1,a2):
+   try: 
+      return numpy.concatenate(a1,a2)
+   except ValueError:
+      return a2
+
+def loadSolutionFromDir(jobDir,loadAll=False):
    setupFile=os.path.join(jobDir,'setup.json')
    setup=parseSetup(setupFile)
-   inFiles=getLastStepFiles(setup)
-
-   t=numpy.loadtxt(os.path.join(jobDir,inFiles['t']))
-   sol=numpy.loadtxt(os.path.join(jobDir,inFiles['sol']))
-   se=numpy.loadtxt(os.path.join(jobDir,inFiles['se']))
-   sOut,lut,lutSE=read3D(os.path.join(jobDir,inFiles['sOut']))
-   qt=numpy.loadtxt(os.path.join(jobDir,inFiles['qt']))
-   return t,sol,se,sOut,qt,lut,lutSE
+   inFiles=getFiles(setup,loadAll)
+   isFirst=True 
+   operators={x:numpy.loadtxt for x in inFiles[0]}
+   operators['sOut']=read3D
+   data={}
+   for fSet in inFiles:
+      idata={}
+      for f in fSet:
+         path=os.path.join(jobDir,fSet[f])
+         print('Loading [{}] {}'.format(os.path.isfile(path),path))
+         idata=operators[f](os.path.join(jobDir,fSet[f]))
+         if f=='sOut':
+            lut=idata[1]
+            lutSE=idata[2]
+            idata=idata[0]
+         try:
+            data[f]=numpy.concatenate((data[f],idata))
+         except KeyError:
+            data[f]=idata
+   return data['t'],data['sol'],data['se'],data['sOut'],data['qt'],lut,lutSE,setup
 
 def getStartPointFromDir(jobDir):
-   t,sol,se,sOut,qt,lut,lutSE=loadSolutionFromDir(jobDir)
+   t,sol,se,sOut,qt,lut,lutSE,setup=loadSolutionFromDir(jobDir)
    return t[-1],sol[-1],sOut[-1],lut,lutSE
 
 def getStartPoint(setup):
    if setup['startFromRef']=='None':
       return 0,numpy.array([]),numpy.array([]),[],[]
-   t,sol,se,sOut,qt,lut,lutSE=loadSolutionFromRef(setup)
+   t,sol,se,sOut,qt,lut,lutSE,oldSetup=loadSolutionFromRef(setup)
    return t[-1],sol[-1],sOut[-1],lut,lutSE
 
 if __name__=="__main__":

+ 3 - 1
setup/setupDay.json

@@ -4,4 +4,6 @@
 "mode":"IVPSimultaneous",
 "nt":201,
 "tmax":1,
-"tUnit":"day"}
+"tUnit":"day",
+"stride":{"length":1,"tUnit":"hour"}
+}

+ 3 - 1
setup/setupMonth.json

@@ -4,4 +4,6 @@
 "mode":"IVPSimultaneous",
 "nt":201,
 "tmax":1,
-"tUnit":"month"}
+"tUnit":"month",
+"stride":{"length":1,"tUnit":"day"}
+}

Неке датотеке нису приказане због велике количине промена