Hi @ngeneva
It’s a bit sad, but it took me this long to get around to testing out parameterization.
I did the following:
added “nu” as an input key for the constructed architecture (tried Fully Connected and Fourier Net)
set up parameterization using pr = Parameterization(Symbol(“nu”), (0.000003, 0.00005)) and use it as the parameterization arg for each of my constraints
It runs without error!.. until I add a monitor or inferencer that needs velocity or pressure. I run into the same type of issue that you included in your response, that it could not unroll graph.
In looking at the errors, it shows that u, v, w, and p are no longer computable variables. As a straight forward physics problem, I understand how computing any of these without a given nu value would be impossible. Because of this I tried passing Symbol(“nu”) and, separately, a single number (0.000025) as the nu value to ZeroEquation. Also, I tried changing the nu parameter range to a single value.
Here’s a simplified version of my parameter and architecture construction:
input_keys=[Key("x"), Key("y"), Key("z"), Key("nu")]
pr = Parameterization({Symbol("nu"): (0.000003, 0.00005)})
zeroEq = ZeroEquation(nu=Symbol("nu"), dim = 3, time = False, max_distance=10.0 / 2.0)
ns = NavierStokes(nu=zeroEq.equations["nu"], rho=1.0, dim=3, time=False)
flow_net = instantiate_arch(
input_keys=input_keys,
output_keys=[Key("u"), Key("v"), Key("w"), Key("p")],
cfg=cfg.arch.fully_connected,
)
nodes = (
ns.make_nodes()
+ zeroEq.make_nodes()
+ [flow_net.make_node(name="flow_network")]
)
I feel like I’m close, but I also feel like I barely understand the parameterization component so I might not be close at all.
I realize that I need to train the network initially and then can run it in eval run_mode to get results for the range of nu values. Because I am setting up nu as a parameter, do I wait to add any monitors/inferencers until I’m ready to run for evaluation?
Any help is appreciated.