# How to parameterize coefficients of PDEs?

Hello,
Does anyone know how to parameterize the coefficients of PDEs?
For example, I need to parameterize the vicosity or density of the fluid for Navier-Stokes equation?

How to make changes to the NS node defined below or create the corresponding flow network?

``````ze = ZeroEquation(nu=nd_fluid_viscosity, dim=3, time=False, max_distance=0.12)
ns = NavierStokes(nu=ze.equations["nu"], rho=nd_fluid_density, dim=3, time=False)
navier_stokes_nodes = ns.make_nodes() + ze.make_nodes()
``````

Hi @cxi1

You can parameterize a PDE using a SymPy Symbol. While maybe not obvious, the 1D wave equation example can show how to go about this (here `t` is the parameterized variable). You can take these ideas and extend them to coefficients of other PDEs.

Note inside the Wave equation we have:

``````def __init__(self, c=1.0):
# coordinates
x = Symbol("x")
# time
t = Symbol("t")

# make input variables
input_variables = {"x": x, "t": t}
.....
# set equations
self.equations = {}
self.equations["wave_equation"] = u.diff(t, 2) - (c**2 * u.diff(x)).diff(x)
``````

in the problem `t` is never predicted by the model but rather injected using the `parameterization` in the constraints. E.g.

``````interior = PointwiseInteriorConstraint(
nodes=nodes,
geometry=geo,
outvar={"wave_equation": 0},
batch_size=cfg.batch_size.interior,
parameterization=time_range,  # time_range = {t_symbol: (0, 2 * L)}
)
``````
1 Like

Thank you so much, Nicholas, that is very helpful to me

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.