« first day    last day (50 days later) » 

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.
We will use the following visualisation code coming from here :
(* 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]
In the three cases, we see on "graphic 1" that the temperature is continuous at x=2.
So one can say that "periodic boundary conditions" are respected.
First problem : there are several solutions, and theses solutions differ a way from some mathematic subtelties that the physician dont' care.
 
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.
Of course, all this mess disappears when the problem is enough specified, typically by asking continuity of the derivative across the boundary (= same flux of heat across the boundary in the case of a thermal problem).
But until now, NDSolve`FEM` is not able to do it (in the automated workflow)
End of the explanations about my first comment ("Mathematicaly,The periodic boundary condition u[2,y]==u[0,y] is not enough to have unicity of the solution" )
 

« first day    last day (50 days later) »