Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .helix/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[editor]
workspace-lsp-roots = ["CMakeLists.txt", ".git"]
8 changes: 3 additions & 5 deletions FORDsetup.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
project: easifemBase
summary: easifemBase is part of easifem library, which is a framework for Expandable And Scalable Infrastructure for Finite Element Methods.
project_download: https://github.com/vickysharma0812/easifem-base
project_github: https://github.com/vickysharma0812/easifem-base
summary: easifemBase is part of easifem library, which is a platform for Expandable And Scalable Infrastructure for Finite Element Methods.
project_download: https://github.com/easifem/base
project_github: https://github.com/easifem/base
project_website: https://www.easifem.com
license: gfdl
project_dir: ./src/modules/Utility
Expand Down Expand Up @@ -41,5 +41,3 @@ preprocesses: true
---

{!./README.md!}

<!-- FORD features two macros to make it easier to provide intradocumentation links. These are `|url|` which gets replaced by the project URL, and `|media|`, which gets replaced by the (absolute) path to the media directory in the output. you can also use `favicon:` -->
10 changes: 7 additions & 3 deletions fortitude.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
[check]
preview = true
select = ["C", "E", "S", "MOD", "OB"]
# ignore = []
select = ["C", "E", "S", "MOD"]
ignore = [
"superfluous-implicit-none",
"implicit-external-procedures",
"interface-implicit-typing",
]
file-extensions = ["f90", "F90"]
line-length = 78
fix = false
fix = true
# output-format = "full"
# show-fixes = false
# unsafe-fixes = true
68 changes: 29 additions & 39 deletions src/modules/ARPACK/src/ARPACK_SAUPD.F90
Original file line number Diff line number Diff line change
Expand Up @@ -15,38 +15,52 @@
! along with this program. If not, see <https: //www.gnu.org/licenses/>
!

!> author: Vikas Sharma, Ph. D.
! date: 2022-12-09
! summary: Reverse communication interface (RCI) for the Implicitly
! Restarted Arnoldi Iteration.

MODULE ARPACK_SAUPD
USE GlobalData, ONLY: I4B, DFP, LGT
USE String_Class, ONLY: String
IMPLICIT NONE
PRIVATE

PUBLIC :: SAUPD_ErrorMsg
PUBLIC :: SEUPD_ErrorMsg
PUBLIC :: SymLargestEigenVal
PUBLIC :: SymSmallestEigenVal

!----------------------------------------------------------------------------
! SAUPD_ErrorMsg
!----------------------------------------------------------------------------

!> author: Vikas Sharma, Ph. D.
! date: 2022-12-09
! summary: error message for SAUPD

INTERFACE
MODULE FUNCTION SAUPD_ErrorMsg(INFO) RESULT(ans)
INTEGER(I4B), INTENT(IN) :: INFO
TYPE(String) :: ans
END FUNCTION SAUPD_ErrorMsg
END INTERFACE

PUBLIC :: SAUPD_ErrorMsg

!----------------------------------------------------------------------------
! SAUPD_ErrorMsg
!----------------------------------------------------------------------------

!> author: Vikas Sharma, Ph. D.
! date: 2022-12-09
! summary: error message for SEUPD

INTERFACE
MODULE FUNCTION SEUPD_ErrorMsg(INFO) RESULT(ans)
INTEGER(I4B), INTENT(IN) :: INFO
TYPE(String) :: ans
END FUNCTION SEUPD_ErrorMsg
END INTERFACE

PUBLIC :: SEUPD_ErrorMsg

!----------------------------------------------------------------------------
!
!----------------------------------------------------------------------------
Expand All @@ -59,10 +73,10 @@ END FUNCTION SEUPD_ErrorMsg
!
!- This routine calculates the largest eigenvalue of a real sym dense matrix.
!- It calls ARPACK SSAUPD or DSAUPD routine

INTERFACE
!
INTERFACE SymLargestEigenVal
MODULE FUNCTION SymLargestEigenVal1(mat, which, NCV, maxIter, tol) &
& RESULT(ans)
RESULT(ans)
REAL(DFP), INTENT(IN) :: mat(:, :)
!! dense matrix
CHARACTER(*), OPTIONAL, INTENT(IN) :: which
Expand All @@ -80,30 +94,24 @@ MODULE FUNCTION SymLargestEigenVal1(mat, which, NCV, maxIter, tol) &
REAL(DFP) :: ans
!! maximum eigenvalue
END FUNCTION SymLargestEigenVal1
END INTERFACE

