33
44from pySDC .core .Errors import ParameterError
55from pySDC .core .Problem import ptype
6- from pySDC .implementations .datatype_classes .petsc_dmda_grid import petsc_data , rhs_2comp_petsc_data , rhs_imex_petsc_data
6+ from pySDC .implementations .datatype_classes .petsc_vec import petsc_vec , petsc_vec_imex , petsc_vec_comp2
77
88
99class GS_full (object ):
@@ -235,7 +235,7 @@ class petsc_grayscott_multiimplicit(ptype):
235235 Problem class implementing the multi-implicit 2D Gray-Scott reaction-diffusion equation with periodic BC and PETSc
236236 """
237237
238- def __init__ (self , problem_params , dtype_u = petsc_data , dtype_f = rhs_2comp_petsc_data ):
238+ def __init__ (self , problem_params , dtype_u = petsc_vec , dtype_f = petsc_vec_comp2 ):
239239 """
240240 Initialization routine
241241
@@ -404,10 +404,10 @@ def eval_f(self, u, t):
404404 """
405405
406406 f = self .dtype_f (self .init )
407- self .A .mult (u . values , f .comp1 . values )
407+ self .A .mult (u , f .comp1 )
408408
409- fa = self .init .getVecArray (f .comp2 . values )
410- xa = self .init .getVecArray (u . values )
409+ fa = self .init .getVecArray (f .comp2 )
410+ xa = self .init .getVecArray (u )
411411 for i in range (self .xs , self .xe ):
412412 for j in range (self .ys , self .ye ):
413413 fa [i , j , 0 ] = - xa [i , j , 0 ] * xa [i , j , 1 ] ** 2 + self .params .A * (1 - xa [i , j , 0 ])
@@ -431,7 +431,7 @@ def solve_system_1(self, rhs, factor, u0, t):
431431
432432 me = self .dtype_u (u0 )
433433 self .ksp .setOperators (self .Id - factor * self .A )
434- self .ksp .solve (rhs . values , me . values )
434+ self .ksp .solve (rhs , me )
435435
436436 self .ksp_ncalls += 1
437437 self .ksp_itercount += self .ksp .getIterationNumber ()
@@ -460,7 +460,7 @@ def solve_system_2(self, rhs, factor, u0, t):
460460 J = self .init .createMatrix ()
461461 self .snes .setJacobian (target .formJacobian , J )
462462
463- self .snes .solve (rhs . values , me . values )
463+ self .snes .solve (rhs , me )
464464
465465 self .snes_ncalls += 1
466466 self .snes_itercount += self .snes .getIterationNumber ()
@@ -481,7 +481,7 @@ def u_exact(self, t):
481481 assert t == 0 , 'ERROR: u_exact is only valid for the initial solution'
482482
483483 me = self .dtype_u (self .init )
484- xa = self .init .getVecArray (me . values )
484+ xa = self .init .getVecArray (me )
485485 for i in range (self .xs , self .xe ):
486486 for j in range (self .ys , self .ye ):
487487 xa [i , j , 0 ] = 1.0 - 0.5 * np .power (np .sin (np .pi * i * self .dx / 100 ) *
@@ -497,7 +497,7 @@ class petsc_grayscott_fullyimplicit(petsc_grayscott_multiimplicit):
497497 Problem class implementing the fully-implicit 2D Gray-Scott reaction-diffusion equation with periodic BC and PETSc
498498 """
499499
500- def __init__ (self , problem_params , dtype_u = petsc_data , dtype_f = petsc_data ):
500+ def __init__ (self , problem_params , dtype_u = petsc_vec , dtype_f = petsc_vec ):
501501 """
502502 Initialization routine
503503
@@ -524,10 +524,10 @@ def eval_f(self, u, t):
524524 """
525525
526526 f = self .dtype_f (self .init )
527- self .A .mult (u . values , f . values )
527+ self .A .mult (u , f )
528528
529- fa = self .init .getVecArray (f . values )
530- xa = self .init .getVecArray (u . values )
529+ fa = self .init .getVecArray (f )
530+ xa = self .init .getVecArray (u )
531531 for i in range (self .xs , self .xe ):
532532 for j in range (self .ys , self .ye ):
533533 fa [i , j , 0 ] += - xa [i , j , 0 ] * xa [i , j , 1 ] ** 2 + self .params .A * (1 - xa [i , j , 0 ])
@@ -558,7 +558,7 @@ def solve_system(self, rhs, factor, u0, t):
558558 J = self .init .createMatrix ()
559559 self .snes .setJacobian (target .formJacobian , J )
560560
561- self .snes .solve (rhs . values , me . values )
561+ self .snes .solve (rhs , me )
562562
563563 self .snes_ncalls += 1
564564 self .snes_itercount += self .snes .getIterationNumber ()
@@ -571,7 +571,7 @@ class petsc_grayscott_semiimplicit(petsc_grayscott_multiimplicit):
571571 Problem class implementing the semi-implicit 2D Gray-Scott reaction-diffusion equation with periodic BC and PETSc
572572 """
573573
574- def __init__ (self , problem_params , dtype_u = petsc_data , dtype_f = rhs_imex_petsc_data ):
574+ def __init__ (self , problem_params , dtype_u = petsc_vec , dtype_f = petsc_vec_imex ):
575575 """
576576 Initialization routine
577577
@@ -598,10 +598,10 @@ def eval_f(self, u, t):
598598 """
599599
600600 f = self .dtype_f (self .init )
601- self .A .mult (u . values , f .impl . values )
601+ self .A .mult (u , f .impl )
602602
603- fa = self .init .getVecArray (f .expl . values )
604- xa = self .init .getVecArray (u . values )
603+ fa = self .init .getVecArray (f .expl )
604+ xa = self .init .getVecArray (u )
605605 for i in range (self .xs , self .xe ):
606606 for j in range (self .ys , self .ye ):
607607 fa [i , j , 0 ] = - xa [i , j , 0 ] * xa [i , j , 1 ] ** 2 + self .params .A * (1 - xa [i , j , 0 ])
@@ -625,7 +625,7 @@ def solve_system(self, rhs, factor, u0, t):
625625
626626 me = self .dtype_u (u0 )
627627 self .ksp .setOperators (self .Id - factor * self .A )
628- self .ksp .solve (rhs . values , me . values )
628+ self .ksp .solve (rhs , me )
629629
630630 self .ksp_ncalls += 1
631631 self .ksp_itercount += self .ksp .getIterationNumber ()
0 commit comments