feature/meshText #57
2 changed files with 46 additions and 14 deletions
Subroutine for reading mesh
It is now complete and working. I also added some minor improvements to moduleMesh.f90 using 'associate' to practice. I noticed there are a lot of things (allocating K, for example) that are common for all meshes and should be moved to a general module.
commit
3083e20ff7
|
|
@ -80,8 +80,18 @@ module moduleMeshInputText
|
||||||
end if
|
end if
|
||||||
|
|
||||||
self%numNodes = nNodes
|
self%numNodes = nNodes
|
||||||
self%numCells = nNodes - 1
|
|
||||||
allocate(self%nodes(1:self%numNodes))
|
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))
|
allocate(self%cells(1:self%numCells))
|
||||||
|
|
||||||
select type(self)
|
select type(self)
|
||||||
|
|
@ -142,12 +152,33 @@ module moduleMeshInputText
|
||||||
end do
|
end do
|
||||||
|
|
||||||
!Allocate cells
|
!Allocate cells
|
||||||
|
n = 1
|
||||||
|
allocate(p(1:2))
|
||||||
do c = 1, self%numCells
|
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
|
end do
|
||||||
|
deallocate(p)
|
||||||
|
|
||||||
close(fileID)
|
close(fileID)
|
||||||
|
|
||||||
|
!Call mesh connectivity
|
||||||
|
CALL self%connectMesh
|
||||||
|
|
||||||
end subroutine readText
|
end subroutine readText
|
||||||
|
|
||||||
subroutine readInitialText(filename, density, velocity, temperature)
|
subroutine readInitialText(filename, density, velocity, temperature)
|
||||||
|
|
|
||||||
|
|
@ -499,18 +499,17 @@ MODULE moduleMesh
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
|
|
||||||
CLASS(meshParticles), INTENT(inout):: self
|
CLASS(meshParticles), INTENT(inout):: self
|
||||||
INTEGER:: e
|
INTEGER:: c
|
||||||
INTEGER:: nNodes
|
|
||||||
INTEGER, ALLOCATABLE:: n(:)
|
INTEGER, ALLOCATABLE:: n(:)
|
||||||
REAL(8), ALLOCATABLE:: localK(:,:)
|
REAL(8), ALLOCATABLE:: localK(:,:)
|
||||||
INTEGER:: i, j
|
INTEGER:: i, j
|
||||||
|
|
||||||
DO e = 1, self%numCells
|
DO c = 1, self%numCells
|
||||||
nNodes = self%cells(e)%obj%nNodes
|
associate(nNodes => self%cells(c)%obj%nNodes)
|
||||||
ALLOCATE(n(1:nNodes))
|
ALLOCATE(n(1:nNodes))
|
||||||
ALLOCATE(localK(1:nNodes, 1:nNodes))
|
ALLOCATE(localK(1:nNodes, 1:nNodes))
|
||||||
n = self%cells(e)%obj%getNodes(nNodes)
|
n = self%cells(c)%obj%getNodes(nNodes)
|
||||||
localK = self%cells(e)%obj%elemK(nNodes)
|
localK = self%cells(c)%obj%elemK(nNodes)
|
||||||
|
|
||||||
DO i = 1, nNodes
|
DO i = 1, nNodes
|
||||||
DO j = 1, nNodes
|
DO j = 1, nNodes
|
||||||
|
|
@ -522,6 +521,8 @@ MODULE moduleMesh
|
||||||
|
|
||||||
DEALLOCATE(n, localK)
|
DEALLOCATE(n, localK)
|
||||||
|
|
||||||
|
end associate
|
||||||
|
|
||||||
END DO
|
END DO
|
||||||
|
|
||||||
END SUBROUTINE constructGlobalK
|
END SUBROUTINE constructGlobalK
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue