Skip to content

Add LinearFVFunctorRadiativeBC — second-order radiative heat flux BC for LinearFV#32406

Open
deOliveira-R wants to merge 5 commits intoidaholab:nextfrom
deOliveira-R:add-linearfv-functor-radiative-bc
Open

Add LinearFVFunctorRadiativeBC — second-order radiative heat flux BC for LinearFV#32406
deOliveira-R wants to merge 5 commits intoidaholab:nextfrom
deOliveira-R:add-linearfv-functor-radiative-bc

Conversation

@deOliveira-R
Copy link

Summary

  • Adds LinearFVFunctorRadiativeBC, the LinearFV counterpart of FVFunctorRadiativeBC.
  • The nonlinear radiative flux $q = \sigma\varepsilon(T^4 - T_\infty^4)$ is Newton-linearized around the extrapolated boundary face temperature $T_{b,\text{old}} = T_P + \nabla T \cdot \mathbf{d}_{cf}$, yielding a Robin-type condition with second-order spatial accuracy.
  • Inherits from LinearFVAdvectionDiffusionFunctorRobinBCBase; non-orthogonal corrections and all matrix/RHS contributions are handled by the Robin base class.
  • Convergence to the nonlinear solution is driven by pseudo-transient Picard iteration.

Test plan

  • Regression test: hot-body cooling converges to correct steady-state temperature distribution
  • Limiting behavior: equilibrium case ($T_L = T_\infty$) produces uniform temperature and zero net flux
  • MMS convergence test: quadratic manufactured solution with constant body force confirms $O(h^2)$ spatial accuracy (measured convergence rate: 2.005)

🤖 Generated with Claude Code

deOliveira-R and others added 2 commits February 28, 2026 00:55
Implements a Newton-linearized radiative heat flux boundary condition
for the linear finite volume framework. The nonlinear flux
q = sigma * eps * (T^4 - Tinf^4) is linearized around the current
cell-center temperature at each assembly step, providing implicit
matrix and explicit RHS contributions. Picard convergence to the
nonlinear solution is driven by pseudo-transient stepping or a
coupled nonlinear solve.

Includes header, source, documentation, and two regression tests
(hot-body cooling and thermal equilibrium verification).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaces the first-order cell-center linearization with a Robin-type
formulation that linearizes the radiative flux around the extrapolated
boundary face temperature T_b_old = T_P + grad(T)*d_cf. This eliminates
the O(h) truncation error in the boundary flux, achieving second-order
spatial accuracy consistent with the interior FV scheme.

Implementation inherits from LinearFVAdvectionDiffusionFunctorRobinBCBase,
providing getAlpha/getBeta/getGamma where alpha=k, beta=4*sigma*eps*T_b_old^3,
and gamma=sigma*eps*(3*T_b_old^4 + T_inf^4). Non-orthogonal corrections
and value/gradient contributions are handled by the Robin base class.

Adds MMS convergence test verifying O(h^2) rate (measured rate: 2.005)
using a quadratic manufactured solution with a constant body force.
Updates gold file and documentation accordingly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…e number

- Replace unicode middle dot in conductivity unit comment with ASCII hyphen (W/(m-K))
- Replace placeholder '#XXXXX' with actual PR number 'idaholab#32406' in test spec

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@moosebuild
Copy link
Contributor

Job Precheck, step Clang format on 61b8372 wanted to post the following:

Your code requires style changes.

A patch was auto generated and copied here
You can directly apply the patch by running, in the top level of your repository:

curl -s https://mooseframework.inl.gov/docs/PRs/32406/clang_format/style.patch | git apply -v

Alternatively, with your repository up to date and in the top level of your repository:

git clang-format 8c713c9cb4107774ffb3a07d73b8b5d6a26d784d

@moosebuild
Copy link
Contributor

Job Precheck, step Python: black format on 61b8372 wanted to post the following:

Python black formatting

Your code requires style changes.

A patch was generated and copied here.

You can directly apply the patch by running the following at the top level of your repository:

curl -s https://mooseframework.inl.gov/docs/PRs/32406/black/black.patch | git apply -v

Alternatively, you can run the following at the top level of your repository:

black --config pyproject.toml .

- clang-format: rewrap long lines in comment block and parameter description
- black: convert single quotes to double quotes, reformat long subprocess call

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@moosebuild
Copy link
Contributor

Job Test, step Results summary on 865462f wanted to post the following:

Framework test summary

Compared against 8c713c9 in job civet.inl.gov/job/3611922.

No change

Modules test summary

Compared against 8c713c9 in job civet.inl.gov/job/3611922.

Added tests

Test Time (s) Memory (MB)
heat_transfer/test:linearfvbcs/linear_fv_functor_radiative_bc.second_order_convergence 4.20 0.00
heat_transfer/test:linearfvbcs/linear_fv_functor_radiative_bc.equilibrium 0.92 0.00
heat_transfer/test:linearfvbcs/linear_fv_functor_radiative_bc.hot_body_cooling 0.81 0.00

@moosebuild
Copy link
Contributor

Job Documentation, step Docs: sync website on 865462f wanted to post the following:

View the site here

This comment will be updated on new commits.

…nvergence test

The TestHarness sets MOOSE_PYTHONUNITTEST_EXECUTABLE to the correct executable
path when running tests. Using only the hardcoded relative path fails in
environments where the path layout differs (e.g., combined app CI builds).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants