7
7
8
8
import numpy as np
9
9
from PyNucleus_base import solverFactory
10
- from PyNucleus_base .performanceLogger import PLogger
11
10
from PyNucleus_base .utilsFem import (classWithComputedDependencies ,
12
11
problem ,
13
12
generates )
@@ -358,7 +357,8 @@ def __init__(self, driver, continuumProblem):
358
357
359
358
def setDriverArgs (self ):
360
359
p = self .driver .addGroup ('solver' )
361
- self .setDriverFlag ('solverType' , acceptedValues = ['cg-mg' , 'gmres-mg' , 'lu' , 'mg' , 'cg-jacobi' , 'gmres-jacobi' ], help = 'solver for the linear system' , group = p )
360
+ self .setDriverFlag ('solverType' , acceptedValues = ['cg-mg' , 'gmres-mg' , 'lu' , 'mg' ,
361
+ 'cg-jacobi' , 'gmres-jacobi' ], help = 'solver for the linear system' , group = p )
362
362
self .setDriverFlag ('maxiter' , 100 , help = 'maximum number of iterations' , group = p )
363
363
self .setDriverFlag ('tol' , 1e-6 , help = 'solver tolerance' , group = p )
364
364
@@ -483,7 +483,8 @@ def buildHierarchy(self,
483
483
484
484
self .hierarchy = hierarchy
485
485
if kernel is not None :
486
- assert 2 * self .finalMesh .h < kernel .horizon .value , "Please choose horizon bigger than two mesh sizes. h = {}, horizon = {}" .format (self .finalMesh .h , kernel .horizon .value )
486
+ assert 2 * self .finalMesh .h < kernel .max_horizon , ("Please choose horizon bigger than two mesh sizes. " +
487
+ "h = {}, horizon = {}" ).format (self .finalMesh .h , kernel .horizon .value )
487
488
488
489
@generates ('adjointHierarchy' )
489
490
def buildAdjointHierarchy (self , hierarchy ):
@@ -522,7 +523,8 @@ def buildBCoperator(self, dmInterior, dmBC,
522
523
assemblyParams ['dense' ] = matrixFormat == 'dense'
523
524
assemblyParams ['matrixFormat' ] = matrixFormat
524
525
assemblyParams ['tag' ] = tag
525
- self .A_BC = getFracLapl (dmInterior , dm2 = dmBC , ** assemblyParams )
526
+ with self .timer ('build BC operator' ):
527
+ self .A_BC = getFracLapl (dmInterior , dm2 = dmBC , ** assemblyParams )
526
528
else :
527
529
self .A_BC = None
528
530
@@ -540,8 +542,9 @@ def getOperators(self, hierarchy):
540
542
541
543
@generates ('A_derivative' )
542
544
def getDerivativeOperator (self , kernel , dmInterior , matrixFormat , eta , target_order ):
543
- self .A_derivative = dmInterior .assembleNonlocal (kernel .getDerivativeKernel (derivative = 1 ), matrixFormat = matrixFormat , params = {'eta' : eta ,
544
- 'target_order' : target_order })
545
+ self .A_derivative = dmInterior .assembleNonlocal (kernel .getDerivativeKernel (derivative = 1 ),
546
+ matrixFormat = matrixFormat , params = {'eta' : eta ,
547
+ 'target_order' : target_order })
545
548
546
549
@generates ('b' )
547
550
def buildRHS (self , rhs , dim , A_BC , dmBC , dirichletData , boundaryCondition , solverType , dmInterior , hierarchy ):
@@ -669,7 +672,7 @@ def adjointSolve(self, b, dm, dmInterior, P_interior, adjointSolver, tol, maxite
669
672
self .adjointModelSolution = stationaryModelSolution (self , u , ** data )
670
673
671
674
def report (self , group ):
672
- group .add ('kernel' ,self .continuumProblem .kernel )
675
+ group .add ('kernel' , repr ( self .continuumProblem .kernel ) )
673
676
group .add ('h' , self .finalMesh .h )
674
677
group .add ('hmin' , self .finalMesh .hmin )
675
678
if self .continuumProblem .kernel is not None :
@@ -855,6 +858,8 @@ def setInitialCondition(self, dm, initial):
855
858
856
859
if self .doMovie :
857
860
if self ._driver .isMaster :
861
+ from PyNucleus_base .plot_utils import movieCreator
862
+
858
863
outputFolder = self .movieFolder
859
864
movie_kwargs = {}
860
865
if self .continuumProblem .dim == 2 :
0 commit comments