When calculating the scattered electromagnetic field resulting from an incoming field wave, general absorbing boundary conditions often require both the value of the incoming field as well as its curl (see an absorbing BC example proposed in Jin's The Finite Element Method for Electromagnetics 3rd Ed, Chapter 9). I have been using MooseParsedVectorFunction to define my incoming field for use in BC. Currently, it only provides the value of the field vector. I propose adding a vectorCurl virtual function to allow for the evaluation of the curl given user-provided curl components, similar to how the gradient is evaluated in MooseParsedGradFunction.
Description
A new vectorCurl virtual function would need to be added to the Function class, and overridden in MooseParsedVectorFunction. _curl_value and _curl_function_ptr would be added to store the input functions and point to the parsed function wrapper object for the curl. No changes should be needed in MooseParsedFunctionWrapper (I think).
Rationale
When calculating the scattered electromagnetic field resulting from an incoming field wave, general absorbing boundary conditions often require both the value of the incoming field as well as its curl (see an absorbing BC example proposed in Jin's The Finite Element Method for Electromagnetics 3rd Ed, Chapter 9). I have been using
MooseParsedVectorFunction
to define my incoming field for use in BC. Currently, it only provides the value of the field vector. I propose adding avectorCurl
virtual function to allow for the evaluation of the curl given user-provided curl components, similar to how the gradient is evaluated inMooseParsedGradFunction
.Description
A new
vectorCurl
virtual function would need to be added to theFunction
class, and overridden inMooseParsedVectorFunction
._curl_value
and_curl_function_ptr
would be added to store the input functions and point to the parsed function wrapper object for the curl. No changes should be needed inMooseParsedFunctionWrapper
(I think).Impact
New capability.