idaholab / moose

Multiphysics Object Oriented Simulation Environment
https://www.mooseframework.org
GNU Lesser General Public License v2.1
1.72k stars 1.04k forks source link

Different results from semantically equivalent input files #6281

Open permcody opened 8 years ago

permcody commented 8 years ago

@YaqiWang and @jortensi reported that they get different results if they have a single periodic BC that applies to several variables vs several periodic bcs each acting on a single variable. This shouldn't be the case.

@YaqiWang provided an input file to reproduce the problem. I suspect that we could make this even simpler by using auto-direction bcs but this is a good start.

[Mesh]
  type = GeneratedMesh
  dim = 2
  nx = 15
  ny = 15
  nz = 0
  xmax = 10
  ymax = 10
  zmin = 0
  zmax = 0
  elem_type = QUAD4
[]

[Functions]
  [./tr_x]
    type = ParsedFunction
    value = x
  [../]
  [./tr_y]
    type = ParsedFunction
    value = y+10
  [../]
  [./itr_x]
    type = ParsedFunction
    value = x
  [../]
  [./itr_y]
    type = ParsedFunction
    value = y-10
  [../]
[]

[Variables]
  [./u]
    order = FIRST
    family = LAGRANGE
  [../]
  [./v]
    order = FIRST
    family = LAGRANGE
  [../]
[]

[Kernels]
  [./diff]
    type = Diffusion
    variable = u
  [../]
  [./forcing]
    type = GaussContForcing
    variable = u
    y_center = 1
    x_spread = 0.25
    y_spread = 0.5
  [../]
  [./dot]
    type = TimeDerivative
    variable = u
  [../]
  [./diffv]
    type = Diffusion
    variable = v
  [../]
  [./forcingv]
    type = CoupledForce
    variable = v
    v = u
  [../]
  [./dotv]
    type = TimeDerivative
    variable = v
  [../]
[]

[BCs]
  # active = ' '
  [./Periodic]
#    [./x]
#      primary = bottom
#      secondary = top
#      transform_func = 'tr_x tr_y'
#      inv_transform_func = 'itr_x itr_y'
#      variable = 'u v'
#    [../]
    [./u]
      primary = bottom
      secondary = top
      transform_func = 'tr_x tr_y'
      inv_transform_func = 'itr_x itr_y'
      variable = u
    [../]
    [./v]
      primary = bottom
      secondary = top
      transform_func = 'tr_x tr_y'
      inv_transform_func = 'itr_x itr_y'
      variable = v
    [../]
  [../]
[]

[Executioner]
  type = Transient
  dt = 0.5
  num_steps = 10
[]

[Outputs]
  execute_on = 'timestep_end'
  exodus = true
[]
YaqiWang commented 8 years ago

Just as reminder: any progress on this issue?