1:09 PM
I'm going to explain, illustrate and prove pertinence of my comment "Mathematicaly,The periodic boundary condition u[2,y]==u[0,y] is not enough to have unicity of the solution"
This comment is the first comment following OP's question here. Don't forget to expand all comments to see it.
The goal is to show 1) that it is true 2) that it is not a useless academic consideration 3) to make the comment more understandable.
(* beyond this point : visualization of the solution sol *) myOptions01 = {ColorFunction -> "TemperatureMap", AspectRatio -> Automatic , Frame -> {True, True}, PlotRangePadding -> None , ImagePadding -> {{0, 0}, {30, 10}}}; myDuplicateImage[image_] := Rasterize[image] // ImageAssemble[{{#, #}}] & myViewOptions = {ViewAngle -> 0.42, ViewCenter -> {0.5`, 0.5`, 0.5`} , ViewMatrix -> Automatic, ViewPoint -> {0.34, -3.36, -0.12} , ViewProjection -> Automatic, ViewRange -> All , ViewVector -> Automatic
This is the detailed visualisation of the simple example with periodic boundary condition u[ 2,y]==u[0,y] from documentation of PeriodicBoundaryConditions (mentionned by the OP) :
domain = Rectangle[{0, 0}, {2, 1}]; pde = -Laplacian[u[x, y], {x, y}] == If[1.25 <= x <= 1.75 && 0.25 <= y <= 0.5, 1., 0.]; \[CapitalGamma]D = DirichletCondition[u[x, y] == 0, (y == 0 || y == 1) && 0 < x < 2]; pbc00 = PeriodicBoundaryCondition[u[x, y], x == 0, TranslationTransform[{2, 0}]]; ufun00 = NDSolveValue[{pde, pbc00, \[CapitalGamma]D}, u, Element[{x, y}, domain]]; myStreamContourPlot00[ufun00]
As said by the OP, if in the code inside NDSolve, the "target" and the "source" are interverted, we get another solution :
pbc01 = PeriodicBoundaryCondition[u[x, y], x == 2, TranslationTransform[{-2, 0}]]; ufun01 = NDSolveValue[{pde, pbc01, \[CapitalGamma]D}, u, Element[{x, y}, domain]]; grnd01 = myStreamContourPlot00[ufun01]
The following is something that the OP may not be aware : there are not only 2 possibilities concerning the choice of where is the "target" and where is the "source", because "target" and "sources" roles can be interverted at y=0.5 (for example ) :
pbc02 = PeriodicBoundaryCondition[u[x, y], x == 0 && y <= .5, TranslationTransform[{2, 0}]]; pbc03 = PeriodicBoundaryCondition[u[x, y], x == 2 && y > .5, TranslationTransform[{-2, 0}]]; ufun03 = NDSolveValue[{pde, pbc02, pbc03, \[CapitalGamma]D}, u, Element[{x, y}, domain]]; myStreamContourPlot00[ufun03]
2:01 PM
A note for those coming from the world of finite difference method : In the finite difference method, there's the assumption (that become rapidly implicit) that the solution derivative is continuous. In the special context of periodicity, that may induce the implicit that "the derivative across the boundary is continuous". I nearly hear : "of course the derivative should be continuous across the boundary".
With the finite element method, these contuity constaints should be explicitly required to the software, or be present sometwhere in the code.
That introduces the second problem : In the very very most physical problem, the solutions above have nothing to do with the expected solution.
« first day next day → last day (50 days later) »
Transcript for
Jun5
Jun '206
Jun11
FEM Dirichlet+Neumann Periodic
about [this answer](mathematica.stackexchange.com/a/223418/5467)