-
Notifications
You must be signed in to change notification settings - Fork 43
Open
Description
Thank you for the great contribution!
I'm trying to extend the 1D example problems to 2D, but I want to make sure my changes are in the correct place:
- Dimension variables. I changed them like so:
Domain = DomainND(["x", "y", "t"], time_var='t')
Domain.add("x", [0.0, 5.0], 100)
Domain.add("y", [0.0, 5.0], 100)
Domain.add("t", [0.0, 5.0], 100)
- My IC is zero, but for the BCs I'm not sure how to define the left and right borders, please let me know if my implementation is correct:
def func_ic(x,y):
return 0
init = IC(Domain, [func_ic], var=[['x','y']])
upper_x = dirichletBC(Domain, val=0.0, var='x', target="upper")
lower_x = dirichletBC(Domain, val=0.0, var='x', target="lower")
upper_y = dirichletBC(Domain, val=0.0, var='y', target="upper")
lower_y = dirichletBC(Domain, val=0.0, var='y', target="lower")
BCs = [init, upper_x, lower_x, upper_y, lower_y]
All of my BCs and ICs are zero. And my equation has a (forcing) time-dependent source term as such:
def f_model(u_model, x, y, t):
c = tf.constant(1, dtype = tf.float32)
Amp = tf.constant(2, dtype = tf.float32)
freq = tf.constant(1, dtype = tf.float32)
sigma = tf.constant(0.2, dtype = tf.float32)
source_x = tf.constant(0.5, dtype = tf.float32)
source_y = tf.constant(2.5, dtype = tf.float32)
GP = Amp * tf.exp(-0.5*( ((x-source_x)/sigma)**2 + ((y-source_y)/sigma)**2 ))
S = GP * tf.sin( 2 * tf.constant(math.pi) * freq * t )
u = u_model(tf.concat([x,y,t], 1))
u_x = tf.gradients(u,x)
u_xx = tf.gradients(u_x, x)
u_y = tf.gradients(u,y)
u_yy = tf.gradients(u_y, y)
u_t = tf.gradients(u,t)
u_tt = tf.gradients(u_t,t)
f_u = u_xx + u_yy - (1/c**2) * u_tt + S
return f_u
Please advise.
Looking forward to your reply!
Metadata
Metadata
Assignees
Labels
No labels