INTERFACE SymLargestEigenVal
MODULE PROCEDURE SymLargestEigenVal1
END INTERFACE SymLargestEigenVal

PUBLIC :: SymLargestEigenVal

!----------------------------------------------------------------------------
!
!----------------------------------------------------------------------------

!> author: Vikas Sharma, Ph. D.
! date: 2022-12-10
! summary: Calculate the `nev` smallest eigenvalue of a real sym dense matrix
! summary: Calculate the smallest eigenvalue of a real sym dense matrix
!
!# Introduction
!
!- This routine calculates the smallest eigenvalue of a real sym dense matrix.
!- It calls ARPACK SSAUPD or DSAUPD routine

INTERFACE
!
INTERFACE SymLargestEigenVal
MODULE FUNCTION SymLargestEigenVal2(mat, nev, which, NCV, maxIter, tol) &
& RESULT(ans)
RESULT(ans)
REAL(DFP), INTENT(IN) :: mat(:, :)
!! dense matrix
INTEGER(I4B), INTENT(IN) :: nev
Expand All @@ -123,10 +131,6 @@ MODULE FUNCTION SymLargestEigenVal2(mat, nev, which, NCV, maxIter, tol) &
REAL(DFP) :: ans(nev)
!! first k, largest eigenvalue
END FUNCTION SymLargestEigenVal2
END INTERFACE

INTERFACE SymLargestEigenVal
MODULE PROCEDURE SymLargestEigenVal2
END INTERFACE SymLargestEigenVal

!----------------------------------------------------------------------------
Expand Down Expand Up @@ -156,9 +160,9 @@ END FUNCTION SymLargestEigenVal2
! decomposition of mat0.
!@endnote

INTERFACE
INTERFACE SymSmallestEigenVal
MODULE FUNCTION SymSmallestEigenVal1(mat, sigma, which, NCV, maxIter, tol) &
& RESULT(ans)
RESULT(ans)
REAL(DFP), INTENT(IN) :: mat(:, :)
!! dense matrix
REAL(DFP), OPTIONAL, INTENT(IN) :: sigma
Expand All @@ -178,14 +182,8 @@ MODULE FUNCTION SymSmallestEigenVal1(mat, sigma, which, NCV, maxIter, tol) &
REAL(DFP) :: ans
!! maximum eigenvalue
END FUNCTION SymSmallestEigenVal1
END INTERFACE

INTERFACE SymSmallestEigenVal
MODULE PROCEDURE SymSmallestEigenVal1
END INTERFACE SymSmallestEigenVal

PUBLIC :: SymSmallestEigenVal

!----------------------------------------------------------------------------
!
!----------------------------------------------------------------------------
Expand All @@ -205,19 +203,15 @@ END FUNCTION SymSmallestEigenVal1
!
!- [ ] TODO use Cholsky factorization instead of LU as mat is
! symmetric.
!

