The CG solver in IPPL based on finite differences shows the incorrect order of convergence for ZeroFace / ConstantFace boundary conditioned. It shows a convergence of first-order, when the expected behaviour is second-order. The correct behaviour is seen with PeriodicFace (periodic boundaries).
Results of test/solver/TestCGSolver_convergence.cpp with Zero BCs on 1 CPU:
> size, relError, residue, itCount
> 8,0.3848838397250672,1.655881804911599e-15,20
> 16,0.1953000571267898,3.39369745683647e-11,39
> 32,0.1020963026984337,1.049330542548996e-10,77
> 64,0.05253220518669296,3.565403844096526e-10,149
> 128,0.02667677375030279,9.815518987487509e-10,286
> 256,0.01344549725541648,3.019458088642568e-09,548
Results of TestCG_convergence.cpp with Periodic BCs on 1 CPU:
> size, relError, residue, itCount
> 8,0.06610999025353671,1.60905028800377e-13,4
> 16,0.01511692691447935,4.155881975730129e-11,14
> 32,0.003724276265077857,1.25090657852824e-10,28
> 64,0.000927748509094244,3.117492072817197e-10,56
> 128,0.0002317313213524396,1.014892660184294e-09,130
> 256,5.791999424903597e-05,2.825230387447997e-09,228
The CG solver in IPPL based on finite differences shows the incorrect order of convergence for ZeroFace / ConstantFace boundary conditioned. It shows a convergence of first-order, when the expected behaviour is second-order. The correct behaviour is seen with PeriodicFace (periodic boundaries).
Results of test/solver/TestCGSolver_convergence.cpp with Zero BCs on 1 CPU:
Results of TestCG_convergence.cpp with Periodic BCs on 1 CPU: