diff --git a/src/modules/mesh/2DCyl/moduleMeshCyl.f90 b/src/modules/mesh/2DCyl/moduleMeshCyl.f90 index 721361b..ad377dc 100644 --- a/src/modules/mesh/2DCyl/moduleMeshCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMeshCyl.f90 @@ -717,7 +717,6 @@ MODULE moduleMeshCyl self%n3%v = self%n3%v + self%arNodes(3) !Derivatives in z/r for shape functions (node independent) - !TODO: This is used because invJ.dPsi does not produce the right Electric field A = self%z(2)*self%r(3) - self%z(3)*self%r(2) + & self%z(3)*self%r(1) - self%z(1)*self%r(3) + & self%z(1)*self%r(2) - self%z(2)*self%r(1) @@ -971,15 +970,23 @@ MODULE moduleMeshCyl CLASS(meshVolCylTria), INTENT(in):: self REAL(8), INTENT(in):: xi(1:3) + REAL(8):: dPsi(1:2,1:3) + REAL(8):: dPsiR(1:2,1:3)!Derivative of shpae functions in global coordinates + REAL(8):: invJ(1:2,1:2), detJ REAL(8):: phi(1:3) + REAL(8):: dummy REAL(8):: EF(1:3) phi = (/self%n1%emData%phi, & self%n2%emData%phi, & - self%n3%emData%phi/) + self%n3%emData%phi /) - EF(1) = -DOT_PRODUCT(self%dPsiZ(:), phi) - EF(2) = -DOT_PRODUCT(self%dPsiR(:), phi) + dPsi = self%dPsi(xi) + detJ = self%detJac(xi,dPsi) + invJ = self%invJac(xi,dPsi) + dPsiR = MATMUL(invJ, dPsi)/detJ + EF(1) = -DOT_PRODUCT(dPsiR(1,:), phi) + EF(2) = -DOT_PRODUCT(dPsiR(2,:), phi) EF(3) = 0.D0 END FUNCTION gatherEFTria diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index 0869fb3..3c9e7ed 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -70,7 +70,7 @@ MODULE moduleMesh CONTAINS PROCEDURE(initEdge_interface), DEFERRED, PASS:: init PROCEDURE(getNodesEdge_interface), DEFERRED, PASS:: getNodes - PROCEDURE(randPosEdge_interface), DEFERRED, PASS:: randPos + PROCEDURE(randPosEdge_interface), DEFERRED, PASS:: randPos END TYPE meshEdge