Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/fem/tests/BlockPoisson3/case.sif
3206 views
! Solver two ordinary & Poisson equations of the same kind
!
! We assume eq. -\nabla^2 f = 1 and -\nabla^2 g = -1 with {f,g}=0 at boundary.
! The solution is roughly max(f)=-min(g)=0.073...

! Then make a change of variables so that u=(f-cg)/(1+c^2) and 
! v=(g+cf)/(1+c^2) and solve for u and v with given c. The resulting 
! equation has cross terms with coefficient A12=c and A22=-c. 
! The f=u+cg and g=v-cf does not depend on c but the 
! difficulty of iteration does. Simple block schemes are stable
! only for moderate values of c (|c| < 0.5).
! 
! Here is a routine for checking the results in MATC of ElmerPost:
! math f=Tempa+c*Tempb    ( 0 <= f < 0.073...)
! math g=Tempb-c*Tempa    ( -0.073... < g <= 0 )

Header
  CHECK KEYWORDS Warn
  Mesh DB "." "square"
  Include Path ""
  Results Directory ""
End

Simulation
!  Max Output Level = 5
  Coordinate System = "Cartesian"
  Coordinate Mapping(3) = 1 2 3

  Simulation Type = "Steady State"
  Steady State Max Iterations = 1
  Steady State Min Iterations = 1
  Output Intervals = 1

  Additive Namespaces = Logical Trues

!  Post File = "case.vtu"
End

Constants
  Gravity(4) = 0 -1 0 9.82
  Stefan Boltzmann = 5.67e-08
End

Body 1
  Name = "Body1"
  Equation = 1
  Material = 1
End


Equation 1
  Name = "Both"
  Active Variables(2) = Integer 1 2
End


Solver 1
  Block Solver = Logical True
  Equation = "Poisson"

  Variable 1 = TempA
  Variable 2 = TempB

  Steady State Convergence Tolerance = 1.0e-05
  Nonlinear System Relaxation Factor = Real 1.0
  Nonlinear System Max Iterations = Integer 30
  Nonlinear System Max Stepsize Tests = Integer 5
  Nonlinear System Convergence Tolerance = Real 1.0e-6
  Nonlinear System Convergence Measure = String solution

  Linear System Solver = "Iterative"
  Linear System Iterative Method = bicgstab
  Linear System Convergence Tolerance = 1.0e-8
  Linear System Max Iterations = 500
  Linear System Preconditioning = ILU1

! The block is checked internally to allow nontrivial coefficients
  Bulk Assembly Procedure 11 = File "./BlockPoissonAssembly" "BulkAssembly"
  Bulk Assembly Procedure 12 = File "./BlockPoissonAssembly" "BulkAssembly"
  Bulk Assembly Procedure 21 = File "./BlockPoissonAssembly" "BulkAssembly"
  Bulk Assembly Procedure 22 = File "./BlockPoissonAssembly" "BulkAssembly"

  Block Preconditioner = Logical False
  Block Gauss-Seidel = Logical True
!  Linear System Block Method = String "gauss-seidel"
End  

Solver 2
  Exec Solver = never

  Procedure = "SaveData" "SaveScalars"
  Filename = f.dat
  Variable 1 = TempA
  Operator 1 = min
  Variable 2 = TempA
  Operator 2 = max
End 


Material 1
  Name = "Material1"

  $ coeff = 0.3

  Conductivity 11 = Real 1.0
  Conductivity 22 = Real 1.0
  Conductivity 12 = Real $ coeff
  Conductivity 21 = Real $ -coeff

  Source 1 = Real 1.0
  Source 2 = Real -1.0
End


Boundary Condition 1
  Target Boundaries(2) = 1 2
  TempA = Real 0
  TempB = Real 0
End


Solver 1 :: Reference Norm = Real 0.46964473E-01