# Updating temporal boundary conditions

Hello, i’m solving this Navier-Stokes-like equations but when i plot the solution (with Visit) i see that the boundary conditions don’t update like they should (the arrows may turn because it’s a cosine, sin function and they don’t do that), can you find the problem? Here’s the code:

``````%matplotlib inline
import numpy as np
import math
import matplotlib.pyplot as plt
from dolfin import *
from mshr import *
f=0;
g=9.81;

c_d=Constant(0.0);
α_h=Constant(0.0);

z0=1.0;
ze=1.0;
L=1.0;
om1=f/2+sqrt(f**2/4+2*g*z0/L**2);

num_steps=1000;#pasos de tiempo
T=2*pi/om1;
dt=T/num_steps;
k  = Constant(dt)
mod=10

center = Point(0.0,0.0)
horizontal_semi_axis = L
vertical_semi_axis = L
domain = Ellipse(center,
horizontal_semi_axis,
vertical_semi_axis)
resolution = 5
mesh = generate_mesh(domain,resolution)

ufile = File("SWE_results/velocity.pvd")
ηfile = File("SWE_results/elevation.pvd")

V = VectorFunctionSpace(mesh, "Lagrange", 1)
Q = FunctionSpace(mesh, "Lagrange", 1)

u = TrialFunction(V)
η = TrialFunction(Q)
v = TestFunction(V)
q = TestFunction(Q)

u_n = Function(V)
u1  = Function(V)
η_n = Function(Q)
η1  = Function(Q)

boundary_markers = MeshFunction("size_t", mesh, mesh.topology().dim()-1, 0)
class boundary(SubDomain):
def inside(self, x, on_boundary):
return on_boundary
boundary = boundary()
boundary.mark(boundary_markers,0)
t=0.0
η_D=Expression('2*ze*z0/L*(x[0]/L*cos(om1*t)-x[1]/L*sin(om1*t)-ze/2/L)', degree=2, ze=ze, z0=z0, L=L, om1=om1, t=t)
u_D=Expression(('-ze*om1*sin(om1*t)','-ze*om1*cos(om1*t)'), degree=2, ze=ze, om1=om1, t=t)

bcη = DirichletBC(Q, η_D, boundary)
bcu = DirichletBC(V, u_D, boundary)

bcη=[bcη]
bcu=[bcu]

ds = Measure('ds', domain=mesh, subdomain_data=boundary_markers)
n = FacetNormal(mesh)

h=project(Expression('z0*(1.-pow(x[0],2)/pow(L,2)-pow(x[1],2)/pow(L,2))', degree=2, z0=z0, L=L),Q)

a1 = lhs(F1)
L1 = rhs(F1)
a3 = inner(u,v)*dx

prec = "amg" if has_krylov_solver_preconditioner("amg") else "default"
parameters['krylov_solver']['nonzero_initial_guess'] = True

ufile = File("results/velocity.pvd")
ηfile = File("results/elevation.pvd")

η_i=project(Expression('2*ze*z0/L*(x[0]/L*cos(om1*t)-x[1]/L*sin(om1*t)-ze/2/L)', degree=2, ze=ze, z0=z0, L=L, om1=om1, t=0.0),Q)
u_i=project(Expression(('-ze*om1*sin(om1*t)','-ze*om1*cos(om1*t)'), degree=2, ze=ze, om1=om1, t=0.0),V)

u_n.assign(u_i)
η_n.assign(η_i)
t = 0.0
for m in range(num_steps):
η_i.t = t
A1 = assemble(a1)
[bc.apply(A1) for bc in bcu]
begin("Computing tentative velocity")
b1 = assemble(L1)
[bc.apply(A1, b1) for bc in bcu]
solve(A1, u1.vector(), b1, "bicgstab", "default")
end()

A2 = assemble(a2)
[bc.apply(A2) for bc in bcη]
begin("Computing elevation correction")
b2 = assemble(L2)
[bc.apply(A2, b2) for bc in bcη]
[bc.apply(η1.vector()) for bc in bcη]
solve(A2, η1.vector(), b2, "bicgstab", prec)
end()

A3 = assemble(a3)
begin("Computing velocity correction")
b3 = assemble(L3)
[bc.apply(A3, b3) for bc in bcu]
solve(A3, u1.vector(), b3, "bicgstab", "default")
end()

if (m%mod==0):
ufile << u1
ηfile << η1
u_n.assign(u1)
η_n.assign(η1)
t += dt``````

I don’t see anywhere in your time loop `u_D.t=t`. That’s probably the issue.

Well that’s right, thank you!