INTERFACE
INTERFACE SymSmallestEigenVal
MODULE FUNCTION SymSmallestEigenVal2(mat, isFactor, ipiv, sigma, which, &
& NCV, maxIter, tol) &
& RESULT(ans)
NCV, maxIter, tol) RESULT(ans)
REAL(DFP), INTENT(INOUT) :: mat(:, :)
!!
!! Dense matrix
!! If isFactor is false, then this matrix will change on return
!! in this case, it will contain LU decomposition of `A-sigma*I`
!! If isFactor is true, then this matrix will not change
!!
LOGICAL(LGT), INTENT(INOUT) :: isFactor
!! if mat is already factorized, the set isFactor to true
!! if mat is not factorized, then set isFactor to false
Expand All @@ -244,10 +238,6 @@ MODULE FUNCTION SymSmallestEigenVal2(mat, isFactor, ipiv, sigma, which, &
REAL(DFP) :: ans
!! smallest eigenvalue
END FUNCTION SymSmallestEigenVal2
END INTERFACE

INTERFACE SymSmallestEigenVal
MODULE PROCEDURE SymSmallestEigenVal2
END INTERFACE SymSmallestEigenVal

END MODULE ARPACK_SAUPD
4 changes: 2 additions & 2 deletions src/modules/Display/src/Display_Method.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1642,9 +1642,9 @@ SUBROUTINE EqualLine(unitNo)
INTEGER(I4B), INTENT(IN), OPTIONAL :: unitNo

IF (PRESENT(unitNo)) THEN
WRITE (unitNo, "(A)") equal
WRITE (unitNo, '(80("="))')
ELSE
WRITE (stdout, "(A)") equal
WRITE (stdout, '(80("="))')
END IF

END SUBROUTINE EqualLine
Expand Down
14 changes: 7 additions & 7 deletions src/modules/String/src/String_Class.F90
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ MODULE String_Class
! INTEGER, PARAMETER, PUBLIC :: CK = SELECTED_CHAR_KIND('DEFAULT')
INTEGER, PARAMETER :: CK = SELECTED_CHAR_KIND('DEFAULT')
! internal parameters
CHARACTER(kind=CK, len=26), PARAMETER :: UPPER_ALPHABET = &
& 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
CHARACTER(kind=CK, len=26), PARAMETER :: LOWER_ALPHABET = &
& 'abcdefghijklmnopqrstuvwxyz'
CHARACTER(kind=CK, len=26), PARAMETER :: UPPER_ALPHABET = &
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
CHARACTER(kind=CK, len=26), PARAMETER :: LOWER_ALPHABET = &
'abcdefghijklmnopqrstuvwxyz'
CHARACTER(kind=CK, len=1), PARAMETER :: SPACE = ' '
CHARACTER(kind=CK, len=1), PARAMETER :: TAB = ACHAR(9)
CHARACTER(kind=CK, len=1), PARAMETER :: UIX_DIR_SEP = CHAR(47)
Expand All @@ -44,7 +44,7 @@ MODULE String_Class

INTERFACE strjoin
MODULE PROCEDURE strjoin_strings, strjoin_characters, &
& strjoin_strings_array, strjoin_characters_array
strjoin_strings_array, strjoin_characters_array
END INTERFACE strjoin

PUBLIC :: strjoin
Expand Down Expand Up @@ -89,7 +89,7 @@ MODULE String_Class

INTERFACE index
MODULE PROCEDURE sindex_string_string, sindex_string_character, &
& sindex_character_string
sindex_character_string
END INTERFACE index

!----------------------------------------------------------------------------
Expand Down Expand Up @@ -150,7 +150,7 @@ MODULE String_Class

INTERFACE verify
MODULE PROCEDURE sverify_string_string, sverify_string_character, &
& sverify_character_string
sverify_character_string
END INTERFACE verify

PUBLIC :: verify
Expand Down
38 changes: 25 additions & 13 deletions src/modules/System/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,19 @@
#

set(src_path "${CMAKE_CURRENT_LIST_DIR}/src/")
target_sources(${PROJECT_NAME} PRIVATE ${src_path}/System_Method.F90)

target_sources(
${PROJECT_NAME}
PRIVATE
${src_path}/SystemInterface.F90
${src_path}/SystemOptions.F90
${src_path}/System_Method.F90
${src_path}/SystemSignal_Method.F90
${src_path}/SystemFile_Method.F90
${src_path}/SystemEnvironment_Method.F90
${src_path}/SystemEnquiry_Method.F90
${src_path}/SystemProcess_Method.F90
${src_path}/System_Utility.F90
)

set(subproject_name "easifemSystem")

Expand All @@ -28,16 +39,17 @@ target_link_libraries(${PROJECT_NAME} PUBLIC ${subproject_name})
# target properties

set_target_properties(
${subproject_name}
PROPERTIES POSITION_INDEPENDENT_CODE 1
SOVERSION ${VERSION_MAJOR}
# OUTPUT_NAME ${PROJECT_NAME}
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
MACOSX_RPATH ON
WINDOWS_EXPORT_ALL_SYMBOLS ON
LINKER_LANGUAGE C)

${subproject_name}
PROPERTIES
POSITION_INDEPENDENT_CODE 1
SOVERSION ${VERSION_MAJOR}
# OUTPUT_NAME ${PROJECT_NAME}
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
MACOSX_RPATH ON
WINDOWS_EXPORT_ALL_SYMBOLS ON
LINKER_LANGUAGE C
)

list(APPEND C_PROJECTS ${subproject_name})
Loading
Loading