Poissons Equation with Point source
이전 댓글 표시
Hello everyone :)
in matlab´s Example "Poisson's Equation with Point Source and Adaptive Mesh Refinement" ist a function "circlef" mentioned, that create the point source by returning 1/area for the triangle that contains the origin and zero elsewhere. How do I create such a funtion? Meaning how can I define f differently on specific traingles in the mesh?
Thanks in advance
Hannah
댓글 수: 2
Dyuman Joshi
2024년 2월 7일
"How do I create such a funtion?"
Use the description given as its definition.
"Meaning how can I define f differently on specific traingles in the mesh?"
Hannah Burmester
2024년 2월 7일
답변 (1개)
You can use inpolygon to see if the origin is inside the triangle or not and polyarea to calculate the area of the triangle -
Note - inpolygon() also considers the points that lie ON the edges of the polygon (see the case below).
x = [-2 -1 1];
y = [-2 1 -1];
plot(polyshape(x,y))
hold on
plot(0, 0, '.r', 'MarkerSize', 10)
if inpolygon(0, 0, x, y)
f = 1./polyarea(x,y);
else
f = 0;
end
f
This can be condensed to -
F = inpolygon(0, 0, x, y)./polyarea(x,y)
댓글 수: 5
If the criteria you use does not involve the points ON the edge to be counted, use this -
x = [-2 -1 1];
y = [-2 1 -1];
[in,on] = inpolygon(0, 0, x, y)
if in & ~on
f = 1./polyarea(x,y);
else
f = 0;
end
f
Which, again, can be condensed to -
F = (in & ~on)./polyarea(x,y)
Dyuman Joshi
2024년 2월 12일
Torsten
2024년 2월 12일
I'd simply edit the mentionned MATLAB function:
edit circlef
Isn't that possible ?
Hannah Burmester
2024년 2월 12일
From a cursory glance, I'd say my solution is simpler than whatever is being done here -
type circlef.m
카테고리
도움말 센터 및 File Exchange에서 Electromagnetics에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
