コード例 #1
0
ファイル: DynamicRupture.py プロジェクト: wangyf/SeisSol
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']))
コード例 #2
0
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))
コード例 #3
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))
コード例 #4
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):
コード例 #5
0
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))