コード例 #1
0
ファイル: problem.py プロジェクト: naylor-b/CMF
            def _declareArguments(self):
                nGlobal = self.comp.varParams['size']
                localSizes = numpy.zeros(self.size, int)
                for i in xrange(self.size):
                    procPctg = 1.0 / (self.size - i)
                    remainingSize = nGlobal - numpy.sum(localSizes)
                    localSizes[i] = int(round(procPctg * remainingSize))
                i1 = numpy.sum(localSizes[:self.rank])
                i2 = numpy.sum(localSizes[:self.rank + 1])
                self._setLocalSize(localSizes[self.rank])

                self.cplFactors = []

                wrap, a, b = self.comp.compParams['struct']
                coupling = self.comp.compParams['coupling']
                numDeps = self.comp.compParams['numDeps']
                rands = numpy.array([random.random() for i in xrange(numDeps)])
                nLocal = i2 - i1
                indices, cplFactors = GCMPlib.unknownarg(wrap, a, b, i1, i2, \
                                                             nGlobal, nLocal, numDeps, \
                                                             coupling, rands)
                indices = indices.reshape(nLocal * numDeps, order='F')
                self._setArgument(self.name, self.copy, indices=indices)
                self.cplFactors.append(cplFactors)

                args = self.comp.args
                for (n, c) in args:
                    nLocal = i2 - i1
                    indices = GCMPlib.parameterarg(i1, i2, nGlobal, nLocal, \
                                                       args[n,c][0], numDeps)
                    indices = indices.reshape(nLocal * numDeps, order='F')
                    self._setArgument(n, c, indices=indices)
                    self.cplFactors.append(
                        numpy.ones((nLocal, numDeps), order='F'))

                self.cplFactors = numpy.concatenate(self.cplFactors, axis=0)
                self.i1, self.i2 = i1, i2
コード例 #2
0
ファイル: problem.py プロジェクト: naylor-b/CMF
            def _evalC(self):
                nLocal = self.i2 - self.i1
                degree = self.comp.varParams['degree']
                nonlin = self.comp.varParams['nonlin']
                scaling = self.comp.scaling
                condNum = self.comp.compParams['condNum']

                v = []
                for (n, c) in self.comp.args:
                    v.append(self.vVec([n, c]))
                v = numpy.concatenate(v)

                self.cVec()[:] = GCMPlib.evalc(nLocal, self.cplFactors.shape[1], \
                                                   self.i1, self.i2, degree, scaling, \
                                                   condNum, nonlin, self.cplFactors, v)
コード例 #3
0
ファイル: problem.py プロジェクト: naylor-b/CMF
            def _evalC(self):
                nLocal = self.i2 - self.i1
                degree = self.comp.varParams['degree']
                nonlin = self.comp.varParams['nonlin']
                scaling = self.comp.scaling
                condNum = self.comp.compParams['condNum']

                v = []
                for (n,c) in self.comp.args:
                    v.append(self.vVec([n,c]))
                v = numpy.concatenate(v)

                self.cVec()[:] = GCMPlib.evalc(nLocal, self.cplFactors.shape[1], \
                                                   self.i1, self.i2, degree, scaling, \
                                                   condNum, nonlin, self.cplFactors, v)
コード例 #4
0
ファイル: problem.py プロジェクト: naylor-b/CMF
            def _declareArguments(self):
                nGlobal = self.comp.varParams['size']
                localSizes = numpy.zeros(self.size, int)
                for i in xrange(self.size):
                    procPctg = 1.0/(self.size-i)
                    remainingSize = nGlobal - numpy.sum(localSizes)
                    localSizes[i] = int(round(procPctg * remainingSize))
                i1 = numpy.sum(localSizes[:self.rank])
                i2 = numpy.sum(localSizes[:self.rank+1])
                self._setLocalSize(localSizes[self.rank])

                self.cplFactors = []

                wrap, a, b = self.comp.compParams['struct']
                coupling = self.comp.compParams['coupling']
                numDeps = self.comp.compParams['numDeps']
                rands = numpy.array([random.random() for i in xrange(numDeps)])
                nLocal = i2 - i1
                indices, cplFactors = GCMPlib.unknownarg(wrap, a, b, i1, i2, \
                                                             nGlobal, nLocal, numDeps, \
                                                             coupling, rands)
                indices = indices.reshape(nLocal*numDeps, order='F')
                self._setArgument(self.name, self.copy, indices=indices)
                self.cplFactors.append(cplFactors)

                args = self.comp.args
                for (n,c) in args:
                    nLocal = i2 - i1
                    indices = GCMPlib.parameterarg(i1, i2, nGlobal, nLocal, \
                                                       args[n,c][0], numDeps)
                    indices = indices.reshape(nLocal*numDeps, order='F')
                    self._setArgument(n, c, indices=indices)
                    self.cplFactors.append(numpy.ones((nLocal,numDeps), order='F'))

                self.cplFactors = numpy.concatenate(self.cplFactors, axis=0)
                self.i1, self.i2 = i1, i2