Seite 1 von 1

Integral über den Rand

Verfasst: Donnerstag 22. Dezember 2016, 15:30
von MatheMagie
Hallo zusammen,

Zunächst weiß ich leider nicht, wie man im Forum mathematische Formeln erzeugt,
deswegen leider hier als Text.

Integral _ (Neumann-Rand) u^2 * ds

Also das Integral von u^2 auf dem Neumannrand ausgewertet.
Dies kann man als L2 Norm auffassen und somit

|| u^2 ||^2 _ Neumannrand

Ist es möglich dies in Python umzusetzen?
Wenn ja, wie ?

Ich habe bisher folgendes gefunden.
dolfin.fem.norms.norm(v, norm_type='L2', mesh=None)

Es ist also möglich beispielsweise norm(u, 'L2', mesh) zu schreiben.
Allerdings möchte ich die Norm ja nur auf dem Rand und nicht auf meinem gesamten mesh.

Code: Alles auswählen

n = 50
mesh = UnitSquareMesh(n,n)
V = FunctionSpace(mesh, "Lagrange, 1")

p = Expression('5.0')
u = Function(V)
u.interpolate(p)

Vielen Dank
MatheMagie

Re: Integral über den Rand

Verfasst: Sonntag 25. Dezember 2016, 22:54
von pyHoax
MatheMagie hat geschrieben: || u^2 ||^2 _ Neumannrand

Ist es möglich dies in Python umzusetzen?
Wenn ja, wie ?
Ich hab zwar keine Ahnung vom Neumannrand.... aber möglicherweise diese Webseite: http://www.scientificpython.net/pyblog/ ... erent-ways


Google-tip:
Erst Neumann-Rand im Wikipedia suchen, dann denn Begriff 'Neumann boundary condition' aus dem englischen wikipedia Artikel genommen und zusammen mit +python in Google eingegeben. (eventuell auch noch googles Spracheinstellung auf english umsetzen)

Re: Integral über den Rand

Verfasst: Mittwoch 4. Januar 2017, 23:05
von MatheMagie
Ich habe eine Lösung gefunden.

Code: Alles auswählen

class Right(SubDomain):
	def inside(self, x, on_boundary):
		return on_boundary and near(x[0], 1)
rn 	= Expression("0.", degree=1)

boundaries = FacetFunction("size_t", mesh)
boundaries.set_all(0)
rightbound = Right()
rightbound.mark(boundaries, 1)
ds = Measure('ds', domain=mesh, subdomain_data=boundaries)