Integral über den Rand

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
MatheMagie
User
Beiträge: 7
Registriert: Montag 21. November 2016, 11:16

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
Zuletzt geändert von Anonymous am Donnerstag 22. Dezember 2016, 16:00, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Benutzeravatar
pyHoax
User
Beiträge: 84
Registriert: Donnerstag 15. Dezember 2016, 19:17

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)
MatheMagie
User
Beiträge: 7
Registriert: Montag 21. November 2016, 11:16

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)
Zuletzt geändert von Anonymous am Donnerstag 5. Januar 2017, 00:14, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Antworten