def addKernels(db, kernels, dofMatrixName): # Kernels for i in range(0, 4): godunovStatePlus = db['nP{}'.format( i + 1)] * db[dofMatrixName] * db['godunovMatrix'] kernels.append( Kernel.Prototype('godunovState[{}]'.format(i * 4), godunovStatePlus, beta=0, prefetch=godunovStatePlus)) flux = db['pP{}'.format(i + 1)] * db['godunovState'] * db['fluxSolver'] kernels.append( Kernel.Prototype('nodalFlux[{}]'.format(i * 4), flux, prefetch=db['godunovState'])) for h in range(1, 4): godunovStateMinus = db['nM{}{}'.format( i + 1, h)] * db[dofMatrixName] * db['godunovMatrix'] kernels.append( Kernel.Prototype('godunovState[{}]'.format(i * 4 + h), godunovStateMinus, beta=1, prefetch=godunovStateMinus)) flux = db['pM{}{}'.format( i + 1, h)] * db['godunovState'] * db['fluxSolver'] kernels.append( Kernel.Prototype('nodalFlux[{}]'.format(i * 4 + h), flux, prefetch=db['godunovState']))
def addKernels(db, kernels): evaluateAtNodes = db['v'] * db['stressDOFS'] db.insert(evaluateAtNodes.flat('interpolationDOFS')) kernels.append(Kernel.Prototype('evaluateAtNodes', evaluateAtNodes, beta=0)) convertToModal = db['vInv'] * db['interpolationDOFS'] kernels.append(Kernel.Prototype('convertToModal', convertToModal, beta=0))
def addKernels(db, kernels): for depth in range(0, maxDepth + 1): subTriangleProjection = db['subTriangleProjectionMatrix{}'.format( depth)] * db['velocityDOFS'] kernels.append( Kernel.Prototype('subTriangleProjection[{}]'.format(depth), subTriangleProjection, beta=0))
(r'^fP(\d{1})$', lambda x: 18 + (int(x[0])-1)) ] DB.determineGlobalMatrixIds(globalMatrixIdRules, db) # Kernels kernels = list() db.insert(DB.MatrixInfo('reducedTimeIntegratedDofs', numberOfBasisFunctions, numberOfReducedQuantities)) db.insert(DB.MatrixInfo('reducedDofs', numberOfBasisFunctions, numberOfReducedQuantities)) db.insert(DB.MatrixInfo('mechanism', numberOfBasisFunctions, numberOfMechanismQuantities)) db.insert(DB.MatrixInfo('timeDerivative0_elastic', numberOfBasisFunctions, numberOfElasticQuantities)) volume = db['kXiDivM'] * db['reducedTimeIntegratedDofs'] * db['AstarT'] \ + db['kEtaDivM'] * db['reducedTimeIntegratedDofs'] * db['BstarT'] \ + db['kZetaDivM'] * db['reducedTimeIntegratedDofs'] * db['CstarT'] kernels.append(Kernel.Prototype('volume', volume, beta=0)) for i in range(0, 4): localFlux = db['r{}DivM'.format(i+1)] * db['fMrT{}'.format(i+1)] * db['reducedTimeIntegratedDofs'] * db['AplusT'] prefetch = None if i == 0: prefetch = db['reducedTimeIntegratedDofs'] elif i == 1: prefetch = localFlux else: prefetch = Kernel.DummyPrefetch() kernels.append(Kernel.Prototype('localFlux[{}]'.format(i), localFlux, prefetch=prefetch)) for i in range(0, 4): for j in range(0, 4): for h in range(0, 3):
DB.determineGlobalMatrixIds(globalMatrixIdRules, db) # Kernels kernels = list() db.insert( DB.MatrixInfo('timeIntegrated', numberOfBasisFunctions, numberOfQuantities)) db.insert( DB.MatrixInfo('timeDerivative0', numberOfBasisFunctions, numberOfQuantities)) volume = db['kXiDivM'] * db['timeIntegrated'] * db['AstarT'] \ + db['kEtaDivM'] * db['timeIntegrated'] * db['BstarT'] \ + db['kZetaDivM'] * db['timeIntegrated'] * db['CstarT'] kernels.append(Kernel.Prototype('volume', volume)) for i in range(0, 4): localFlux = db['r{}DivM'.format(i + 1)] * db['fMrT{}'.format( i + 1)] * db['timeIntegrated'] * db['AplusT'] prefetch = None if i == 0: prefetch = db['timeIntegrated'] elif i == 1: prefetch = localFlux else: prefetch = Kernel.DummyPrefetch() kernels.append( Kernel.Prototype('localFlux[{}]'.format(i), localFlux, prefetch=prefetch))