diff --git a/src/modules/mesh/inout/text/moduleMeshInputText.f90 b/src/modules/mesh/inout/text/moduleMeshInputText.f90 index f28de9c..26c7a6c 100644 --- a/src/modules/mesh/inout/text/moduleMeshInputText.f90 +++ b/src/modules/mesh/inout/text/moduleMeshInputText.f90 @@ -80,8 +80,18 @@ module moduleMeshInputText end if self%numNodes = nNodes - self%numCells = nNodes - 1 allocate(self%nodes(1:self%numNodes)) + + SELECT TYPE(self) + TYPE IS(meshParticles) + ALLOCATE(self%K(1:self%numNodes, 1:self%numNodes)) + ALLOCATE(self%IPIV(1:self%numNodes, 1:self%numNodes)) + self%K = 0.D0 + self%IPIV = 0 + + END SELECT + + self%numCells = nNodes - 1 allocate(self%cells(1:self%numCells)) select type(self) @@ -142,12 +152,33 @@ module moduleMeshInputText end do !Allocate cells + n = 1 + allocate(p(1:2)) do c = 1, self%numCells + p(1) = n + n = n + 1 + p(2) = n + + select case(self%geometry) + case("Cart") + allocate(meshCell1DCartSegm:: self%cells(c)%obj) + + case("Rad") + allocate(meshCell1DRadSegm:: self%cells(c)%obj) + + end select + + call self%cells(c)%obj%init(c, p, self%nodes) + end do + deallocate(p) close(fileID) + !Call mesh connectivity + CALL self%connectMesh + end subroutine readText subroutine readInitialText(filename, density, velocity, temperature) diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index 78cc772..01b03c7 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -499,28 +499,29 @@ MODULE moduleMesh IMPLICIT NONE CLASS(meshParticles), INTENT(inout):: self - INTEGER:: e - INTEGER:: nNodes + INTEGER:: c INTEGER, ALLOCATABLE:: n(:) REAL(8), ALLOCATABLE:: localK(:,:) INTEGER:: i, j - DO e = 1, self%numCells - nNodes = self%cells(e)%obj%nNodes - ALLOCATE(n(1:nNodes)) - ALLOCATE(localK(1:nNodes, 1:nNodes)) - n = self%cells(e)%obj%getNodes(nNodes) - localK = self%cells(e)%obj%elemK(nNodes) + DO c = 1, self%numCells + associate(nNodes => self%cells(c)%obj%nNodes) + ALLOCATE(n(1:nNodes)) + ALLOCATE(localK(1:nNodes, 1:nNodes)) + n = self%cells(c)%obj%getNodes(nNodes) + localK = self%cells(c)%obj%elemK(nNodes) - DO i = 1, nNodes - DO j = 1, nNodes - self%K(n(i), n(j)) = self%K(n(i), n(j)) + localK(i, j) + DO i = 1, nNodes + DO j = 1, nNodes + self%K(n(i), n(j)) = self%K(n(i), n(j)) + localK(i, j) + + END DO END DO - END DO + DEALLOCATE(n, localK) - DEALLOCATE(n, localK) + end associate END DO