Skip to content

Commit 0e7ab95

Browse files
VARENNES RobinVARENNES Robin
authored andcommitted
Scheme SOL_adim_adapted_source added to solvable pdes.
1 parent e80b878 commit 0e7ab95

1 file changed

Lines changed: 41 additions & 11 deletions

File tree

src/model/pde.py

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -285,18 +285,48 @@ class SOL_adim_ZF(SOL_adim):
285285
def __init__(self, params):
286286
super().__init__(params)
287287

288-
# self.a_n = self.a_n.at[0, :].set(self.dens_dissip[0, :])
289-
# self.b_n = self.sigma_nphi * np.ones_like(self.k2_2d)
290288
self.a_phi = self.a_phi.at[0, :].set(- self.k2_2d[0, :])
291-
# self.b_n = self.b_n.at[0,:].set(0)
292289

290+
@register_pde("SOL_adim_adapted_source")
291+
class SOL_adim(PDE_structure):
292+
def __init__(self, params):
293+
super().__init__(params)
294+
self.Ra = params.user["pde"]["Ra"]
295+
self.Pr = params.user["pde"]["Pr"]
296+
self.Sigma = params.user["pde"]["Sigma"]
297+
298+
#TODO: reimplement gradn
299+
self.a_n = - self.k2_2d / self.Pr
300+
self.b_n = 0.
301+
self.a_phi = - self.k2_2d - self.inv_k2_2d*self.Sigma
302+
self.b_phi = self.inv_k2_2d * 1j * self.ky_2d * self.Ra / self.Pr
293303

294-
# @register_pde("SOL_ZF")
295-
# class SOL_ZF(SOL):
296-
# def __init__(self, params):
297-
# super().__init__(params)
304+
self.b_phi = self.b_phi.at[0, :].set(0)
305+
306+
# Source
307+
self.source = Source(params)
308+
self.source_dict = self.source.get_source()
298309

299-
# self.b_n = self.sigma_nphi * np.ones_like(self.k2_2d)
300-
# self.a_n = self.a_n.at[0, :].set(self.dens_dissip[0, :])
301-
# self.b_n = self.b_n.at[0,:].set(0)
302-
# self.a_phi = self.a_phi.at[0, :].set(self.phi_dissip[0, :])
310+
@partial(jit, static_argnums=(0,))
311+
def compute_rhs(self, state, t=None):
312+
# t could be removed
313+
potential_fft = state["potential_fft"]
314+
dens_fft = state["density_fft"]
315+
316+
Sn_fft = self.source_dict["density_source_fft"]
317+
Sphi_fft = self.source_dict["potential_source_fft"]
318+
319+
dens = np.real(np.fft.ifft2(dens_fft))
320+
vort = np.real(np.fft.ifft2(- self.k2_2d*potential_fft))
321+
vEx = - np.real(np.fft.ifft2(1j*self.ky_2d*potential_fft))
322+
vEy = np.real(np.fft.ifft2(1j*self.kx_2d*potential_fft))
323+
324+
nl_term_rhs_dens = - poisson_bracket(
325+
dens, vEx, vEy, 1j*self.kx_2d, 1j*self.ky_2d)
326+
nl_term_rhs_vort = - poisson_bracket(
327+
vort, vEx, vEy, 1j*self.kx_2d, 1j*self.ky_2d)
328+
329+
dens_fft_out = self.a_n*dens_fft + self.b_n*potential_fft + nl_term_rhs_dens + (Sn_fft/self.Pr)
330+
potential_fft_out = self.a_phi*potential_fft + self.b_phi*dens_fft + (nl_term_rhs_vort+Sphi_fft)*(-self.inv_k2_2d)
331+
332+
return {"density_fft": dens_fft_out, "potential_fft": potential_fft_out}

0 commit comments

Comments
 (0)