├── .fortls ├── .gitattributes ├── .gitconfig ├── .github ├── .pr-labeler.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── feature_request.md │ └── inspiration.md └── workflows │ └── pr-labeler.yml ├── .gitignore ├── .vscode ├── settings.json └── tasks.json ├── CMakeLists.txt ├── CMakePresets.json ├── FORDsetup.md ├── LICENSE ├── LICENSE.gpl3.md ├── README.md ├── Workspaces ├── BLAS.code-workspace ├── OpenMP.code-workspace ├── Polynomial ├── SparseMatrix.code-workspace ├── Tensor.code-workspace ├── Utility.code-workspace └── refelem.code-workspace ├── base.code-workspace ├── build.py ├── cmake ├── Config.cmake.in ├── Modules │ └── FindLAPACK.cmake ├── addARPACK.cmake ├── addFFTW.cmake ├── addGTKFortran.cmake ├── addLIS.cmake ├── addLapack95.cmake ├── addLua.cmake ├── addMetis.cmake ├── addOpenBLAS.cmake ├── addOpenMP.cmake ├── addPLPLOT.cmake ├── addRaylib.cmake ├── addSparsekit.cmake ├── addSuperLU.cmake ├── addToml.cmake └── packaging.cmake ├── compile_commands.json ├── easifemBase.py ├── easifemvar.sh ├── figures ├── banner.jpeg ├── favicon.ico ├── figure-1.svg ├── figure-2.svg ├── logo_hero.svg └── what-is-easifem.svg ├── fortran.json ├── install.py ├── neovim.json ├── package-lock.json ├── package.json ├── package.py ├── pages ├── BaseMethods.md ├── BaseType.md ├── Environment.md ├── Extpkgs.md ├── Install_Linux.md ├── Install_MacOSX.md ├── Install_Windows.md └── IntVector_.md ├── release_install.py ├── selected ├── setup.py ├── setup ├── install_pkgs_Darwin.sh ├── install_pkgs_Ubuntu.sh ├── requirements.txt ├── set_envvar_CentOS.sh ├── set_envvar_Darwin.sh └── set_envvar_Ubuntu.sh └── src ├── modules ├── ARPACK │ ├── CMakeLists.txt │ └── src │ │ ├── ARPACK_SAUPD.F90 │ │ ├── EASIFEM_ARPACK.F90 │ │ └── EASIFEM_F77_ARPACK.F90 ├── BLAS95 │ ├── CMakeLists.txt │ ├── aux │ │ ├── blas95.lst │ │ └── test.F90 │ └── src │ │ ├── F77_BLAS.F90 │ │ ├── F95_BLAS.F90 │ │ ├── blas95_src │ │ ├── caxpby.F90 │ │ ├── caxpy.F90 │ │ ├── caxpyi.F90 │ │ ├── ccopy.F90 │ │ ├── cdotc.F90 │ │ ├── cdotci.F90 │ │ ├── cdotu.F90 │ │ ├── cdotui.F90 │ │ ├── cgbmv.F90 │ │ ├── cgem2vc.F90 │ │ ├── cgemm.F90 │ │ ├── cgemm3m.F90 │ │ ├── cgemm3m_batch.F90 │ │ ├── cgemm_batch.F90 │ │ ├── cgemmt.F90 │ │ ├── cgemv.F90 │ │ ├── cgerc.F90 │ │ ├── cgeru.F90 │ │ ├── cgthr.F90 │ │ ├── cgthrz.F90 │ │ ├── chbmv.F90 │ │ ├── chemm.F90 │ │ ├── chemv.F90 │ │ ├── cher.F90 │ │ ├── cher2.F90 │ │ ├── cher2k.F90 │ │ ├── cherk.F90 │ │ ├── chpmv.F90 │ │ ├── chpr.F90 │ │ ├── chpr2.F90 │ │ ├── crotg.F90 │ │ ├── cscal.F90 │ │ ├── csctr.F90 │ │ ├── csrot.F90 │ │ ├── csscal.F90 │ │ ├── cswap.F90 │ │ ├── csymm.F90 │ │ ├── csyr2k.F90 │ │ ├── csyrk.F90 │ │ ├── ctbmv.F90 │ │ ├── ctbsv.F90 │ │ ├── ctpmv.F90 │ │ ├── ctpsv.F90 │ │ ├── ctrmm.F90 │ │ ├── ctrmv.F90 │ │ ├── ctrsm.F90 │ │ ├── ctrsm_batch.F90 │ │ ├── ctrsv.F90 │ │ ├── dasum.F90 │ │ ├── daxpby.F90 │ │ ├── daxpy.F90 │ │ ├── daxpyi.F90 │ │ ├── dcabs1.F90 │ │ ├── dcopy.F90 │ │ ├── ddot.F90 │ │ ├── ddoti.F90 │ │ ├── dgbmv.F90 │ │ ├── dgem2vu.F90 │ │ ├── dgemm.F90 │ │ ├── dgemm_batch.F90 │ │ ├── dgemmt.F90 │ │ ├── dgemv.F90 │ │ ├── dger.F90 │ │ ├── dgthr.F90 │ │ ├── dgthrz.F90 │ │ ├── dnrm2.F90 │ │ ├── drot.F90 │ │ ├── drotg.F90 │ │ ├── droti.F90 │ │ ├── drotm.F90 │ │ ├── drotmg.F90 │ │ ├── dsbmv.F90 │ │ ├── dscal.F90 │ │ ├── dsctr.F90 │ │ ├── dsdot.F90 │ │ ├── dspmv.F90 │ │ ├── dspr.F90 │ │ ├── dspr2.F90 │ │ ├── dswap.F90 │ │ ├── dsymm.F90 │ │ ├── dsymv.F90 │ │ ├── dsyr.F90 │ │ ├── dsyr2.F90 │ │ ├── dsyr2k.F90 │ │ ├── dsyrk.F90 │ │ ├── dtbmv.F90 │ │ ├── dtbsv.F90 │ │ ├── dtpmv.F90 │ │ ├── dtpsv.F90 │ │ ├── dtrmm.F90 │ │ ├── dtrmv.F90 │ │ ├── dtrsm.F90 │ │ ├── dtrsm_batch.F90 │ │ ├── dtrsv.F90 │ │ ├── dzasum.F90 │ │ ├── dzgemm.F90 │ │ ├── dzgemv.F90 │ │ ├── dznrm2.F90 │ │ ├── icamax.F90 │ │ ├── icamin.F90 │ │ ├── idamax.F90 │ │ ├── idamin.F90 │ │ ├── isamax.F90 │ │ ├── isamin.F90 │ │ ├── izamax.F90 │ │ ├── izamin.F90 │ │ ├── sasum.F90 │ │ ├── saxpby.F90 │ │ ├── saxpy.F90 │ │ ├── saxpyi.F90 │ │ ├── scabs1.F90 │ │ ├── scasum.F90 │ │ ├── scgemm.F90 │ │ ├── scgemv.F90 │ │ ├── scnrm2.F90 │ │ ├── scopy.F90 │ │ ├── sdot.F90 │ │ ├── sdoti.F90 │ │ ├── sdsdot.F90 │ │ ├── sgbmv.F90 │ │ ├── sgem2vu.F90 │ │ ├── sgemm.F90 │ │ ├── sgemm_batch.F90 │ │ ├── sgemmt.F90 │ │ ├── sgemv.F90 │ │ ├── sger.F90 │ │ ├── sgthr.F90 │ │ ├── sgthrz.F90 │ │ ├── snrm2.F90 │ │ ├── srot.F90 │ │ ├── srotg.F90 │ │ ├── sroti.F90 │ │ ├── srotm.F90 │ │ ├── srotmg.F90 │ │ ├── ssbmv.F90 │ │ ├── sscal.F90 │ │ ├── ssctr.F90 │ │ ├── sspmv.F90 │ │ ├── sspr.F90 │ │ ├── sspr2.F90 │ │ ├── sswap.F90 │ │ ├── ssymm.F90 │ │ ├── ssymv.F90 │ │ ├── ssyr.F90 │ │ ├── ssyr2.F90 │ │ ├── ssyr2k.F90 │ │ ├── ssyrk.F90 │ │ ├── stbmv.F90 │ │ ├── stbsv.F90 │ │ ├── stpmv.F90 │ │ ├── stpsv.F90 │ │ ├── strmm.F90 │ │ ├── strmv.F90 │ │ ├── strsm.F90 │ │ ├── strsm_batch.F90 │ │ ├── strsv.F90 │ │ ├── zaxpby.F90 │ │ ├── zaxpy.F90 │ │ ├── zaxpyi.F90 │ │ ├── zcopy.F90 │ │ ├── zdotc.F90 │ │ ├── zdotci.F90 │ │ ├── zdotu.F90 │ │ ├── zdotui.F90 │ │ ├── zdrot.F90 │ │ ├── zdscal.F90 │ │ ├── zgbmv.F90 │ │ ├── zgem2vc.F90 │ │ ├── zgemm.F90 │ │ ├── zgemm3m.F90 │ │ ├── zgemm3m_batch.F90 │ │ ├── zgemm_batch.F90 │ │ ├── zgemmt.F90 │ │ ├── zgemv.F90 │ │ ├── zgerc.F90 │ │ ├── zgeru.F90 │ │ ├── zgthr.F90 │ │ ├── zgthrz.F90 │ │ ├── zhbmv.F90 │ │ ├── zhemm.F90 │ │ ├── zhemv.F90 │ │ ├── zher.F90 │ │ ├── zher2.F90 │ │ ├── zher2k.F90 │ │ ├── zherk.F90 │ │ ├── zhpmv.F90 │ │ ├── zhpr.F90 │ │ ├── zhpr2.F90 │ │ ├── zrotg.F90 │ │ ├── zscal.F90 │ │ ├── zsctr.F90 │ │ ├── zswap.F90 │ │ ├── zsymm.F90 │ │ ├── zsyr2k.F90 │ │ ├── zsyrk.F90 │ │ ├── ztbmv.F90 │ │ ├── ztbsv.F90 │ │ ├── ztpmv.F90 │ │ ├── ztpsv.F90 │ │ ├── ztrmm.F90 │ │ ├── ztrmv.F90 │ │ ├── ztrsm.F90 │ │ ├── ztrsm_batch.F90 │ │ └── ztrsv.F90 │ │ └── easifem_blas_interface.inc ├── BaseContinuity │ ├── CMakeLists.txt │ └── src │ │ └── BaseContinuity_Method.F90 ├── BaseInterpolation │ ├── CMakeLists.txt │ └── src │ │ └── BaseInterpolation_Method.F90 ├── BaseMethod │ ├── CMakeLists.txt │ └── src │ │ └── BaseMethod.F90 ├── BaseType │ ├── CMakeLists.txt │ └── src │ │ └── BaseType.F90 ├── BeFoR64 │ ├── CMakeLists.txt │ └── src │ │ ├── befor64.F90 │ │ └── befor64_pack_data_m.F90 ├── BoundingBox │ ├── CMakeLists.txt │ └── src │ │ └── BoundingBox_Method.F90 ├── CInterface │ ├── CMakeLists.txt │ └── src │ │ └── CInterface.F90 ├── CMakeLists.txt ├── CSRMatrix │ ├── CMakeLists.txt │ └── src │ │ ├── CSRMatrix_AddMethods.F90 │ │ ├── CSRMatrix_ConstructorMethods.F90 │ │ ├── CSRMatrix_DBCMethods.F90 │ │ ├── CSRMatrix_DiagonalScalingMethods.F90 │ │ ├── CSRMatrix_GetBlockColMethods.F90 │ │ ├── CSRMatrix_GetBlockRowMethods.F90 │ │ ├── CSRMatrix_GetColMethods.F90 │ │ ├── CSRMatrix_GetMethods.F90 │ │ ├── CSRMatrix_GetRowMethods.F90 │ │ ├── CSRMatrix_GetSubMatrixMethods.F90 │ │ ├── CSRMatrix_ILUMethods.F90 │ │ ├── CSRMatrix_IOMethods.F90 │ │ ├── CSRMatrix_LUSolveMethods.F90 │ │ ├── CSRMatrix_LinSolveMethods.F90 │ │ ├── CSRMatrix_MatVecMethods.F90 │ │ ├── CSRMatrix_MatrixMarketIO.F90 │ │ ├── CSRMatrix_Method.F90 │ │ ├── CSRMatrix_ReorderingMethods.F90 │ │ ├── CSRMatrix_SchurMethods.F90 │ │ ├── CSRMatrix_SetBlockColMethods.F90 │ │ ├── CSRMatrix_SetBlockRowMethods.F90 │ │ ├── CSRMatrix_SetColMethods.F90 │ │ ├── CSRMatrix_SetMethods.F90 │ │ ├── CSRMatrix_SetRowMethods.F90 │ │ ├── CSRMatrix_SparsityMethods.F90 │ │ ├── CSRMatrix_SpectralMethods.F90 │ │ ├── CSRMatrix_SuperLU.F90 │ │ ├── CSRMatrix_SymMatmulMethods.F90 │ │ └── CSRMatrix_UnaryMethods.F90 ├── CSRSparsity │ ├── CMakeLists.txt │ └── src │ │ └── CSRSparsity_Method.F90 ├── ConvectiveMatrix │ ├── CMakeLists.txt │ └── src │ │ └── ConvectiveMatrix_Method.F90 ├── DOF │ ├── CMakeLists.txt │ └── src │ │ ├── DOF_AddMethods.F90 │ │ ├── DOF_ConstructorMethods.F90 │ │ ├── DOF_GetMethods.F90 │ │ ├── DOF_GetValueMethods.F90 │ │ ├── DOF_IOMethods.F90 │ │ ├── DOF_Method.F90 │ │ └── DOF_SetMethods.F90 ├── DiffusionMatrix │ ├── CMakeLists.txt │ └── src │ │ └── DiffusionMatrix_Method.F90 ├── Display │ ├── CMakeLists.txt │ └── src │ │ ├── Display_Mat2.inc │ │ ├── Display_Mat3.inc │ │ ├── Display_Mat4.inc │ │ ├── Display_Method.F90 │ │ ├── Display_Scalar.inc │ │ ├── Display_Vector.inc │ │ ├── References │ │ └── dispmodule-userman.pdf │ │ └── disp │ │ ├── disp_charmod.F90 │ │ ├── disp_i1mod.F90 │ │ ├── disp_i2mod.F90 │ │ ├── disp_i4mod.F90 │ │ ├── disp_i8mod.F90 │ │ ├── disp_l1mod.F90 │ │ ├── disp_r16mod.F90 │ │ ├── disp_r4mod.F90 │ │ ├── disp_r8mod.F90 │ │ ├── dispmodule.F90 │ │ ├── dispmodule_util.F90 │ │ └── putstrmodule.F90 ├── ElasticNitscheMatrix │ ├── CMakeLists.txt │ └── src │ │ └── ElasticNitscheMatrix_Method.F90 ├── ElemshapeData │ ├── CMakeLists.txt │ └── src │ │ ├── ElemshapeData_ConstructorMethods.F90 │ │ ├── ElemshapeData_DGHermitMethods.F90 │ │ ├── ElemshapeData_DGHierarchyMethods.F90 │ │ ├── ElemshapeData_DGLagrangeMethods.F90 │ │ ├── ElemshapeData_DGMethods.F90 │ │ ├── ElemshapeData_DGSerendipityMethods.F90 │ │ ├── ElemshapeData_DivergenceMethods.F90 │ │ ├── ElemshapeData_GetMethods.F90 │ │ ├── ElemshapeData_GradientMethods.F90 │ │ ├── ElemshapeData_H1Methods.F90 │ │ ├── ElemshapeData_HCurlMethods.F90 │ │ ├── ElemshapeData_HDivMethods.F90 │ │ ├── ElemshapeData_HRGNParamMethods.F90 │ │ ├── ElemshapeData_HRQIParamMethods.F90 │ │ ├── ElemshapeData_HminHmaxMethods.F90 │ │ ├── ElemshapeData_IOMethods.F90 │ │ ├── ElemshapeData_InterpolMethods.F90 │ │ ├── ElemshapeData_LocalDivergenceMethods.F90 │ │ ├── ElemshapeData_LocalGradientMethods.F90 │ │ ├── ElemshapeData_Method.F90 │ │ ├── ElemshapeData_ProjectionMethods.F90 │ │ ├── ElemshapeData_SetMethods.F90 │ │ ├── ElemshapeData_StabilizationParamMethods.F90 │ │ └── ElemshapeData_UnitNormalMethods.F90 ├── ErrorHandling │ ├── CMakeLists.txt │ └── src │ │ └── ErrorHandling.F90 ├── FACE │ ├── CMakeLists.txt │ └── src │ │ └── face.F90 ├── FEMatrix │ ├── CMakeLists.txt │ └── src │ │ └── FEMatrix_Method.F90 ├── FEVariable │ ├── CMakeLists.txt │ └── src │ │ └── FEVariable_Method.F90 ├── FEVector │ ├── CMakeLists.txt │ └── src │ │ └── FEVector_Method.F90 ├── FFTW │ ├── CMakeLists.txt │ └── src │ │ └── FFTW3.F90 ├── FPL │ ├── CMakeLists.txt │ ├── LICENSE │ └── src │ │ ├── ErrorMessages.F90 │ │ ├── FPL.F90 │ │ ├── FPL_utils.F90 │ │ ├── ParameterEntry.F90 │ │ ├── ParameterEntryDictionary.F90 │ │ ├── ParameterList.F90 │ │ ├── ParameterRootEntry.F90 │ │ └── Wrapper │ │ ├── DimensionsWrapper.F90 │ │ ├── DimensionsWrapper0D │ │ ├── DimensionsWrapper0D.F90 │ │ ├── DimensionsWrapper0D_DLCA.F90 │ │ ├── DimensionsWrapper0D_I1P.F90 │ │ ├── DimensionsWrapper0D_I2P.F90 │ │ ├── DimensionsWrapper0D_I4P.F90 │ │ ├── DimensionsWrapper0D_I8P.F90 │ │ ├── DimensionsWrapper0D_L.F90 │ │ ├── DimensionsWrapper0D_R4P.F90 │ │ └── DimensionsWrapper0D_R8P.F90 │ │ ├── DimensionsWrapper1D │ │ ├── DimensionsWrapper1D.F90 │ │ ├── DimensionsWrapper1D_DLCA.F90 │ │ ├── DimensionsWrapper1D_I1P.F90 │ │ ├── DimensionsWrapper1D_I2P.F90 │ │ ├── DimensionsWrapper1D_I4P.F90 │ │ ├── DimensionsWrapper1D_I8P.F90 │ │ ├── DimensionsWrapper1D_L.F90 │ │ ├── DimensionsWrapper1D_R4P.F90 │ │ └── DimensionsWrapper1D_R8P.F90 │ │ ├── DimensionsWrapper2D │ │ ├── DimensionsWrapper2D.F90 │ │ ├── DimensionsWrapper2D_DLCA.F90 │ │ ├── DimensionsWrapper2D_I1P.F90 │ │ ├── DimensionsWrapper2D_I2P.F90 │ │ ├── DimensionsWrapper2D_I4P.F90 │ │ ├── DimensionsWrapper2D_I8P.F90 │ │ ├── DimensionsWrapper2D_L.F90 │ │ ├── DimensionsWrapper2D_R4P.F90 │ │ └── DimensionsWrapper2D_R8P.F90 │ │ ├── DimensionsWrapper3D │ │ ├── DimensionsWrapper3D.F90 │ │ ├── DimensionsWrapper3D_DLCA.F90 │ │ ├── DimensionsWrapper3D_I1P.F90 │ │ ├── DimensionsWrapper3D_I2P.F90 │ │ ├── DimensionsWrapper3D_I4P.F90 │ │ ├── DimensionsWrapper3D_I8P.F90 │ │ ├── DimensionsWrapper3D_L.F90 │ │ ├── DimensionsWrapper3D_R4P.F90 │ │ └── DimensionsWrapper3D_R8P.F90 │ │ ├── DimensionsWrapper4D │ │ ├── DimensionsWrapper4D.F90 │ │ ├── DimensionsWrapper4D_DLCA.F90 │ │ ├── DimensionsWrapper4D_I1P.F90 │ │ ├── DimensionsWrapper4D_I2P.F90 │ │ ├── DimensionsWrapper4D_I4P.F90 │ │ ├── DimensionsWrapper4D_I8P.F90 │ │ ├── DimensionsWrapper4D_L.F90 │ │ ├── DimensionsWrapper4D_R4P.F90 │ │ └── DimensionsWrapper4D_R8P.F90 │ │ ├── DimensionsWrapper5D │ │ ├── DimensionsWrapper5D.F90 │ │ ├── DimensionsWrapper5D_DLCA.F90 │ │ ├── DimensionsWrapper5D_I1P.F90 │ │ ├── DimensionsWrapper5D_I2P.F90 │ │ ├── DimensionsWrapper5D_I4P.F90 │ │ ├── DimensionsWrapper5D_I8P.F90 │ │ ├── DimensionsWrapper5D_L.F90 │ │ ├── DimensionsWrapper5D_R4P.F90 │ │ └── DimensionsWrapper5D_R8P.F90 │ │ ├── DimensionsWrapper6D │ │ ├── DimensionsWrapper6D.F90 │ │ ├── DimensionsWrapper6D_DLCA.F90 │ │ ├── DimensionsWrapper6D_I1P.F90 │ │ ├── DimensionsWrapper6D_I2P.F90 │ │ ├── DimensionsWrapper6D_I4P.F90 │ │ ├── DimensionsWrapper6D_I8P.F90 │ │ ├── DimensionsWrapper6D_L.F90 │ │ ├── DimensionsWrapper6D_R4P.F90 │ │ └── DimensionsWrapper6D_R8P.F90 │ │ ├── DimensionsWrapper7D │ │ ├── DimensionsWrapper7D.F90 │ │ ├── DimensionsWrapper7D_DLCA.F90 │ │ ├── DimensionsWrapper7D_I1P.F90 │ │ ├── DimensionsWrapper7D_I2P.F90 │ │ ├── DimensionsWrapper7D_I4P.F90 │ │ ├── DimensionsWrapper7D_I8P.F90 │ │ ├── DimensionsWrapper7D_L.F90 │ │ ├── DimensionsWrapper7D_R4P.F90 │ │ └── DimensionsWrapper7D_R8P.F90 │ │ ├── WrapperFactory │ │ ├── DLACWrapperFactory.F90 │ │ ├── I1PWrapperFactory.F90 │ │ ├── I2PWrapperFactory.F90 │ │ ├── I4PWrapperFactory.F90 │ │ ├── I8PWrapperFactory.F90 │ │ ├── LWrapperFactory.F90 │ │ ├── R4PWrapperFactory.F90 │ │ ├── R8PWrapperFactory.F90 │ │ └── WrapperFactory.F90 │ │ ├── WrapperFactoryList.F90 │ │ └── WrapperFactoryListSingleton.F90 ├── FacetMatrix │ ├── CMakeLists.txt │ └── src │ │ ├── FacetMatrix1.inc │ │ ├── FacetMatrix11.inc │ │ ├── FacetMatrix12.inc │ │ ├── FacetMatrix13.inc │ │ ├── FacetMatrix14.inc │ │ ├── FacetMatrix15.inc │ │ ├── FacetMatrix2.inc │ │ ├── FacetMatrix21.inc │ │ ├── FacetMatrix22.inc │ │ ├── FacetMatrix3.inc │ │ ├── FacetMatrix4.inc │ │ ├── FacetMatrix5.inc │ │ └── FacetMatrix_Method.F90 ├── ForceVector │ ├── CMakeLists.txt │ └── src │ │ └── ForceVector_Method.F90 ├── Geometry │ ├── CMakeLists.txt │ └── src │ │ ├── Geometry_Method.F90 │ │ ├── Line_Method.F90 │ │ ├── Plane_Method.F90 │ │ ├── ReferenceElement_Method.F90 │ │ ├── ReferenceHexahedron_Method.F90 │ │ ├── ReferenceLine_Method.F90 │ │ ├── ReferencePoint_Method.F90 │ │ ├── ReferencePrism_Method.F90 │ │ ├── ReferencePyramid_Method.F90 │ │ ├── ReferenceQuadrangle_Method.F90 │ │ ├── ReferenceTetrahedron_Method.F90 │ │ ├── ReferenceTriangle_Method.F90 │ │ ├── Triangle_Method.F90 │ │ └── assets │ │ ├── geometry_burkardt_line.inc │ │ ├── geometry_burkardt_triangle.inc │ │ └── geometry_by_burkardt.inc ├── GlobalData │ ├── CMakeLists.txt │ └── src │ │ ├── ElementNames.txt │ │ └── GlobalData.F90 ├── Gnuplot │ ├── CMakeLists.txt │ └── src │ │ └── ogpf.F90 ├── Hashing │ ├── CMakeLists.txt │ └── src │ │ └── Hashing32.F90 ├── IndexValue │ ├── CMakeLists.txt │ └── src │ │ └── IndexValue_Method.F90 ├── IntVector │ ├── CMakeLists.txt │ └── src │ │ ├── IntVector_AppendMethod.F90 │ │ ├── IntVector_ConstructorMethod.F90 │ │ ├── IntVector_EnquireMethod.F90 │ │ ├── IntVector_GetMethod.F90 │ │ ├── IntVector_IOMethod.F90 │ │ ├── IntVector_Method.F90 │ │ └── IntVector_SetMethod.F90 ├── IterationData │ ├── CMakeLists.txt │ └── src │ │ └── IterationData_Method.F90 ├── Kdtree2 │ ├── CMakeLists.txt │ └── src │ │ ├── Kd2PQueue_Module.F90 │ │ └── Kdtree2_Module.F90 ├── KeyValue │ ├── CMakeLists.txt │ └── src │ │ └── KeyValue_Method.F90 ├── LISInterface │ ├── CMakeLists.txt │ └── src │ │ ├── LISBasic.F90 │ │ ├── LISInterface.F90 │ │ ├── LISParam.F90 │ │ └── LISVector.F90 ├── Lapack │ ├── CMakeLists.txt │ └── src │ │ ├── GE_CompRoutineMethods.F90 │ │ ├── GE_EigenValueMethods.F90 │ │ ├── GE_LUMethods.F90 │ │ ├── GE_Lapack_Method.F90 │ │ ├── GE_LinearSolveMethods.F90 │ │ ├── GE_SingularValueMethods.F90 │ │ ├── Lapack_Method.F90 │ │ ├── Sym_CompRoutineMethods.F90 │ │ ├── Sym_EigenValueMethods.F90 │ │ ├── Sym_LUMethods.F90 │ │ ├── Sym_Lapack_Method.F90 │ │ ├── Sym_LinearSolveMethods.F90 │ │ └── Sym_SingularValueMethods.F90 ├── LuaInterface │ ├── CMakeLists.txt │ └── src │ │ ├── LuaInterface.F90 │ │ └── No_LuaInterface.F90 ├── Macro │ └── vectorclass.inc ├── MassMatrix │ ├── CMakeLists.txt │ └── src │ │ └── MassMatrix_Method.F90 ├── MdEncode │ ├── CMakeLists.txt │ └── src │ │ └── MdEncode_Method.F90 ├── MetisInterface │ ├── CMakeLists.txt │ └── src │ │ ├── MetisInterface.F90 │ │ └── MetisInterface.inc ├── MultiIndices │ ├── CMakeLists.txt │ └── src │ │ └── MultiIndices_Method.F90 ├── OpenMP │ ├── CMakeLists.txt │ └── src │ │ └── OpenMP_Method.F90 ├── PENF │ ├── CMakeLists.txt │ ├── LICENSE.gpl3.md │ └── src │ │ ├── BCTON.inc │ │ ├── BSTR.inc │ │ ├── COMPACT_REAL_STRING.inc │ │ ├── CTOA.inc │ │ ├── STR.inc │ │ ├── STRZ.inc │ │ ├── STR_ASCII.inc │ │ ├── STR_UCS4.inc │ │ ├── penf.F90 │ │ ├── penf_b_size.F90 │ │ ├── penf_global_parameters_variables.F90 │ │ └── penf_stringify.F90 ├── Polynomial │ ├── CMakeLists.txt │ └── src │ │ ├── Chebyshev1PolynomialUtility.F90 │ │ ├── HexahedronInterpolationUtility.F90 │ │ ├── InterpolationUtility.F90 │ │ ├── JacobiPolynomialUtility.F90 │ │ ├── LagrangePolynomialUtility.F90 │ │ ├── LegendrePolynomialUtility.F90 │ │ ├── LineInterpolationUtility.F90 │ │ ├── LobattoPolynomialUtility.F90 │ │ ├── OrthogonalPolynomialUtility.F90 │ │ ├── PolynomialUtility.F90 │ │ ├── PrismInterpolationUtility.F90 │ │ ├── PyramidInterpolationUtility.F90 │ │ ├── QuadrangleInterpolationUtility.F90 │ │ ├── RecursiveNodesUtility.F90 │ │ ├── TetrahedronInterpolationUtility.F90 │ │ ├── TriangleInterpolationUtility.F90 │ │ ├── UltrasphericalPolynomialUtility.F90 │ │ └── UnscaledLobattoPolynomialUtility.F90 ├── QuadraturePoint │ ├── CMakeLists.txt │ └── src │ │ └── QuadraturePoint_Method.F90 ├── Random │ ├── CMakeLists.txt │ └── src │ │ └── Random_Method.F90 ├── Rank2Tensor │ ├── CMakeLists.txt │ └── src │ │ └── Rank2Tensor_Method.F90 ├── RaylibInterface │ ├── CMakeLists.txt │ └── src │ │ ├── Raylib.F90 │ │ ├── RaylibCamera.F90 │ │ ├── RaylibCheckMethods.F90 │ │ ├── RaylibDrawMethods.F90 │ │ ├── RaylibEnums.F90 │ │ ├── RaylibGenMethods.F90 │ │ ├── RaylibGetMethods.F90 │ │ ├── RaylibImageMethods.F90 │ │ ├── RaylibIsMethods.F90 │ │ ├── RaylibLoadMethods.F90 │ │ ├── RaylibMath.F90 │ │ ├── RaylibMethods.F90 │ │ ├── RaylibSetMethods.F90 │ │ ├── RaylibTypes.F90 │ │ ├── RaylibUnloadMethods.F90 │ │ ├── RaylibUtil.F90 │ │ └── __Raylib.F90 ├── RealMatrix │ ├── CMakeLists.txt │ └── src │ │ └── RealMatrix_Method.F90 ├── RealVector │ ├── CMakeLists.txt │ └── src │ │ ├── RealVector_AddMethods.F90 │ │ ├── RealVector_AppendMethods.F90 │ │ ├── RealVector_AssignMethods.F90 │ │ ├── RealVector_Blas1Methods.F90 │ │ ├── RealVector_ComparisonMethods.F90 │ │ ├── RealVector_ConstructorMethods.F90 │ │ ├── RealVector_GetMethods.F90 │ │ ├── RealVector_GetValueMethods.F90 │ │ ├── RealVector_IOMethods.F90 │ │ ├── RealVector_Method.F90 │ │ ├── RealVector_Norm2ErrorMethods.F90 │ │ ├── RealVector_Norm2Methods.F90 │ │ ├── RealVector_SetMethods.F90 │ │ └── RealVector_ShallowCopyMethods.F90 ├── STConvectiveMatrix │ ├── CMakeLists.txt │ └── src │ │ ├── STConvectiveMatrix_Method.F90 │ │ └── del.inc ├── STDiffusionMatrix │ ├── CMakeLists.txt │ └── src │ │ └── STDiffusionMatrix_Method.F90 ├── STForceVector │ ├── CMakeLists.txt │ └── src │ │ └── STForceVector_Method.F90 ├── STMassMatrix │ ├── CMakeLists.txt │ └── src │ │ └── STMassMatrix_Method.F90 ├── StiffnessMatrix │ ├── CMakeLists.txt │ └── src │ │ └── StiffnessMatrix_Method.F90 ├── String │ ├── CMakeLists.txt │ └── src │ │ ├── String_Class.F90 │ │ └── String_Method.F90 ├── SuperLUInterface │ ├── CMakeLists.txt │ └── src │ │ ├── SuperLUInterface.F90 │ │ ├── SuperLU_Enums.F90 │ │ ├── SuperLU_Types.F90 │ │ ├── SuperLU_Util_Methods.F90 │ │ ├── SuperLU_dUtil_Methods.F90 │ │ ├── SuperLU_dgscon_Methods.F90 │ │ ├── SuperLU_dgsequ_Methods.F90 │ │ ├── SuperLU_dgsisx_Methods.F90 │ │ ├── SuperLU_dgsitrf_Methods.F90 │ │ ├── SuperLU_dgsrfs_Methods.F90 │ │ ├── SuperLU_dgssv_Methods.F90 │ │ ├── SuperLU_dgssvx_Methods.F90 │ │ ├── SuperLU_dgstrf_Methods.F90 │ │ ├── SuperLU_dgstrs_Methods.F90 │ │ ├── SuperLU_dlaqgs_Methods.F90 │ │ └── include │ │ └── macros.inc ├── System │ ├── CMakeLists.txt │ └── src │ │ ├── System_Method.F90 │ │ └── System_Method.c ├── Test │ ├── CMakeLists.txt │ └── src │ │ ├── README.txt │ │ ├── Test_Base.F90 │ │ ├── Test_Is.F90 │ │ ├── Test_Method.F90 │ │ ├── Test_More.F90 │ │ ├── Test_Planning.F90 │ │ ├── is_i.inc │ │ └── is_r.inc ├── TriangleInterface │ ├── CMakeLists.txt │ └── src │ │ ├── TriangleInterface.F90 │ │ ├── report.c │ │ ├── triangle.c │ │ └── triangle.h ├── Utility │ ├── CMakeLists.txt │ └── src │ │ ├── AppendUtility.F90 │ │ ├── ApproxUtility.F90 │ │ ├── ArangeUtility.F90 │ │ ├── AssertUtility.F90 │ │ ├── BinomUtility.F90 │ │ ├── ContractionUtility.F90 │ │ ├── ConvertUtility.F90 │ │ ├── DiagUtility.F90 │ │ ├── EigenUtility.F90 │ │ ├── EyeUtility.F90 │ │ ├── GridPointUtility.F90 │ │ ├── HashingUtility.F90 │ │ ├── HeadUtility.F90 │ │ ├── InputUtility.F90 │ │ ├── IntegerUtility.F90 │ │ ├── InvUtility.F90 │ │ ├── LinearAlgebraUtility.F90 │ │ ├── MappingUtility.F90 │ │ ├── MatmulUtility.F90 │ │ ├── MedianUtility.F90 │ │ ├── MiscUtility.F90 │ │ ├── OnesUtility.F90 │ │ ├── PartitionUtility.F90 │ │ ├── ProductUtility.F90 │ │ ├── PushPopUtility.F90 │ │ ├── ReallocateUtility.F90 │ │ ├── SafeSizeUtility.F90 │ │ ├── SortUtility.F90 │ │ ├── SplitUtility.F90 │ │ ├── StringUtility.F90 │ │ ├── SwapUtility.F90 │ │ ├── SymUtility.F90 │ │ ├── TailUtility.F90 │ │ ├── TriagUtility.F90 │ │ ├── Utility.F90 │ │ ├── ZerosUtility.F90 │ │ └── refs │ │ └── mathPlantFEM.inc ├── Vector3D │ ├── CMakeLists.txt │ └── src │ │ └── Vector3D_Method.F90 ├── VoigtRank2Tensor │ ├── CMakeLists.txt │ └── src │ │ └── VoigtRank2Tensor_Method.F90 └── easifemBase │ ├── CMakeLists.txt │ └── src │ └── easifemBase.F90 └── submodules ├── ARPACK ├── CMakeLists.txt └── src │ └── ARPACK_SAUPD@Methods.F90 ├── BoundingBox ├── CMakeLists.txt └── src │ ├── BoundingBox_Method@ConstructorMethods.F90 │ ├── BoundingBox_Method@GetMethods.F90 │ ├── BoundingBox_Method@IOMethods.F90 │ ├── BoundingBox_Method@SetMethods.F90 │ └── BoundingBox_Method@TomlMethods.F90 ├── CMakeLists.txt ├── CSRMatrix ├── CMakeLists.txt └── src │ ├── CSRMatrix_AddMethods@Methods.F90 │ ├── CSRMatrix_ConstructorMethods@Methods.F90 │ ├── CSRMatrix_DBCMethods@Methods.F90 │ ├── CSRMatrix_DiagonalScalingMethods@Methods.F90 │ ├── CSRMatrix_GetBlockColMethods@Methods.F90 │ ├── CSRMatrix_GetBlockRowMethods@Methods.F90 │ ├── CSRMatrix_GetColMethods@Methods.F90 │ ├── CSRMatrix_GetMethods@Methods.F90 │ ├── CSRMatrix_GetRowMethods@Methods.F90 │ ├── CSRMatrix_GetSubMatrixMethods@Methods.F90 │ ├── CSRMatrix_ILUMethods@Methods.F90 │ ├── CSRMatrix_IOMethods@Methods.F90 │ ├── CSRMatrix_LUSolveMethods@Methods.F90 │ ├── CSRMatrix_LinSolveMethods@Methods.F90 │ ├── CSRMatrix_MatVecMethods@Methods.F90 │ ├── CSRMatrix_MatrixMarketIO@Methods.F90 │ ├── CSRMatrix_ReorderingMethods@Methods.F90 │ ├── CSRMatrix_SchurMethods@Methods.F90 │ ├── CSRMatrix_SetBlockColMethods@Methods.F90 │ ├── CSRMatrix_SetBlockRowMethods@Methods.F90 │ ├── CSRMatrix_SetColMethods@Methods.F90 │ ├── CSRMatrix_SetMethods@Methods.F90 │ ├── CSRMatrix_SetRowMethods@Methods.F90 │ ├── CSRMatrix_SparsityMethods@Methods.F90 │ ├── CSRMatrix_SpectralMethods@Methods.F90 │ ├── CSRMatrix_SuperLU@Methods.F90 │ ├── CSRMatrix_SymMatmulMethods@Methods.F90 │ └── CSRMatrix_UnaryMethods@Methods.F90 ├── CSRSparsity ├── CMakeLists.txt └── src │ ├── CSRSparsity_Method@ConstructorMethods.F90 │ ├── CSRSparsity_Method@GetMethods.F90 │ ├── CSRSparsity_Method@IOMethods.F90 │ ├── CSRSparsity_Method@SetMethods.F90 │ └── CSRSparsity_Method@SymMethods.F90 ├── ConvectiveMatrix ├── CMakeLists.txt ├── ConvectiveMatrix-old │ ├── Constructor.part │ ├── ConvectiveMatrix_10.part │ ├── ConvectiveMatrix_11.part │ ├── ConvectiveMatrix_12.part │ ├── ConvectiveMatrix_9.part │ ├── ConvectiveMatrix_Class.f90 │ ├── MdFiles │ │ └── ConvectiveMatrix_Class.md │ └── MethodNames.part └── src │ ├── CM_1.inc │ ├── CM_10.inc │ ├── CM_2.inc │ ├── CM_3.inc │ ├── CM_4.inc │ ├── CM_5.inc │ ├── CM_6.inc │ ├── CM_7.inc │ ├── CM_8.inc │ ├── CM_9.inc │ └── ConvectiveMatrix_Method@Methods.F90 ├── DOF ├── CMakeLists.txt └── src │ ├── DOF_AddMethods@Methods.F90 │ ├── DOF_ConstructorMethods@Methods.F90 │ ├── DOF_GetMethods@Methods.F90 │ ├── DOF_GetValueMethods@Methods.F90 │ ├── DOF_IOMethods@Methods.F90 │ └── DOF_SetMethods@Methods.F90 ├── DiffusionMatrix ├── CMakeLists.txt └── src │ ├── DM_1.inc │ ├── DM_10.inc │ ├── DM_2.inc │ ├── DM_3.inc │ ├── DM_4.inc │ ├── DM_5.inc │ ├── DM_6.inc │ ├── DM_7.inc │ ├── DM_8.inc │ ├── DM_9.inc │ └── DiffusionMatrix_Method@Methods.F90 ├── ElasticNitscheMatrix ├── CMakeLists.txt └── src │ ├── ElasticNitscheMatrix_Method@Matrix1.F90 │ ├── ElasticNitscheMatrix_Method@Matrix2.F90 │ ├── ElasticNitscheMatrix_Method@Matrix3.F90 │ ├── ElasticNitscheMatrix_Method@MatrixNormal.F90 │ └── ElasticNitscheMatrix_Method@MatrixTangent.F90 ├── ElemshapeData ├── CMakeLists.txt └── src │ ├── DG │ ├── ElemshapeData_DGMethods@HermitMethods.F90 │ ├── ElemshapeData_DGMethods@HierarchyMethods.F90 │ ├── ElemshapeData_DGMethods@LagrangeMethods.F90 │ ├── ElemshapeData_DGMethods@OrthogonalMethods.F90 │ └── ElemshapeData_DGMethods@SerendipityMethods.F90 │ ├── ElemshapeData_ConstructorMethods@Methods.F90 │ ├── ElemshapeData_DivergenceMethods@Methods.F90 │ ├── ElemshapeData_GetMethods@Methods.F90 │ ├── ElemshapeData_GradientMethods@Methods.F90 │ ├── ElemshapeData_HRGNParamMethods@Methods.F90 │ ├── ElemshapeData_HRQIParamMethods@Methods.F90 │ ├── ElemshapeData_HminHmaxMethods@Methods.F90 │ ├── ElemshapeData_IOMethods@Methods.F90 │ ├── ElemshapeData_InterpolMethods@Methods.F90 │ ├── ElemshapeData_LocalDivergenceMethods@Methods.F90 │ ├── ElemshapeData_LocalGradientMethods@Methods.F90 │ ├── ElemshapeData_ProjectionMethods@Methods.F90 │ ├── ElemshapeData_SetMethods@Methods.F90 │ ├── ElemshapeData_StabilizationParamMethods@SUGN3.F90 │ ├── ElemshapeData_StabilizationParamMethods@SUPG.F90 │ ├── ElemshapeData_StabilizationParamMethods@Takizawa2018.F90 │ ├── ElemshapeData_UnitNormalMethods@Methods.F90 │ ├── H1 │ ├── ElemshapeData_H1Methods@HermitMethods.F90 │ ├── ElemshapeData_H1Methods@HierarchyMethods.F90 │ ├── ElemshapeData_H1Methods@LagrangeMethods.F90 │ ├── ElemshapeData_H1Methods@OrthogonalMethods.F90 │ └── ElemshapeData_H1Methods@SerendipityMethods.F90 │ ├── HCurl │ ├── ElemshapeData_HCurlMethods@HermitMethods.F90 │ ├── ElemshapeData_HCurlMethods@HierarchyMethods.F90 │ ├── ElemshapeData_HCurlMethods@LagrangeMethods.F90 │ ├── ElemshapeData_HCurlMethods@OrthogonalMethods.F90 │ └── ElemshapeData_HCurlMethods@SerendipityMethods.F90 │ └── HDiv │ ├── ElemshapeData_HDivMethods@HermitMethods.F90 │ ├── ElemshapeData_HDivMethods@HierarchyMethods.F90 │ ├── ElemshapeData_HDivMethods@LagrangeMethods.F90 │ ├── ElemshapeData_HDivMethods@OrthogonalMethods.F90 │ └── ElemshapeData_HDivMethods@SerendipityMethods.F90 ├── FEMatrix └── src │ └── STCM │ └── STCM_1.inc ├── FEVariable ├── CMakeLists.txt └── src │ ├── FEVariable_Method@AbsMethods.F90 │ ├── FEVariable_Method@AdditionMethods.F90 │ ├── FEVariable_Method@ConstructorMethods.F90 │ ├── FEVariable_Method@DivisionMethods.F90 │ ├── FEVariable_Method@DotProductMethods.F90 │ ├── FEVariable_Method@EqualMethods.F90 │ ├── FEVariable_Method@GetMethods.F90 │ ├── FEVariable_Method@IOMethods.F90 │ ├── FEVariable_Method@MeanMethods.F90 │ ├── FEVariable_Method@MultiplicationMethods.F90 │ ├── FEVariable_Method@Norm2Methods.F90 │ ├── FEVariable_Method@PowerMethods.F90 │ ├── FEVariable_Method@SqrtMethods.F90 │ ├── FEVariable_Method@SubtractionMethods.F90 │ ├── MatrixElemMethod.inc │ ├── MatrixOperatorMatrix.inc │ ├── MatrixOperatorReal.inc │ ├── MatrixOperatorScalar.inc │ ├── MatrixPower.inc │ ├── RealOperatorMatrix.inc │ ├── RealOperatorScalar.inc │ ├── RealOperatorVector.inc │ ├── ScalarElemMethod.inc │ ├── ScalarOperatorMatrix.inc │ ├── ScalarOperatorReal.inc │ ├── ScalarOperatorScalar.inc │ ├── ScalarOperatorVector.inc │ ├── ScalarPower.inc │ ├── VectorElemMethod.inc │ ├── VectorOperatorReal.inc │ ├── VectorOperatorScalar.inc │ ├── VectorOperatorVector.inc │ └── VectorPower.inc ├── FacetMatrix ├── CMakeLists.txt └── src │ ├── FacetMatrix_Method@FacetMatrix11Methods.F90 │ ├── FacetMatrix_Method@FacetMatrix12Methods.F90 │ ├── FacetMatrix_Method@FacetMatrix13Methods.F90 │ ├── FacetMatrix_Method@FacetMatrix14Methods.F90 │ ├── FacetMatrix_Method@FacetMatrix15Methods.F90 │ ├── FacetMatrix_Method@FacetMatrix1Methods.F90 │ ├── FacetMatrix_Method@FacetMatrix21Methods.F90 │ ├── FacetMatrix_Method@FacetMatrix22Methods.F90 │ ├── FacetMatrix_Method@FacetMatrix2Methods.F90 │ ├── FacetMatrix_Method@FacetMatrix3Methods.F90 │ ├── FacetMatrix_Method@FacetMatrix4Methods.F90 │ └── FacetMatrix_Method@FacetMatrix5Methods.F90 ├── ForceVector ├── CMakeLists.txt └── src │ └── ForceVector_Method@Methods.F90 ├── Geometry ├── CMakeLists.txt └── src │ ├── Line_Method@Methods.F90 │ ├── Plane_Method@Methods.F90 │ ├── ReferenceElement_Method@ConstructorMethods.F90 │ ├── ReferenceElement_Method@ElementNameMethods.F90 │ ├── ReferenceElement_Method@EnquireMethods.F90 │ ├── ReferenceElement_Method@FacetElementMethods.F90 │ ├── ReferenceElement_Method@GeometryMethods.F90 │ ├── ReferenceElement_Method@IOMethods.F90 │ ├── ReferenceElement_Method@LocalNodeCoordsMethods.F90 │ ├── ReferenceElement_Method@VTKMethods.F90 │ ├── ReferenceHexahedron_Method@Methods.F90 │ ├── ReferenceLine_Method@Methods.F90 │ ├── ReferencePoint_Method@Methods.F90 │ ├── ReferencePrism_Method@Methods.F90 │ ├── ReferencePyramid_Method@Methods.F90 │ ├── ReferenceQuadrangle_Method@Methods.F90 │ ├── ReferenceTetrahedron_Method@Methods.F90 │ ├── ReferenceTriangle_Method@Methods.F90 │ ├── Triangle_Method@Methods.F90 │ ├── inc │ └── aux.inc │ └── modified_burkardt.inc ├── Hashing ├── CMakeLists.txt └── src │ ├── Hashing32@fnvMethods.F90 │ ├── Hashing32@nmMethods.F90 │ ├── Hashing32@waterMethods.F90 │ └── delme.F90 ├── IndexValue ├── CMakeLists.txt └── src │ └── IndexValue_Method@Constructor.F90 ├── IntVector ├── CMakeLists.txt └── src │ ├── IntVector_AppendMethod@Methods.F90 │ ├── IntVector_ConstructorMethod@Methods.F90 │ ├── IntVector_EnquireMethod@Methods.F90 │ ├── IntVector_GetMethod@Methods.F90 │ ├── IntVector_IOMethod@Methods.F90 │ ├── IntVector_SetMethod@Methods.F90 │ └── include │ ├── intvec_get_10.inc │ ├── intvec_get_11.inc │ ├── intvec_get_12.inc │ └── intvec_get_13.inc ├── IterationData ├── CMakeLists.txt └── src │ ├── IterationData_Method@ConstructorMethods.F90 │ └── IterationData_Method@IOMethods.F90 ├── KeyValue ├── CMakeLists.txt └── src │ ├── KeyValue_Method@Constructor.F90 │ ├── KeyValue_Method@getMethod.F90 │ └── KeyValue_Method@setMethod.F90 ├── Lapack ├── CMakeLists.txt └── src │ ├── GE_CompRoutineMethods@Methods.F90 │ ├── GE_EigenValueMethods@Methods.F90 │ ├── GE_LUMethods@Methods.F90 │ ├── GE_Lapack_Method@CompRoutineMethods.F90 │ ├── GE_Lapack_Method@EigenvalueMethods.F90 │ ├── GE_Lapack_Method@LUMethods.F90 │ ├── GE_Lapack_Method@LinearSolveMethods.F90 │ ├── GE_LinearSolveMethods@Methods.F90 │ ├── GE_SingularValueMethods@Methods.F90 │ ├── Sym_CompRoutineMethods@Methods.F90 │ ├── Sym_EigenValueMethods@Methods.F90 │ ├── Sym_LUMethods@Methods.F90 │ ├── Sym_Lapack_Method@LUMethods.F90 │ ├── Sym_Lapack_Method@LinearSolveMethods.F90 │ ├── Sym_LinearSolveMethods@Methods.F90 │ └── Sym_SingularValueMethods@Methods.F90 ├── MassMatrix ├── CMakeLists.txt └── src │ ├── MM_1.inc │ ├── MM_2a.inc │ ├── MM_2b.inc │ ├── MM_2c.inc │ ├── MM_2d.inc │ ├── MM_3.inc │ └── MassMatrix_Method@Methods.F90 ├── MdEncode ├── CMakeLists.txt └── src │ ├── MdEncode_Method@Methods.F90 │ └── inc │ ├── MdEncode_2.inc │ ├── MdEncode_3.inc │ ├── MdEncode_3b.inc │ ├── MdEncode_6.inc │ └── MdEncode_7.inc ├── MultiIndices ├── CMakeLists.txt └── src │ └── MultiIndices_Method@Methods.F90 ├── OpenMP ├── CMakeLists.txt └── src │ └── OpenMP_Method@Constructor.F90 ├── Polynomial ├── CMakeLists.txt └── src │ ├── Chebyshev1PolynomialUtility@Methods.F90 │ ├── EquidistanceLIP_Tetrahedron.inc │ ├── EquidistanceLIP_Triangle.inc │ ├── HexahedronInterpolationUtility@Methods.F90 │ ├── InterpolationUtility@Methods.F90 │ ├── JacobiPolynomialUtility@Methods.F90 │ ├── LagrangePolynomialUtility@Methods.F90 │ ├── LegendrePolynomialUtility@Methods.F90 │ ├── LineInterpolationUtility@Methods.F90 │ ├── LobattoPolynomialUtility@Methods.F90 │ ├── OrthogonalPolynomialUtility@Methods.F90 │ ├── PrismInterpolationUtility@Methods.F90 │ ├── PyramidInterpolationUtility@Methods.F90 │ ├── QuadrangleInterpolationUtility@Methods.F90 │ ├── QuadraturePoint_Tetrahedron_Solin.F90 │ ├── QuadraturePoint_Triangle_InternalUseOnly.F90 │ ├── QuadraturePoint_Triangle_Solin.F90 │ ├── RecursiveNodesUtility@Methods.F90 │ ├── TetrahedronInterpolationUtility@Methods.F90 │ ├── TriangleInterpolationUtility@HeirarchicalBasisMethods.F90 │ ├── TriangleInterpolationUtility@LagrangeBasisMethods.F90 │ ├── TriangleInterpolationUtility@Methods.F90 │ ├── TriangleInterpolationUtility@OrthogonalBasisMethods.F90 │ ├── TriangleInterpolationUtility@QuadratureMethods.F90 │ ├── UltrasphericalPolynomialUtility@Methods.F90 │ ├── UnscaledLobattoPolynomialUtility@Methods.F90 │ ├── deprecated │ └── TriangleInterpolationUtility@Methods.F90 │ └── include │ └── Quadrangle │ ├── edge_12.inc │ ├── edge_14.inc │ ├── edge_21.inc │ ├── edge_23.inc │ ├── edge_32.inc │ ├── edge_34.inc │ ├── edge_41.inc │ ├── edge_43.inc │ ├── vertex_1.inc │ ├── vertex_2.inc │ ├── vertex_3.inc │ └── vertex_4.inc ├── QuadraturePoint ├── CMakeLists.txt └── src │ ├── QuadraturePoint_Method@ConstructorMethods.F90 │ ├── QuadraturePoint_Method@GetMethods.F90 │ └── QuadraturePoint_Method@IOMethods.F90 ├── Random ├── CMakeLists.txt └── src │ └── Random_Method@Methods.F90 ├── Rank2Tensor ├── CMakeLists.txt └── src │ ├── Rank2Tensor_Method@ConstructorMethods.F90 │ ├── Rank2Tensor_Method@ContractionMethods.F90 │ ├── Rank2Tensor_Method@IOMethods.F90 │ ├── Rank2Tensor_Method@InvarMethods.F90 │ ├── Rank2Tensor_Method@OperatorMethods.F90 │ ├── Rank2Tensor_Method@PullbackMethods.F90 │ ├── Rank2Tensor_Method@PushForwardMethods.F90 │ ├── matrix_exponential.F90 │ └── old data │ ├── ContinuumSpin │ └── ContinuumSpin_Class.F90 │ ├── DeformationGradient │ ├── DeformationGradient_Class.F90 │ ├── DeformationTensor.part │ ├── Display.part │ ├── MdFiles │ │ └── DeformationGradient_Class.md │ └── StrainTensor.part │ ├── Interface.part │ ├── LeftCauchyGreen │ └── LeftCauchyGreen_Class.F90 │ ├── MaterialJacobian │ ├── Display.part │ ├── Initiate.part │ ├── MaterialJacobian.part │ ├── MaterialJacobian_Class.F90 │ ├── MaterialJacobian_Pointer.part │ ├── MdFiles │ │ └── MaterialJacobian_Class.md │ ├── Names.part │ ├── OperatorOverloading │ │ ├── Addition.part │ │ ├── Asterics.part │ │ ├── Cijkl.part │ │ ├── Contraction.part │ │ ├── Matmul.part │ │ └── Subtraction.part │ └── getCijkl.part │ ├── MdFiles │ └── Tensor_Class.md │ ├── Old_Rank4Tensors.part │ ├── Old_StrainMeasures.part │ ├── Old_getCDash.part │ ├── Old_getCSigmaTruesdell.part │ ├── OperatorInterface.part │ ├── OperatorOverloading │ ├── Addition.part │ ├── Asterics.part │ ├── Determinant.part │ ├── Inverse.part │ ├── MatMul.part │ ├── Otimes.part │ └── Transpose.part │ ├── RightCauchyGreen │ └── RightCauchyGreen_Class.F90 │ ├── Strain │ ├── AlmansiStrain_Class.F90 │ ├── GreenStrain_Class.F90 │ ├── SmallStrain_Class.F90 │ └── Strain_Class.F90 │ ├── StrainRate │ └── StrainRate_Class.F90 │ ├── Stress │ ├── CauchyStress.part │ ├── Constructor.part │ ├── Display.part │ ├── EshelbyStress.part │ ├── Interface.part │ ├── KirchhoffStress.part │ ├── MdFiles │ │ └── Stress_Class.md │ ├── OperatorOverloading │ │ ├── Addition.part │ │ ├── Assignment.part │ │ ├── Asterics.part │ │ ├── Invariant.part │ │ ├── Matmul.part │ │ ├── Otimes.part │ │ └── Shape.part │ ├── Pk1Stress.part │ ├── Pk2Stress.part │ ├── SpectralDecomposition.part │ ├── StressType.part │ ├── Stress_Class.F90 │ ├── TensorDecomposition.part │ └── getStress.part │ ├── Stress_Old │ ├── Initiate.part │ ├── Invariants.part │ ├── StressDecomposition.part │ ├── StressDerivatives.part │ ├── Stress_Class.F90 │ ├── getHillTensor.part │ ├── getLength.part │ ├── getSigma.part │ └── setSigma.part │ ├── Tensor.F90 │ └── VelocityGradient │ └── VelocityGradient_Class.F90 ├── RealMatrix ├── CMakeLists.txt └── src │ ├── RealMatrix_Method@BLASMethods.F90 │ ├── RealMatrix_Method@ConstructorMethods.F90 │ ├── RealMatrix_Method@GetValuesMethods.F90 │ ├── RealMatrix_Method@IOMethods.F90 │ ├── RealMatrix_Method@IterativeSolverMethods.F90 │ ├── RealMatrix_Method@LAPACKMethods.F90 │ ├── RealMatrix_Method@MatmulMethods.F90 │ └── RealMatrix_Method@SetValuesMethods.F90 ├── RealVector ├── CMakeLists.txt └── src │ ├── RealVector_AddMethods@Methods.F90 │ ├── RealVector_AppendMethods@Methods.F90 │ ├── RealVector_AssignMethods@Methods.F90 │ ├── RealVector_Blas1Methods@Methods.F90 │ ├── RealVector_ComparisonMethods@Methods.F90 │ ├── RealVector_ConstructorMethods@Methods.F90 │ ├── RealVector_GetMethods@Methods.F90 │ ├── RealVector_GetValueMethods@Methods.F90 │ ├── RealVector_IOMethods@Methods.F90 │ ├── RealVector_Norm2ErrorMethods@Methods.F90 │ ├── RealVector_Norm2Methods@Methods.F90 │ ├── RealVector_SetMethods@Methods.F90 │ ├── RealVector_ShallowCopyMethods@Methods.F90 │ └── Save_hdf5.F90 ├── STConvectiveMatrix ├── CMakeLists.txt ├── STConvectiveMatrix-old │ ├── Constructor.part │ ├── ConvectiveMatrix_10.part │ ├── ConvectiveMatrix_11.part │ ├── ConvectiveMatrix_12.part │ ├── ConvectiveMatrix_13.part │ ├── ConvectiveMatrix_14.part │ ├── ConvectiveMatrix_15.part │ ├── ConvectiveMatrix_16.part │ ├── ConvectiveMatrix_17.part │ ├── ConvectiveMatrix_18.part │ ├── ConvectiveMatrix_19.part │ ├── ConvectiveMatrix_20.part │ ├── ConvectiveMatrix_21.part │ ├── ConvectiveMatrix_22.part │ ├── ConvectiveMatrix_23.part │ ├── ConvectiveMatrix_24.part │ ├── ConvectiveMatrix_25.part │ ├── ConvectiveMatrix_26.part │ ├── ConvectiveMatrix_27.part │ ├── ConvectiveMatrix_28.part │ ├── ConvectiveMatrix_29.part │ ├── ConvectiveMatrix_30.part │ ├── ConvectiveMatrix_31.part │ ├── ConvectiveMatrix_32.part │ ├── ConvectiveMatrix_33.part │ ├── ConvectiveMatrix_34.part │ ├── ConvectiveMatrix_35.part │ ├── ConvectiveMatrix_36.part │ ├── ConvectiveMatrix_37.part │ ├── ConvectiveMatrix_38.part │ ├── ConvectiveMatrix_39.part │ ├── ConvectiveMatrix_9.part │ ├── MdFiles │ │ └── STConvectiveMatrix_Class.md │ ├── MethodNames.part │ └── STConvectiveMatrix_Class.f90 └── src │ ├── STCM_1.inc │ ├── STCM_10.inc │ ├── STCM_11.inc │ ├── STCM_12.inc │ ├── STCM_13.inc │ ├── STCM_14.inc │ ├── STCM_15.inc │ ├── STCM_16.inc │ ├── STCM_17.inc │ ├── STCM_2.inc │ ├── STCM_3.inc │ ├── STCM_4.inc │ ├── STCM_5.inc │ ├── STCM_6.inc │ ├── STCM_7.inc │ ├── STCM_8.inc │ ├── STCM_9.inc │ └── STConvectiveMatrix_Method@Methods.F90 ├── STDiffusionMatrix ├── CMakeLists.txt ├── STDiffusionMatrix-old │ ├── Constructor.part │ ├── DiffusionMatrix_1.part │ ├── DiffusionMatrix_10.part │ ├── DiffusionMatrix_11.part │ ├── DiffusionMatrix_12.part │ ├── DiffusionMatrix_13.part │ ├── DiffusionMatrix_14.part │ ├── DiffusionMatrix_15.part │ ├── DiffusionMatrix_16.part │ ├── DiffusionMatrix_17.part │ ├── DiffusionMatrix_18.part │ ├── DiffusionMatrix_19.part │ ├── DiffusionMatrix_2.part │ ├── DiffusionMatrix_20.part │ ├── DiffusionMatrix_21.part │ ├── DiffusionMatrix_22.part │ ├── DiffusionMatrix_23.part │ ├── DiffusionMatrix_24.part │ ├── DiffusionMatrix_25.part │ ├── DiffusionMatrix_26.part │ ├── DiffusionMatrix_27.part │ ├── DiffusionMatrix_28.part │ ├── DiffusionMatrix_29.part │ ├── DiffusionMatrix_3.part │ ├── DiffusionMatrix_30.part │ ├── DiffusionMatrix_31.part │ ├── DiffusionMatrix_4.part │ ├── DiffusionMatrix_5.part │ ├── DiffusionMatrix_6.part │ ├── DiffusionMatrix_7.part │ ├── DiffusionMatrix_8.part │ ├── DiffusionMatrix_9.part │ ├── MethodNames.part │ ├── STDiffusionMatrix_Class.f90 │ └── STDiffusionMatrix_Class.md └── src │ ├── STDM_1.inc │ ├── STDM_11.inc │ ├── STDM_12.inc │ ├── STDM_13.inc │ ├── STDM_14.inc │ ├── STDM_2.inc │ ├── STDM_3.inc │ ├── STDM_4.inc │ ├── STDM_5.inc │ ├── STDM_6.inc │ ├── STDM_7.inc │ ├── STDM_8.inc │ └── STDiffusionMatrix_Method@Methods.F90 ├── STFextVector ├── Constructor.part ├── FextVector_1.part ├── FextVector_10.part ├── FextVector_11.part ├── FextVector_12.part ├── FextVector_13.part ├── FextVector_14.part ├── FextVector_15.part ├── FextVector_16.part ├── FextVector_17.part ├── FextVector_18.part ├── FextVector_19.part ├── FextVector_2.part ├── FextVector_20.part ├── FextVector_21.part ├── FextVector_22.part ├── FextVector_23.part ├── FextVector_24.part ├── FextVector_25.part ├── FextVector_26.part ├── FextVector_3.part ├── FextVector_4.part ├── FextVector_5.part ├── FextVector_6.part ├── FextVector_7.part ├── FextVector_8.part ├── FextVector_9.part ├── MdFiles │ └── STFextVector_Class.md ├── MethodNames.part ├── STFextVector_Class.f90 └── delme.f90 ├── STFintVector ├── Constructor.part ├── FintVector_1.part ├── FintVector_2.part ├── FintVector_3.part ├── FintVector_4.part ├── FintVector_5.part ├── FintVector_6.part ├── FintVector_7.part ├── FintVector_8.part ├── MdFiles │ └── STFintVector_Class.md ├── MethodNames.part └── STFintVector_Class.f90 ├── STForceVector ├── CMakeLists.txt └── src │ ├── STFV_1.inc │ ├── STFV_10.inc │ ├── STFV_11.inc │ ├── STFV_12.inc │ ├── STFV_13.inc │ ├── STFV_14.inc │ ├── STFV_15.inc │ ├── STFV_16.inc │ ├── STFV_17.inc │ ├── STFV_18.inc │ ├── STFV_19.inc │ ├── STFV_2.inc │ ├── STFV_20.inc │ ├── STFV_21.inc │ ├── STFV_3.inc │ ├── STFV_4.inc │ ├── STFV_5.inc │ ├── STFV_6.inc │ ├── STFV_7.inc │ ├── STFV_8.inc │ ├── STFV_9.inc │ └── STForceVector_Method@Methods.F90 ├── STMassMatrix ├── CMakeLists.txt ├── STMassMatrix-old │ ├── Constructor.part │ ├── MassMatrix_15.part │ ├── MassMatrix_16.part │ ├── MassMatrix_17.part │ ├── MassMatrix_18.part │ ├── MassMatrix_3.part │ └── STMassMatrix_Class.md └── src │ ├── STMM_1.inc │ ├── STMM_10.inc │ ├── STMM_10a.inc │ ├── STMM_10b.inc │ ├── STMM_10c.inc │ ├── STMM_10d.inc │ ├── STMM_11.inc │ ├── STMM_11a.inc │ ├── STMM_11b.inc │ ├── STMM_11c.inc │ ├── STMM_11d.inc │ ├── STMM_12.inc │ ├── STMM_12a.inc │ ├── STMM_12b.inc │ ├── STMM_12c.inc │ ├── STMM_12d.inc │ ├── STMM_13.inc │ ├── STMM_14.inc │ ├── STMM_15.inc │ ├── STMM_16.inc │ ├── STMM_17.inc │ ├── STMM_17_20.inc │ ├── STMM_18.inc │ ├── STMM_19.inc │ ├── STMM_2.inc │ ├── STMM_20.inc │ ├── STMM_21.inc │ ├── STMM_21a.inc │ ├── STMM_21b.inc │ ├── STMM_21c.inc │ ├── STMM_21d.inc │ ├── STMM_22.inc │ ├── STMM_22a.inc │ ├── STMM_22b.inc │ ├── STMM_22c.inc │ ├── STMM_22d.inc │ ├── STMM_23.inc │ ├── STMM_23a.inc │ ├── STMM_23b.inc │ ├── STMM_23c.inc │ ├── STMM_23d.inc │ ├── STMM_24.inc │ ├── STMM_24a.inc │ ├── STMM_24b.inc │ ├── STMM_24c.inc │ ├── STMM_24d.inc │ ├── STMM_25.inc │ ├── STMM_26.inc │ ├── STMM_27.inc │ ├── STMM_28.inc │ ├── STMM_3.inc │ ├── STMM_4.inc │ ├── STMM_5.inc │ ├── STMM_6.inc │ ├── STMM_7.inc │ ├── STMM_8.inc │ ├── STMM_9.inc │ ├── STMM_9a.inc │ ├── STMM_9b.inc │ ├── STMM_9c.inc │ ├── STMM_9d.inc │ └── STMassMatrix_Method@Methods.F90 ├── STStiffnessMatrix ├── Constructor.part ├── MdFiles │ └── STStiffnessMatrix_Class.md ├── MethodNames.part ├── STStiffnessMatrix_Class.f90 ├── StiffnessMatrix_1.part ├── StiffnessMatrix_10.part ├── StiffnessMatrix_11.part ├── StiffnessMatrix_12.part ├── StiffnessMatrix_13.part ├── StiffnessMatrix_14.part ├── StiffnessMatrix_2.part ├── StiffnessMatrix_3.part ├── StiffnessMatrix_4.part ├── StiffnessMatrix_5.part ├── StiffnessMatrix_6.part ├── StiffnessMatrix_7.part ├── StiffnessMatrix_8.part └── StiffnessMatrix_9.part ├── ST_Tau_SUPG_RGN ├── Constructor.part ├── MdFiles │ ├── ._ST_TAU_SUPG_RGN_Class.md │ └── ST_TAU_SUPG_RGN_Class.md ├── MethodNamesForScalar.part ├── MethodNamesForVector.part ├── ST_Tau_SUPG_RGN_Class.f90 ├── SUPG_Scalar_1.part ├── SUPG_Scalar_10.part ├── SUPG_Scalar_11.part ├── SUPG_Scalar_12.part ├── SUPG_Scalar_2.bk ├── SUPG_Scalar_2.part ├── SUPG_Scalar_3.part ├── SUPG_Scalar_4.part ├── SUPG_Scalar_5.part ├── SUPG_Scalar_6.part ├── SUPG_Scalar_7.part ├── SUPG_Scalar_8.part ├── SUPG_Scalar_9.part ├── SUPG_Vector_1.part ├── SUPG_Vector_10.part ├── SUPG_Vector_11.part ├── SUPG_Vector_12.part ├── SUPG_Vector_2.part ├── SUPG_Vector_3.part ├── SUPG_Vector_4.part ├── SUPG_Vector_5.part ├── SUPG_Vector_6.part ├── SUPG_Vector_7.part ├── SUPG_Vector_8.part └── SUPG_Vector_9.part ├── StiffnessMatrix ├── CMakeLists.txt └── src │ └── StiffnessMatrix_Method@Methods.F90 ├── TriangleInterface ├── CMakeLists.txt └── src │ ├── TriangleInterface@Methods.F90 │ ├── definemacro.h │ └── undefinemacro.h ├── Utility ├── CMakeLists.txt └── src │ ├── Append │ ├── Append_1.inc │ ├── Append_1cd.inc │ ├── Append_2.inc │ ├── Append_2abcd.inc │ ├── Append_2cd.inc │ ├── Append_3.inc │ ├── Append_3cd.inc │ ├── Append_4.inc │ └── Append_4cd.inc │ ├── AppendUtility@Methods.F90 │ ├── ApproxUtility@Methods.F90 │ ├── ArangeUtility@Methods.F90 │ ├── AssertUtility@Methods.F90 │ ├── BinomUtility@Methods.F90 │ ├── ColConcat │ ├── ColConcat_1.inc │ ├── ColConcat_2.inc │ ├── ColConcat_3.inc │ └── ColConcat_4.inc │ ├── ContractionUtility@Methods.F90 │ ├── ConvertUtility@Methods.F90 │ ├── Diag │ ├── SetDiag.inc │ ├── SetTriDiag.inc │ └── Tridiag.inc │ ├── DiagUtility@Methods.F90 │ ├── EigenUtility@Methods.F90 │ ├── Expand │ ├── Expand.inc │ └── ExpandMatrix.inc │ ├── EyeUtility@Methods.F90 │ ├── GridPointUtility@Methods.F90 │ ├── HashingUtility@Methods.F90 │ ├── HeadUtility@Methods.F90 │ ├── HeapSort │ ├── ArgHeapSort.inc │ └── HeapSort.inc │ ├── In │ ├── In_1.inc │ └── IsIn_1.inc │ ├── Input │ └── Input1.inc │ ├── InputUtility@Methods.F90 │ ├── InsertionSort │ ├── ArgInsertionSort.inc │ └── InsertionSort.inc │ ├── IntegerUtility@Methods.F90 │ ├── Intersection │ └── Intersection.inc │ ├── IntroSort │ ├── ArgIntroSort.inc │ ├── IntroSort.inc │ ├── Recursive_ArgIntroSort.inc │ └── Recursive_IntroSort.inc │ ├── InvUtility@Methods.F90 │ ├── LinearAlgebraUtility@Methods.F90 │ ├── MappingUtility@Methods.F90 │ ├── MatmulUtility@Methods.F90 │ ├── Median │ ├── ArgMedian.inc │ └── Median.inc │ ├── MedianUtility@Methods.F90 │ ├── MiscUtility@Methods.F90 │ ├── OnesUtility@Methods.F90 │ ├── Partition │ ├── ArgPartition.inc │ └── Partition.inc │ ├── PartitionUtility@Methods.F90 │ ├── ProductUtility@Methods.F90 │ ├── PushPop │ ├── Pop_Scalar.inc │ └── Push_Scalar.inc │ ├── PushPopUtility@Methods.F90 │ ├── QuickSort │ ├── QuickSort1Vec.inc │ ├── QuickSort2Vec.inc │ ├── QuickSort3Vec.inc │ └── QuickSort4Vec.inc │ ├── ReallocateUtility@Methods.F90 │ ├── RemoveDuplicates │ ├── RemoveDuplicates_1.inc │ └── RemoveDuplicates_2.inc │ ├── Repeat │ └── Repeat_1.inc │ ├── RowConcat │ ├── RowConcat_1.inc │ ├── RowConcat_2.inc │ ├── RowConcat_3.inc │ └── RowConcat_4.inc │ ├── SafeSizeUtility@Methods.F90 │ ├── Sort │ ├── ArgSort.inc │ └── Sort.inc │ ├── SortUtility@Methods.F90 │ ├── SplitUtility@Methods.F90 │ ├── StringUtility@Methods.F90 │ ├── SwapUtility@Methods.F90 │ ├── Sym │ ├── GetSym.inc │ └── Sym.inc │ ├── SymUtility@Methods.F90 │ ├── TailUtility@Methods.F90 │ ├── Triag │ ├── GetTril1.inc │ ├── GetTril2.inc │ ├── GetTriu1.inc │ ├── GetTriu2.inc │ ├── SetTril1.inc │ ├── SetTril2.inc │ ├── SetTril3.inc │ ├── SetTriu1.inc │ ├── SetTriu2.inc │ ├── SetTriu3.inc │ ├── Tril1.inc │ ├── Tril2.inc │ ├── Triu1.inc │ └── Triu2.inc │ ├── TriagUtility@Methods.F90 │ ├── ZerosUtility@Methods.F90 │ └── inc │ ├── EquidistanceLIP_Tetrahedron.inc │ └── EquidistanceLIP_Triangle.inc ├── Vector └── ToDo │ └── VectorOperations.part ├── Vector3D ├── CMakeLists.txt ├── Vector3D_Method@Misc.F90 └── src │ ├── Vector3D_Method@Constructor.F90 │ └── Vector3D_Method@Misc.F90 └── VoigtRank2Tensor ├── CMakeLists.txt └── src ├── VoigtRank2Tensor_Method@Constructor.F90 └── VoigtRank2Tensor_Method@IO.F90 /.fortls: -------------------------------------------------------------------------------- 1 | { 2 | "source_dirs": [ 3 | "src/**" 4 | ], 5 | "excl_suffixes": [ 6 | "_skip.F90", 7 | ".bk", 8 | ".ignore" 9 | ], 10 | "pp_suffixes": [ 11 | ".F90", 12 | ".inc", 13 | ".part", 14 | ".f90" 15 | ], 16 | "pp_defs": {}, 17 | "include_dirs": [], 18 | "ext_source_dirs": [], 19 | "lowercase_intrinsics": false, 20 | "debug_log": false, 21 | "disable_diagnostics": false, 22 | "sort_keywords": false, 23 | "use_signature_help": true, 24 | "hover_signature": true, 25 | "hover_language": "fortran", 26 | "enable_code_actions": false, 27 | "symbol_skip_mem": false 28 | } 29 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitconfig: -------------------------------------------------------------------------------- 1 | # This is Git's per-user configuration file. 2 | [user] 3 | # Please adapt and uncomment the following lines: 4 | name = Vikas Sharma 5 | email = vickysharma0812@gmail.com 6 | -------------------------------------------------------------------------------- /.github/.pr-labeler.yml: -------------------------------------------------------------------------------- 1 | utility: utility/* 2 | sparsematrix: sparsematrix/* 3 | working: ['working/*', 'work/*'] 4 | linalg: ['sparsematrix/*', 'sparse/*', 'monolish/*', 'blas/*', 'lapack/*'] 5 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: 'wishlist' 6 | 'inspiration' 7 | assignees: '' 8 | 9 | --- 10 | 11 | **Describe the bug** 12 | A clear and concise description of what the bug is. 13 | 14 | **To Reproduce** 15 | Steps to reproduce the behavior: 16 | 1. Go to '...' 17 | 2. Click on '....' 18 | 3. Scroll down to '....' 19 | 4. See error 20 | 21 | **Expected behavior** 22 | A clear and concise description of what you expected to happen. 23 | 24 | **Screenshots** 25 | If applicable, add screenshots to help explain your problem. 26 | 27 | **Desktop (please complete the following information):** 28 | - OS: [e.g. iOS] 29 | - Browser [e.g. chrome, safari] 30 | - Version [e.g. 22] 31 | 32 | **Smartphone (please complete the following information):** 33 | - Device: [e.g. iPhone6] 34 | - OS: [e.g. iOS8.1] 35 | - Browser [e.g. stock browser, safari] 36 | - Version [e.g. 22] 37 | 38 | **Additional context** 39 | Add any other context about the problem here. 40 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: 'wishlist' 6 | 'inspiration' 7 | assignees: '' 8 | 9 | --- 10 | 11 | **Is your feature request related to a problem? Please describe.** 12 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 13 | 14 | **Describe the solution you'd like** 15 | A clear and concise description of what you want to happen. 16 | 17 | **Describe alternatives you've considered** 18 | A clear and concise description of any alternative solutions or features you've considered. 19 | 20 | **Additional context** 21 | Add any other context or screenshots about the feature request here. 22 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/inspiration.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Inspiration 3 | about: Tell us about other projects so that we can use it in easifemBase 4 | title: "[Inspiration]" 5 | labels: 'Inspiration' 6 | 'wishlist' 7 | assignees: vickysharma0812 8 | 9 | --- 10 | 11 | # EASIFEM-INSPIRATION 12 | 13 | ## Project name 14 | 15 | ### Developer 16 | 17 | ### Age 18 | 19 | ### Field of application 20 | 21 | ### Activity status 22 | 23 | ## Why should it be covered in easifemBase 24 | -------------------------------------------------------------------------------- /.github/workflows/pr-labeler.yml: -------------------------------------------------------------------------------- 1 | name: PR Labeler 2 | on: 3 | pull_request: 4 | types: [opened] 5 | 6 | jobs: 7 | pr-labeler: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: TimonVS/pr-labeler-action@v3 11 | with: 12 | configuration-path: .github/pr-labeler.yml # optional, .github/pr-labeler.yml is the default value 13 | env: 14 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 15 | 16 | 17 | # Reference 18 | # https://github.com/marketplace/actions/pr-labeler -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # ignore following extesions 2 | # added by vikas 3 | # 2-Dec-2018 4 | *.a 5 | *.mod 6 | *.smod 7 | *.o 8 | *.out 9 | *.i90 10 | *.if90 11 | *.DS_Store 12 | *.cache 13 | *.prj 14 | *.drawio 15 | *.log 16 | *.pdf 17 | vscode-settings 18 | docs/ 19 | media/ 20 | */build/ 21 | build/ 22 | src/build/ 23 | src/modules/build/ 24 | src/submodules/build/ 25 | _packages/ 26 | compile_commands.json 27 | compile_commands.json 28 | neovim.json 29 | selected 30 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools", 3 | "cmake.buildDirectory": "/home/vikassharma/temp/easifem-base/build", 4 | "cmake.generator": "", 5 | "cmake.installPrefix": "/home/vikassharma/.easifem/base", 6 | "cmake.configureOnOpen": false 7 | } -------------------------------------------------------------------------------- /Workspaces/BLAS.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "../src/modules/BLAS" 5 | }, 6 | { 7 | "path": "../src/submodules/BLAS" 8 | }, 9 | { 10 | "path": "../tests/BLAS" 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /Workspaces/OpenMP.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "../src/modules/BLAS" 5 | }, 6 | { 7 | "path": "../src/submodules/BLAS" 8 | }, 9 | { 10 | "path": "../tests/BLAS" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /Workspaces/Polynomial: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/easifem/base/ed1acf98b678aef38192a76f1461fb57e79c113e/Workspaces/Polynomial -------------------------------------------------------------------------------- /Workspaces/SparseMatrix.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "../src/modules/CSRMatrix" 5 | }, 6 | { 7 | "path": "../src/modules/CSRSparsity" 8 | }, 9 | { 10 | "path": "../src/submodules/CSRMatrix" 11 | }, 12 | { 13 | "path": "../src/submodules/CSRSparsity" 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /Workspaces/Tensor.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "../src/modules/Rank2Tensor" 5 | }, 6 | { 7 | "path": "../src/submodules/Rank2Tensor" 8 | } 9 | ] 10 | } -------------------------------------------------------------------------------- /Workspaces/Utility.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "../src/modules/Utility" 5 | }, 6 | { 7 | "path": "../src/submodules/Utility" 8 | } 9 | ] 10 | } -------------------------------------------------------------------------------- /Workspaces/refelem.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "../src/modules/ElemshapeData" 5 | }, 6 | { 7 | "path": "../src/modules/Geometry" 8 | }, 9 | { 10 | "path": "../src/modules/QuadraturePoint" 11 | }, 12 | { 13 | "path": "../src/modules/ReferenceElement" 14 | }, 15 | { 16 | "path": "../src/submodules/ElemshapeData" 17 | }, 18 | { 19 | "path": "../src/submodules/QuadraturePoint" 20 | }, 21 | { 22 | "path": "../src/submodules/ReferenceElement" 23 | } 24 | ] 25 | } -------------------------------------------------------------------------------- /base.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "." 5 | } 6 | ], 7 | "settings": { 8 | "cmake.installPrefix": "~/.easifem/base" 9 | } 10 | } -------------------------------------------------------------------------------- /cmake/addFFTW.cmake: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library Expandable And Scalable 2 | # Infrastructure for Finite Element Methods htttps://www.easifem.com Vikas 3 | # Sharma, Ph.D., vickysharma0812@gmail.com 4 | # 5 | # This program is free software: you can redistribute it and/or modify it under 6 | # the terms of the GNU General Public License as published by the Free Software 7 | # Foundation, either version 3 of the License, or (at your option) any later 8 | # version. 9 | # 10 | # This program is distributed in the hope that it will be useful, but WITHOUT 11 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 12 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 13 | # details. 14 | # 15 | # You should have received a copy of the GNU General Public License along with 16 | # this program. If not, see 17 | # 18 | 19 | option(USE_FFTW OFF) 20 | if(USE_FFTW) 21 | 22 | list(APPEND TARGET_COMPILE_DEF "-DUSE_FFTW") 23 | 24 | find_library(FFTW_LIBRARIES NAMES fftw fftw3 REQUIRED) 25 | 26 | target_link_libraries(${PROJECT_NAME} PUBLIC ${FFTW_LIBRARIES}) 27 | message(STATUS "FFTW_LIBRARY : ${FFTW_LIBRARIES}") 28 | 29 | else() 30 | 31 | message(STATUS "NOT USING FFTW LIBRARIES") 32 | 33 | endif() 34 | -------------------------------------------------------------------------------- /cmake/addLapack95.cmake: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library Expandable And Scalable 2 | # Infrastructure for Finite Element Methods htttps://www.easifem.com Vikas 3 | # Sharma, Ph.D., vickysharma0812@gmail.com 4 | # 5 | # This program is free software: you can redistribute it and/or modify it under 6 | # the terms of the GNU General Public License as published by the Free Software 7 | # Foundation, either version 3 of the License, or (at your option) any later 8 | # version. 9 | # 10 | # This program is distributed in the hope that it will be useful, but WITHOUT 11 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 12 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 13 | # details. 14 | # 15 | # You should have received a copy of the GNU General Public License along with 16 | # this program. If not, see 17 | # 18 | 19 | if(USE_LAPACK95) 20 | 21 | find_package(LAPACK95 REQUIRED) 22 | 23 | if(LAPACK95_FOUND) 24 | message(STATUS "[INFO] :: FOUND LAPACK95") 25 | target_link_libraries(${PROJECT_NAME} PUBLIC LAPACK95::LAPACK95) 26 | list(APPEND TARGET_COMPILE_DEF "-DUSE_LAPACK95") 27 | 28 | else() 29 | message(ERROR "[ERROR] :: NOT FOUND LAPACK95") 30 | 31 | endif() 32 | 33 | endif() 34 | -------------------------------------------------------------------------------- /cmake/addMetis.cmake: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library Expandable And Scalable 2 | # Infrastructure for Finite Element Methods htttps://www.easifem.com Vikas 3 | # Sharma, Ph.D., vickysharma0812@gmail.com 4 | # 5 | # This program is free software: you can redistribute it and/or modify it under 6 | # the terms of the GNU General Public License as published by the Free Software 7 | # Foundation, either version 3 of the License, or (at your option) any later 8 | # version. 9 | # 10 | # This program is distributed in the hope that it will be useful, but WITHOUT 11 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 12 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 13 | # details. 14 | # 15 | # You should have received a copy of the GNU General Public License along with 16 | # this program. If not, see 17 | # 18 | 19 | option(USE_METIS ON) 20 | if(USE_METIS) 21 | find_library(METIS_LIB metis) 22 | list(APPEND TARGET_COMPILE_DEF "-DUSE_METIS") 23 | message(STATUS "FOUND ${METIS_LIB}") 24 | message(STATUS "METIS_LIB = ${METIS_LIB}") 25 | target_link_libraries(${PROJECT_NAME} PUBLIC ${METIS_LIB}) 26 | else() 27 | message(STATUS "NOT USING METIS") 28 | endif() 29 | -------------------------------------------------------------------------------- /cmake/addSparsekit.cmake: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library Expandable And Scalable 2 | # Infrastructure for Finite Element Methods htttps://www.easifem.com Vikas 3 | # Sharma, Ph.D., vickysharma0812@gmail.com 4 | # 5 | # This program is free software: you can redistribute it and/or modify it under 6 | # the terms of the GNU General Public License as published by the Free Software 7 | # Foundation, either version 3 of the License, or (at your option) any later 8 | # version. 9 | # 10 | # This program is distributed in the hope that it will be useful, but WITHOUT 11 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 12 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 13 | # details. 14 | # 15 | # You should have received a copy of the GNU General Public License along with 16 | # this program. If not, see 17 | # 18 | 19 | find_package(Sparsekit REQUIRED) 20 | 21 | if(Sparsekit_FOUND) 22 | message(STATUS "[INFO] :: FOUND Sparsekit") 23 | target_link_libraries(${PROJECT_NAME} PUBLIC Sparsekit::Sparsekit) 24 | 25 | else() 26 | message(ERROR "[ERROR] :: NOT FOUND Sparsekit") 27 | 28 | endif() 29 | -------------------------------------------------------------------------------- /cmake/addSuperLU.cmake: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library Expandable And Scalable 2 | # Infrastructure for Finite Element Methods htttps://www.easifem.com Vikas 3 | # Sharma, Ph.D., vickysharma0812@gmail.com 4 | # 5 | # This program is free software: you can redistribute it and/or modify it under 6 | # the terms of the GNU General Public License as published by the Free Software 7 | # Foundation, either version 3 of the License, or (at your option) any later 8 | # version. 9 | # 10 | # This program is distributed in the hope that it will be useful, but WITHOUT 11 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 12 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 13 | # details. 14 | # 15 | # You should have received a copy of the GNU General Public License along with 16 | # this program. If not, see 17 | # 18 | 19 | option(USE_SUPERLU ON) 20 | if(USE_SUPERLU) 21 | find_library(SuperLU_Libs superlu) 22 | list(APPEND TARGET_COMPILE_DEF "-DUSE_SuperLU") 23 | message(STATUS "[INFO] :: SuperLU_Libs = ${SuperLU_Libs}") 24 | endif() 25 | target_link_libraries(${PROJECT_NAME} PUBLIC ${SuperLU_Libs}) 26 | -------------------------------------------------------------------------------- /cmake/addToml.cmake: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library Expandable And Scalable 2 | # Infrastructure for Finite Element Methods htttps://www.easifem.com Vikas 3 | # Sharma, Ph.D., vickysharma0812@gmail.com 4 | # 5 | # This program is free software: you can redistribute it and/or modify it under 6 | # the terms of the GNU General Public License as published by the Free Software 7 | # Foundation, either version 3 of the License, or (at your option) any later 8 | # version. 9 | # 10 | # This program is distributed in the hope that it will be useful, but WITHOUT 11 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 12 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 13 | # details. 14 | # 15 | # You should have received a copy of the GNU General Public License along with 16 | # this program. If not, see 17 | # 18 | 19 | find_package(toml-f REQUIRED) 20 | 21 | if(Sparsekit_FOUND) 22 | message(STATUS "[INFO] :: FOUND toml-f") 23 | target_link_libraries(${PROJECT_NAME} PUBLIC toml-f::toml-f) 24 | 25 | else() 26 | message(ERROR "[ERROR] :: NOT FOUND toml-f") 27 | 28 | endif() 29 | -------------------------------------------------------------------------------- /easifemBase.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/easifem/base/ed1acf98b678aef38192a76f1461fb57e79c113e/easifemBase.py -------------------------------------------------------------------------------- /easifemvar.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/easifem/base/ed1acf98b678aef38192a76f1461fb57e79c113e/easifemvar.sh -------------------------------------------------------------------------------- /figures/banner.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/easifem/base/ed1acf98b678aef38192a76f1461fb57e79c113e/figures/banner.jpeg -------------------------------------------------------------------------------- /neovim.json: -------------------------------------------------------------------------------- 1 | {"cargo":{"dap_name":"lldb"},"cmake":{"build_type":"Debug","dap_name":"lldb","args":{"configure":["-D","CMAKE_EXPORT_COMPILE_COMMANDS=1","-G","Ninja","-D","USE_OPENMP=ON"]},"env":{"configure":[]},"build_dir":"{cwd}\/build\/{os}-{build_type}","cmd":"cmake"}} -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "shiki": "^0.11.1" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /pages/Install_MacOSX.md: -------------------------------------------------------------------------------- 1 | # Install easifemBase on MacOSX 2 | 3 | ## System requirements 4 | 5 | ```bash 6 | brew install gcc 7 | brew install gfortran 8 | brew install libomp 9 | brew install curl 10 | brew install git 11 | brew install python3 12 | brew install cmake 13 | brew install ninja 14 | brew install lapack 15 | brew install openblas 16 | brew install hdf5 17 | brew install plplot 18 | brew install gnuplot 19 | brew install doxygen 20 | brew install gtk4 21 | ``` 22 | -------------------------------------------------------------------------------- /pages/Install_Windows.md: -------------------------------------------------------------------------------- 1 | # Installation of easifemBase on Windows 2 | 3 | Coming soon. 4 | -------------------------------------------------------------------------------- /selected: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/easifem/base/ed1acf98b678aef38192a76f1461fb57e79c113e/selected -------------------------------------------------------------------------------- /setup/requirements.txt: -------------------------------------------------------------------------------- 1 | numpy 2 | scipy 3 | matplotlib 4 | jupyter 5 | jupyterlab 6 | plotly 7 | dash 8 | seaborn 9 | pillow 10 | opencv-python 11 | pandas -------------------------------------------------------------------------------- /setup/set_envvar_CentOS.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/easifem/base/ed1acf98b678aef38192a76f1461fb57e79c113e/setup/set_envvar_CentOS.sh -------------------------------------------------------------------------------- /src/modules/ARPACK/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/EASIFEM_F77_ARPACK.F90 22 | ${src_path}/ARPACK_SAUPD.F90 23 | ${src_path}/EASIFEM_ARPACK.F90 24 | ) -------------------------------------------------------------------------------- /src/modules/ARPACK/src/EASIFEM_ARPACK.F90: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | !> author: Vikas Sharma, Ph. D. 19 | ! date: 2022-12-09 20 | ! summary: This module contains interface to ARPACK lib. 21 | 22 | MODULE EASIFEM_ARPACK 23 | USE EASIFEM_F77_ARPACK 24 | USE ARPACK_SAUPD 25 | END MODULE EASIFEM_ARPACK 26 | -------------------------------------------------------------------------------- /src/modules/BLAS95/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | IF( USE_BLAS95 ) 19 | LIST( APPEND TARGET_COMPILE_DEF "-DUSE_BLAS95" ) 20 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 21 | TARGET_SOURCES( 22 | ${PROJECT_NAME} PRIVATE 23 | ${src_path}/F77_BLAS.F90 24 | ${src_path}/F95_BLAS.F90 25 | ) 26 | ENDIF() 27 | -------------------------------------------------------------------------------- /src/modules/BLAS95/aux/test.F90: -------------------------------------------------------------------------------- 1 | program main 2 | implicit none 3 | 4 | integer :: in, out, iostat, len 5 | character( len = 1000 ) temp 6 | 7 | open( newunit = in, file = '../src/blas95.lst', status="old", & 8 | & action="read" ) 9 | 10 | open( newunit = out, file = './EASIFEM_BLAS.F90', status="replace", & 11 | & action="write" ) 12 | 13 | DO 14 | read( in, *, IOSTAT=iostat) temp 15 | len = LEN_TRIM(temp) 16 | if(temp(1:1) .eq. '#') cycle 17 | write( out, "(A)" ) '#include "./' // temp(1:len) // '"' 18 | if( iostat .LT. 0 ) exit 19 | END DO 20 | 21 | end program main -------------------------------------------------------------------------------- /src/modules/BaseContinuity/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/BaseContinuity_Method.F90 22 | ) 23 | 24 | -------------------------------------------------------------------------------- /src/modules/BaseInterpolation/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/BaseInterpolation_Method.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/modules/BaseMethod/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 16/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/BaseMethod.F90 13 | ) -------------------------------------------------------------------------------- /src/modules/BaseType/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/BaseType.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/modules/BoundingBox/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 16/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/BoundingBox_Method.F90 13 | ) -------------------------------------------------------------------------------- /src/modules/CInterface/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 16/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/CInterface.F90 13 | ) -------------------------------------------------------------------------------- /src/modules/CSRSparsity/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 16/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/CSRSparsity_Method.F90 13 | ) -------------------------------------------------------------------------------- /src/modules/ConvectiveMatrix/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/ConvectiveMatrix_Method.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/modules/DOF/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 18 | TARGET_SOURCES( 19 | ${PROJECT_NAME} PRIVATE 20 | ${src_path}/DOF_Method.F90 21 | ${src_path}/DOF_ConstructorMethods.F90 22 | ${src_path}/DOF_IOMethods.F90 23 | ${src_path}/DOF_GetMethods.F90 24 | ${src_path}/DOF_GetValueMethods.F90 25 | ${src_path}/DOF_SetMethods.F90 26 | ${src_path}/DOF_AddMethods.F90 27 | ) 28 | -------------------------------------------------------------------------------- /src/modules/DOF/src/DOF_Method.F90: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | !> author: Vikas Sharma, Ph. D. 19 | ! date: 23 Feb 2021 20 | ! summary: This module contains methods of [[DOF_]] object 21 | ! 22 | !{!pages/docs-api/DOF/DOF_.md!} 23 | 24 | MODULE DOF_Method 25 | USE DOF_ConstructorMethods 26 | USE DOF_IOMethods 27 | USE DOF_GetMethods 28 | USE DOF_GetValueMethods 29 | USE DOF_SetMethods 30 | USE DOF_AddMethods 31 | END MODULE DOF_Method 32 | -------------------------------------------------------------------------------- /src/modules/DiffusionMatrix/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/DiffusionMatrix_Method.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/modules/Display/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 16/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | 11 | TARGET_SOURCES( 12 | ${PROJECT_NAME} PRIVATE 13 | ${src_path}/disp/disp_i1mod.F90 14 | ${src_path}/disp/disp_i2mod.F90 15 | ${src_path}/disp/disp_i4mod.F90 16 | ${src_path}/disp/disp_i8mod.F90 17 | ${src_path}/disp/disp_l1mod.F90 18 | ${src_path}/disp/disp_r4mod.F90 19 | ${src_path}/disp/disp_r8mod.F90 20 | ${src_path}/disp/disp_r16mod.F90 21 | ${src_path}/disp/disp_charmod.F90 22 | ${src_path}/disp/dispmodule_util.F90 23 | ${src_path}/disp/dispmodule.F90 24 | ${src_path}/disp/putstrmodule.F90 25 | ${src_path}/Display_Method.F90 26 | ) -------------------------------------------------------------------------------- /src/modules/Display/src/Display_Mat3.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | ! Define internal variables 19 | INTEGER(I4B) :: J 20 | DO J = 1, SIZE(Val, 3) 21 | CALL Display(val=Val(:, :, J), & 22 | & msg=TRIM(msg)//"( :, :, "//TRIM(Int2Str(J))//" ) = ", & 23 | & unitNo=unitNo, full=full, advance=advance) 24 | END DO 25 | -------------------------------------------------------------------------------- /src/modules/Display/src/Display_Mat4.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | ! Define internal variables 19 | INTEGER(I4B) :: J, K 20 | DO K = 1, SIZE(Val, 4) 21 | DO J = 1, SIZE(Val, 3) 22 | CALL Display(Val=Val(:, :, J, K), & 23 | & msg=TRIM(msg) & 24 | & //"( :, :, " & 25 | & //TRIM(Int2Str(J)) & 26 | & //", " & 27 | & //TRIM(Int2Str(K)) & 28 | & //" ) = " & 29 | & , unitNo=unitNo, full=full, advance=advance) 30 | END DO 31 | END DO 32 | -------------------------------------------------------------------------------- /src/modules/Display/src/Display_Scalar.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | ! Define internal variables 19 | INTEGER(I4B) :: I 20 | CALL setDefaultSettings 21 | I = stdout; IF (PRESENT(unitNo)) I = unitNo 22 | #ifdef COLOR_DISP 23 | CALL DISP( & 24 | & title=TRIM(colorize(msg, color_fg=COLOR_FG, color_bg=COLOR_BG, & 25 | & style=COLOR_STYLE)), & 26 | & x=val, unit=I, style='left', advance=advance) 27 | #else 28 | CALL DISP(title=msg, x=val, unit=I, style='left', advance=advance) 29 | #endif 30 | -------------------------------------------------------------------------------- /src/modules/Display/src/References/dispmodule-userman.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/easifem/base/ed1acf98b678aef38192a76f1461fb57e79c113e/src/modules/Display/src/References/dispmodule-userman.pdf -------------------------------------------------------------------------------- /src/modules/Display/src/disp/putstrmodule.F90: -------------------------------------------------------------------------------- 1 | MODULE PUTSTRMODULE ! DUMMY VERSION 2 | ! An auxilliary module that accompanies DISPMODULE. This module contains dummy versions of the 3 | ! subroutines putstr and putnl that do nothing. It is needed to avoid an "undefined symbol" link 4 | ! error for these. In addition it defines the named constant (or parameter) DEFAULT_UNIT = -3, 5 | ! which makes the asterisk unit (usually the screen) the default to display on. 6 | ! 7 | ! The purpose of having this module is to make displaying possible in situations where ordinary 8 | ! print- and write-statements do not work. Then this module should be replaced by one defining 9 | ! functional versions of putstr and putnl. An example is given by the commented out PUTSTRMODULE 10 | ! for Matlab mex files below. 11 | ! 12 | integer, parameter :: DEFAULT_UNIT = -3 13 | ! 14 | CONTAINS 15 | subroutine putstr(s) 16 | character(*), intent(in) :: s 17 | integer ldummy, ldummy1 ! these variables exist to avoid unused variable warnings 18 | ldummy = len(s) 19 | ldummy1 = ldummy 20 | ldummy = ldummy1 21 | end subroutine putstr 22 | 23 | subroutine putnl() 24 | end subroutine putnl 25 | END MODULE PUTSTRMODULE 26 | -------------------------------------------------------------------------------- /src/modules/ElasticNitscheMatrix/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/ElasticNitscheMatrix_Method.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/modules/ErrorHandling/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 16/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/ErrorHandling.F90 13 | ) -------------------------------------------------------------------------------- /src/modules/FEMatrix/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 16/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/FEMatrix_Method.F90 13 | ) 14 | -------------------------------------------------------------------------------- /src/modules/FEMatrix/src/FEMatrix_Method.F90: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | MODULE FEMatrix_Method 19 | USE MassMatrix_Method 20 | USE STMassMatrix_Method 21 | USE DiffusionMatrix_Method 22 | USE STDiffusionMatrix_Method 23 | USE ConvectiveMatrix_Method 24 | USE STConvectiveMatrix_Method 25 | USE StiffnessMatrix_Method 26 | USE ElasticNitscheMatrix_Method 27 | USE FacetMatrix_Method 28 | END MODULE FEMatrix_Method 29 | -------------------------------------------------------------------------------- /src/modules/FEVariable/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 16/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/FEVariable_Method.F90 13 | ) -------------------------------------------------------------------------------- /src/modules/FEVector/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/FEVector_Method.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/modules/FEVector/src/FEVector_Method.F90: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | MODULE FEVector_Method 19 | USE ForceVector_Method 20 | USE STForceVector_Method 21 | END MODULE FEVector_Method -------------------------------------------------------------------------------- /src/modules/FFTW/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/FFTW3.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/modules/FPL/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################################# 2 | # Search F90 files recursively in all subdirs 3 | ################################################################# 4 | 5 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 6 | FILE(GLOB_RECURSE WRAPPER_LIB_SRC ${src_path}/Wrapper/*.F90) 7 | TARGET_SOURCES( 8 | ${PROJECT_NAME} PRIVATE 9 | ${WRAPPER_LIB_SRC} 10 | ${src_path}/ErrorMessages.F90 11 | ${src_path}/FPL_utils.F90 12 | ${src_path}/FPL.F90 13 | ${src_path}/ParameterEntry.F90 14 | ${src_path}/ParameterEntryDictionary.F90 15 | ${src_path}/ParameterList.F90 16 | ${src_path}/ParameterRootEntry.F90 17 | ) -------------------------------------------------------------------------------- /src/modules/FacetMatrix/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/FacetMatrix_Method.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/modules/ForceVector/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/ForceVector_Method.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/modules/Geometry/src/Geometry_Method.F90: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | MODULE Geometry_Method 19 | USE ReferenceElement_Method 20 | USE ReferencePoint_Method 21 | USE ReferenceLine_Method 22 | USE ReferenceTriangle_Method 23 | USE ReferenceQuadrangle_Method 24 | USE ReferenceTetrahedron_Method 25 | USE ReferenceHexahedron_Method 26 | USE ReferencePrism_Method 27 | USE ReferencePyramid_Method 28 | USE Line_Method 29 | USE Triangle_Method 30 | USE Plane_Method 31 | END MODULE Geometry_Method 32 | -------------------------------------------------------------------------------- /src/modules/GlobalData/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | 20 | TARGET_SOURCES( 21 | ${PROJECT_NAME} PRIVATE 22 | "${src_path}/GlobalData.F90" 23 | ) -------------------------------------------------------------------------------- /src/modules/Gnuplot/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 16/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/ogpf.F90 13 | ) -------------------------------------------------------------------------------- /src/modules/Hashing/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | 20 | TARGET_SOURCES( 21 | ${PROJECT_NAME} PRIVATE 22 | "${src_path}/Hashing32.F90" 23 | ) -------------------------------------------------------------------------------- /src/modules/IndexValue/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 16/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/IndexValue_Method.F90 13 | ) -------------------------------------------------------------------------------- /src/modules/IntVector/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | 19 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 20 | TARGET_SOURCES( 21 | ${PROJECT_NAME} PRIVATE 22 | ${src_path}/IntVector_ConstructorMethod.F90 23 | ${src_path}/IntVector_IOMethod.F90 24 | ${src_path}/IntVector_GetMethod.F90 25 | ${src_path}/IntVector_SetMethod.F90 26 | ${src_path}/IntVector_AppendMethod.F90 27 | ${src_path}/IntVector_EnquireMethod.F90 28 | ${src_path}/IntVector_Method.F90 29 | ) 30 | -------------------------------------------------------------------------------- /src/modules/IterationData/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 16/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/IterationData_Method.F90 13 | ) -------------------------------------------------------------------------------- /src/modules/Kdtree2/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library Expandable And Scalable 2 | # Infrastructure for Finite Element Methods htttps://www.easifem.com Vikas 3 | # Sharma, Ph.D., vickysharma0812@gmail.com 4 | # 5 | # This program is free software: you can redistribute it and/or modify it under 6 | # the terms of the GNU General Public License as published by the Free Software 7 | # Foundation, either version 3 of the License, or (at your option) any later 8 | # version. 9 | # 10 | # This program is distributed in the hope that it will be useful, but WITHOUT 11 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 12 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 13 | # details. 14 | # 15 | # You should have received a copy of the GNU General Public License along with 16 | # this program. If not, see 17 | # 18 | 19 | set(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 20 | target_sources( 21 | ${PROJECT_NAME} 22 | PRIVATE ${src_path}/Kdtree2_Module.F90 23 | PRIVATE ${src_path}/Kd2PQueue_Module.F90) 24 | -------------------------------------------------------------------------------- /src/modules/KeyValue/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 16/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/KeyValue_Method.F90 13 | ) 14 | -------------------------------------------------------------------------------- /src/modules/LISInterface/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | # IF( USE_LIS ) 19 | # SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 20 | # TARGET_SOURCES( 21 | # ${PROJECT_NAME} PRIVATE 22 | # ${src_path}/LISParam.F90 23 | # ${src_path}/LISBasic.F90 24 | # ${src_path}/LISVector.F90 25 | # ${src_path}/LISInterface.F90 26 | # ) 27 | # ENDIF( ) 28 | -------------------------------------------------------------------------------- /src/modules/LISInterface/src/LISInterface.F90: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | MODULE LISInterface 19 | ! USE LISParam 20 | ! USE LISBasic 21 | ! USE LISVector 22 | END MODULE LISInterface 23 | -------------------------------------------------------------------------------- /src/modules/Lapack/src/GE_SingularValueMethods.F90: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | MODULE GE_SingularValueMethods 19 | USE GlobalData, ONLY: DFP, I4B, LGT 20 | IMPLICIT NONE 21 | PRIVATE 22 | END MODULE GE_SingularValueMethods 23 | -------------------------------------------------------------------------------- /src/modules/Lapack/src/Lapack_Method.F90: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | MODULE Lapack_Method 19 | USE GE_Lapack_Method 20 | USE Sym_Lapack_Method 21 | END MODULE Lapack_Method -------------------------------------------------------------------------------- /src/modules/Lapack/src/Sym_CompRoutineMethods.F90: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | MODULE Sym_CompRoutineMethods 19 | 20 | END MODULE Sym_CompRoutineMethods 21 | -------------------------------------------------------------------------------- /src/modules/Lapack/src/Sym_EigenValueMethods.F90: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | MODULE Sym_EigenValueMethods 19 | 20 | END MODULE Sym_EigenValueMethods 21 | -------------------------------------------------------------------------------- /src/modules/Lapack/src/Sym_SingularValueMethods.F90: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | MODULE Sym_SingularValueMethods 19 | 20 | END MODULE Sym_SingularValueMethods 21 | -------------------------------------------------------------------------------- /src/modules/LuaInterface/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | IF(USE_LUA) 19 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 20 | TARGET_SOURCES( 21 | ${PROJECT_NAME} PRIVATE 22 | ${src_path}/LuaInterface.F90 23 | ) 24 | ELSE() 25 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 26 | TARGET_SOURCES( 27 | ${PROJECT_NAME} PRIVATE 28 | ${src_path}/No_LuaInterface.F90 29 | ) 30 | ENDIF() 31 | -------------------------------------------------------------------------------- /src/modules/LuaInterface/src/No_LuaInterface.F90: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | ! This module is used when we are not using Lua 19 | 20 | MODULE LuaInterface 21 | END MODULE LuaInterface 22 | -------------------------------------------------------------------------------- /src/modules/MassMatrix/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/MassMatrix_Method.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/modules/MdEncode/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/MdEncode_Method.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/modules/MetisInterface/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | 19 | IF(USE_METIS) 20 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 21 | TARGET_SOURCES( 22 | ${PROJECT_NAME} PRIVATE 23 | ${src_path}/MetisInterface.F90 24 | ) 25 | ENDIF() 26 | -------------------------------------------------------------------------------- /src/modules/MultiIndices/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/MultiIndices_Method.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/modules/OpenMP/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 7/03/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/OpenMP_Method.F90 13 | ) -------------------------------------------------------------------------------- /src/modules/QuadraturePoint/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 16/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/QuadraturePoint_Method.F90 13 | ) -------------------------------------------------------------------------------- /src/modules/Random/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 16/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/Random_Method.F90 13 | ) -------------------------------------------------------------------------------- /src/modules/Rank2Tensor/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 16/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/Rank2Tensor_Method.F90 13 | ) -------------------------------------------------------------------------------- /src/modules/RaylibInterface/src/Raylib.F90: -------------------------------------------------------------------------------- 1 | ! raylib.f90 2 | ! 3 | ! A collection of auto-generated Fortran 2018 interface bindings to 4 | ! raylib 5.1. 5 | ! 6 | ! Author: Philipp Engel 7 | ! Licence: ISC 8 | 9 | MODULE Raylib 10 | USE RaylibTypes 11 | USE RaylibEnums 12 | USE RaylibDrawMethods 13 | USE RaylibGetMethods 14 | USE RaylibSetMethods 15 | USE RaylibImageMethods 16 | USE RaylibUnloadMethods 17 | USE RaylibLoadMethods 18 | USE RaylibGenMethods 19 | USE RaylibIsMethods 20 | USE RaylibCheckMethods 21 | USE RaylibMethods 22 | END MODULE Raylib 23 | -------------------------------------------------------------------------------- /src/modules/RealMatrix/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 16/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/RealMatrix_Method.F90 13 | ) 14 | -------------------------------------------------------------------------------- /src/modules/STConvectiveMatrix/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/STConvectiveMatrix_Method.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/modules/STDiffusionMatrix/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/STDiffusionMatrix_Method.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/modules/STForceVector/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/STForceVector_Method.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/modules/STMassMatrix/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/STMassMatrix_Method.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/modules/StiffnessMatrix/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/StiffnessMatrix_Method.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/modules/SuperLUInterface/src/include/macros.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | ! #define SUPERLU_CPTR_ONLY 19 | -------------------------------------------------------------------------------- /src/modules/Test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library Expandable And Scalable 2 | # Infrastructure for Finite Element Methods htttps://www.easifem.com Vikas 3 | # Sharma, Ph.D., vickysharma0812@gmail.com 4 | # 5 | # This program is free software: you can redistribute it and/or modify it under 6 | # the terms of the GNU General Public License as published by the Free Software 7 | # Foundation, either version 3 of the License, or (at your option) any later 8 | # version. 9 | # 10 | # This program is distributed in the hope that it will be useful, but WITHOUT 11 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 12 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 13 | # details. 14 | # 15 | # You should have received a copy of the GNU General Public License along with 16 | # this program. If not, see 17 | # 18 | 19 | set(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 20 | 21 | target_sources( 22 | ${PROJECT_NAME} 23 | PRIVATE ${src_path}/Test_Base.F90 ${src_path}/Test_Planning.F90 24 | ${src_path}/Test_Is.F90 ${src_path}/Test_More.F90 25 | ${src_path}/Test_Method.F90) 26 | 27 | -------------------------------------------------------------------------------- /src/modules/Test/src/Test_Method.F90: -------------------------------------------------------------------------------- 1 | ! Copyright 2015 Dennis Decker Jensen 2 | ! See and 3 | ! Tectonics: gfortran -g -Wall -Wextra -std=f2008ts -c test.f08 4 | ! 5 | ! This program is a part of EASIFEM library 6 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 7 | ! 8 | ! This program is free software: you can redistribute it and/or modify 9 | ! it under the terms of the GNU General Public License as published by 10 | ! the Free Software Foundation, either version 3 of the License, or 11 | ! (at your option) any later version. 12 | ! 13 | ! This program is distributed in the hope that it will be useful, 14 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | ! GNU General Public License for more details. 17 | ! 18 | ! You should have received a copy of the GNU General Public License 19 | ! along with this program. If not, see 20 | ! 21 | 22 | MODULE Test_Method 23 | USE Test_Base, ONLY: test_unit, diago_unit, & 24 | & ok, diago, note, PASS, fail, todo 25 | USE Test_Planning, ONLY: plan, done_testing, skip_all, bail_out 26 | USE Test_More, ONLY: is, isabs, isrel, isnear, skip 27 | END MODULE Test_Method 28 | -------------------------------------------------------------------------------- /src/modules/Test/src/is_i.inc: -------------------------------------------------------------------------------- 1 | ! Template parameter: wp (working precision) 2 | ! Template free identifiers: testline, tests 3 | subroutine is(got, expected, msg) 4 | integer(kind=wp), intent(in) :: got, expected 5 | character(len=*), intent(in), optional :: msg 6 | character(len=:), allocatable :: testmsg, idmsg 7 | character(len=120) gotmsg, expectedmsg 8 | logical good 9 | 10 | if (present(msg)) then 11 | allocate(character(len=len_trim(msg)+20) :: testmsg, idmsg) 12 | write (unit=idmsg, fmt='(A,A,A)') 'Failed test: "', trim(msg), '"' 13 | testmsg = trim(msg) 14 | else 15 | allocate(character(len=30) :: testmsg, idmsg) 16 | write (unit=idmsg, fmt='(A,I0)') 'Failed test no. ', tests + 1 17 | testmsg = "" 18 | end if 19 | write (unit=gotmsg, fmt='(A,I0)') ' got: ', got 20 | write (unit=expectedmsg, fmt='(A,I0)') 'expected: ', expected 21 | 22 | good = got == expected 23 | call testline(good, testmsg, idmsg, gotmsg, expectedmsg) 24 | end 25 | -------------------------------------------------------------------------------- /src/modules/Vector3D/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 16/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/Vector3D_Method.F90 13 | ) -------------------------------------------------------------------------------- /src/modules/VoigtRank2Tensor/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 16/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/VoigtRank2Tensor_Method.F90 13 | ) -------------------------------------------------------------------------------- /src/modules/easifemBase/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 16/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/easifemBase.F90 13 | ) -------------------------------------------------------------------------------- /src/modules/easifemBase/src/easifemBase.F90: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | MODULE easifemBase 19 | USE BaseType 20 | USE BaseMethod 21 | END MODULE easifemBase -------------------------------------------------------------------------------- /src/submodules/ARPACK/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/ARPACK_SAUPD@Methods.F90 22 | ) -------------------------------------------------------------------------------- /src/submodules/BoundingBox/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/BoundingBox_Method@ConstructorMethods.F90 22 | ${src_path}/BoundingBox_Method@SetMethods.F90 23 | ${src_path}/BoundingBox_Method@GetMethods.F90 24 | ${src_path}/BoundingBox_Method@IOMethods.F90 25 | ${src_path}/BoundingBox_Method@TomlMethods.F90 26 | ) 27 | -------------------------------------------------------------------------------- /src/submodules/CSRSparsity/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library Copyright (C) 2020-2023 Vikas 2 | # Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify it under 5 | # the terms of the GNU General Public License as published by the Free Software 6 | # Foundation, either version 3 of the License, or (at your option) any later 7 | # version. 8 | # 9 | # This program is distributed in the hope that it will be useful, but WITHOUT 10 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 11 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 12 | # details. 13 | # 14 | # You should have received a copy of the GNU General Public License along with 15 | # this program. If not, see 16 | # 17 | 18 | set(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | target_sources( 20 | ${PROJECT_NAME} 21 | PRIVATE ${src_path}/CSRSparsity_Method@ConstructorMethods.F90 22 | ${src_path}/CSRSparsity_Method@IOMethods.F90 23 | ${src_path}/CSRSparsity_Method@SetMethods.F90 24 | ${src_path}/CSRSparsity_Method@GetMethods.F90 25 | ${src_path}/CSRSparsity_Method@SymMethods.F90) 26 | -------------------------------------------------------------------------------- /src/submodules/ConvectiveMatrix/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 1/03/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/ConvectiveMatrix_Method@Methods.F90 13 | ) 14 | -------------------------------------------------------------------------------- /src/submodules/ConvectiveMatrix/ConvectiveMatrix-old/MethodNames.part: -------------------------------------------------------------------------------- 1 | getConvectiveMatrix_1, & 2 | getConvectiveMatrix_2, & 3 | getConvectiveMatrix_3, & 4 | getConvectiveMatrix_4, & 5 | getConvectiveMatrix_5, & 6 | getConvectiveMatrix_6, & 7 | getConvectiveMatrix_7, & 8 | getConvectiveMatrix_8, & 9 | getConvectiveMatrix_9, & 10 | getConvectiveMatrix_10, & 11 | getConvectiveMatrix_11, & 12 | getConvectiveMatrix_12 -------------------------------------------------------------------------------- /src/submodules/DiffusionMatrix/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 1/03/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/DiffusionMatrix_Method@Methods.F90 13 | ) 14 | -------------------------------------------------------------------------------- /src/submodules/ElasticNitscheMatrix/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/ElasticNitscheMatrix_Method@Matrix1.F90 22 | ${src_path}/ElasticNitscheMatrix_Method@Matrix2.F90 23 | ${src_path}/ElasticNitscheMatrix_Method@Matrix3.F90 24 | ${src_path}/ElasticNitscheMatrix_Method@MatrixNormal.F90 25 | ${src_path}/ElasticNitscheMatrix_Method@MatrixTangent.F90 26 | ) 27 | -------------------------------------------------------------------------------- /src/submodules/ForceVector/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 1/03/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/ForceVector_Method@Methods.F90 13 | ) 14 | -------------------------------------------------------------------------------- /src/submodules/Hashing/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/Hashing32@fnvMethods.F90 22 | ${src_path}/Hashing32@nmMethods.F90 23 | ${src_path}/Hashing32@waterMethods.F90 24 | ) 25 | -------------------------------------------------------------------------------- /src/submodules/Hashing/src/delme.F90: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/easifem/base/ed1acf98b678aef38192a76f1461fb57e79c113e/src/submodules/Hashing/src/delme.F90 -------------------------------------------------------------------------------- /src/submodules/IndexValue/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 1/03/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/IndexValue_Method@Constructor.F90 13 | ) -------------------------------------------------------------------------------- /src/submodules/IntVector/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/IntVector_ConstructorMethod@Methods.F90 22 | ${src_path}/IntVector_IOMethod@Methods.F90 23 | ${src_path}/IntVector_SetMethod@Methods.F90 24 | ${src_path}/IntVector_AppendMethod@Methods.F90 25 | ${src_path}/IntVector_GetMethod@Methods.F90 26 | ${src_path}/IntVector_EnquireMethod@Methods.F90 27 | ) 28 | -------------------------------------------------------------------------------- /src/submodules/IntVector/src/include/intvec_get_10.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | ! 18 | INTEGER(I4B) :: N, i, tNodes, r1, r2 19 | N = SIZE(obj) 20 | tNodes = 0 21 | DO i = 1, N 22 | tNodes = tNodes + SIZE(obj(i)%Val) 23 | END DO 24 | !! 25 | ALLOCATE (Val(tNodes)) 26 | !! 27 | tNodes = 0; r1 = 0; r2 = 0 28 | DO i = 1, N 29 | r1 = r2 + 1; r2 = r2 + SIZE(obj(i)%Val) 30 | Val(r1:r2) = obj(i)%Val 31 | END DO 32 | !! -------------------------------------------------------------------------------- /src/submodules/IntVector/src/include/intvec_get_11.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: N, i, M 19 | !! 20 | N = SIZE(obj) 21 | M = SIZE(Indx) 22 | !! 23 | ALLOCATE (Val(N * M)) 24 | !! 25 | DO i = 1, N 26 | Val((i - 1) * M + 1:i * M) = obj(i)%Val(Indx) 27 | END DO 28 | !! -------------------------------------------------------------------------------- /src/submodules/IntVector/src/include/intvec_get_12.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: N, i, M 19 | !! 20 | N = SIZE(obj) 21 | M = 1 + (iEnd - iStart) / Stride 22 | !! 23 | ALLOCATE (Val(M * N)) 24 | !! 25 | DO i = 1, N 26 | Val((i - 1) * M + 1:i * M) = obj(i)%Val(iStart:iEnd:Stride) 27 | END DO 28 | !! -------------------------------------------------------------------------------- /src/submodules/IntVector/src/include/intvec_get_13.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | val = obj%val(indx) -------------------------------------------------------------------------------- /src/submodules/IterationData/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/IterationData_Method@ConstructorMethods.F90 22 | ${src_path}/IterationData_Method@IOMethods.F90 23 | ) -------------------------------------------------------------------------------- /src/submodules/KeyValue/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 1/03/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/KeyValue_Method@Constructor.F90 13 | ${src_path}/KeyValue_Method@getMethod.F90 14 | ${src_path}/KeyValue_Method@setMethod.F90 15 | ) -------------------------------------------------------------------------------- /src/submodules/Lapack/src/GE_Lapack_Method@EigenvalueMethods.F90: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | SUBMODULE(GE_Lapack_Method) EigenValueMethods 19 | USE BaseMethod 20 | IMPLICIT NONE 21 | CONTAINS 22 | 23 | !---------------------------------------------------------------------------- 24 | ! DGEES 25 | !---------------------------------------------------------------------------- 26 | 27 | MODULE PROCEDURE dgees_1 28 | END PROCEDURE dgees_1 29 | END SUBMODULE EigenValueMethods -------------------------------------------------------------------------------- /src/submodules/Lapack/src/Sym_CompRoutineMethods@Methods.F90: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | -------------------------------------------------------------------------------- /src/submodules/Lapack/src/Sym_EigenValueMethods@Methods.F90: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | -------------------------------------------------------------------------------- /src/submodules/Lapack/src/Sym_SingularValueMethods@Methods.F90: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | -------------------------------------------------------------------------------- /src/submodules/MassMatrix/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/MassMatrix_Method@Methods.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/submodules/MdEncode/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/MdEncode_Method@Methods.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/submodules/MdEncode/src/inc/MdEncode_2.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: ii, n 19 | n = SIZE(val) 20 | ans = "| " 21 | DO ii = 1, n 22 | ans = ans//" | " 23 | END DO 24 | ans = ans//CHAR_LF 25 | ans = ans//"| " 26 | DO ii = 1, n 27 | ans = ans//" --- | " 28 | END DO 29 | ans = ans//CHAR_LF 30 | 31 | ans = ans//"| " 32 | DO ii = 1, n 33 | ans = ans//MdEncode(val(ii))//" | " 34 | END DO 35 | ans = ans//CHAR_LF 36 | -------------------------------------------------------------------------------- /src/submodules/MdEncode/src/inc/MdEncode_3.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: ii, jj, m, n 19 | m = SIZE(val, 1) 20 | n = SIZE(val, 2) 21 | ans = "| " 22 | DO ii = 1, n 23 | ans = ans//" | " 24 | END DO 25 | ans = ans//CHAR_LF 26 | 27 | ans = ans//"| " 28 | DO ii = 1, n 29 | ans = ans//" --- | " 30 | END DO 31 | ans = ans//CHAR_LF 32 | 33 | DO ii = 1, m 34 | ans = ans // "| " 35 | DO jj = 1, n 36 | ans = ans // MdEncode( val( ii, jj ) ) // " | " 37 | END DO 38 | ans = ans // CHAR_LF 39 | END DO 40 | -------------------------------------------------------------------------------- /src/submodules/MdEncode/src/inc/MdEncode_3b.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | 19 | DO ii = 1, m 20 | ans = ans // " | " 21 | DO jj = 1, n 22 | ans = ans // TRIM( val( ii, jj ) ) // " | " 23 | END DO 24 | ans = ans // CHAR_LF 25 | END DO -------------------------------------------------------------------------------- /src/submodules/MultiIndices/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/MultiIndices_Method@Methods.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/submodules/OpenMP/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 9/03/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/OpenMP_Method@Constructor.F90 13 | ) 14 | -------------------------------------------------------------------------------- /src/submodules/Polynomial/src/include/Quadrangle/edge_12.inc: -------------------------------------------------------------------------------- 1 | 2 | ! nodes on edge 12 3 | jj = ll + 1 4 | IF (cnt .LT. N) THEN 5 | DO ii = 2 + ll, p - ll 6 | cnt = cnt + 1 7 | temp(1, cnt) = xi(ii, jj) 8 | temp(2, cnt) = eta(ii, jj) 9 | END DO 10 | END IF 11 | -------------------------------------------------------------------------------- /src/submodules/Polynomial/src/include/Quadrangle/edge_14.inc: -------------------------------------------------------------------------------- 1 | 2 | ii = ll + 1 3 | IF (cnt .LT. N) THEN 4 | DO jj = 2 + ll, q - ll, 1 5 | cnt = cnt + 1 6 | temp(1, cnt) = xi(ii, jj) 7 | temp(2, cnt) = eta(ii, jj) 8 | END DO 9 | END IF 10 | -------------------------------------------------------------------------------- /src/submodules/Polynomial/src/include/Quadrangle/edge_21.inc: -------------------------------------------------------------------------------- 1 | ! nodes on edge 21 2 | jj = ll + 1 3 | IF (cnt .LT. N) THEN 4 | DO ii = p - ll, 2 + ll, -1 5 | cnt = cnt + 1 6 | temp(1, cnt) = xi(ii, jj) 7 | temp(2, cnt) = eta(ii, jj) 8 | END DO 9 | END IF 10 | -------------------------------------------------------------------------------- /src/submodules/Polynomial/src/include/Quadrangle/edge_23.inc: -------------------------------------------------------------------------------- 1 | 2 | ! nodes on edge 23 3 | ii = p + 1 - ll 4 | IF (cnt .LT. N) THEN 5 | DO jj = 2 + ll, q - ll 6 | cnt = cnt + 1 7 | temp(1, cnt) = xi(ii, jj) 8 | temp(2, cnt) = eta(ii, jj) 9 | END DO 10 | END IF 11 | -------------------------------------------------------------------------------- /src/submodules/Polynomial/src/include/Quadrangle/edge_32.inc: -------------------------------------------------------------------------------- 1 | 2 | ! nodes on edge 32 3 | ii = p + 1 - ll 4 | IF (cnt .LT. N) THEN 5 | DO jj = q - ll, 2 + ll, -1 6 | cnt = cnt + 1 7 | temp(1, cnt) = xi(ii, jj) 8 | temp(2, cnt) = eta(ii, jj) 9 | END DO 10 | END IF 11 | -------------------------------------------------------------------------------- /src/submodules/Polynomial/src/include/Quadrangle/edge_34.inc: -------------------------------------------------------------------------------- 1 | 2 | ! nodes on edge 34 3 | jj = q + 1 - ll 4 | IF (cnt .LT. N) THEN 5 | DO ii = p - ll, 2 + ll, -1 6 | cnt = cnt + 1 7 | temp(1, cnt) = xi(ii, jj) 8 | temp(2, cnt) = eta(ii, jj) 9 | END DO 10 | END IF 11 | -------------------------------------------------------------------------------- /src/submodules/Polynomial/src/include/Quadrangle/edge_41.inc: -------------------------------------------------------------------------------- 1 | 2 | ! nodes on edge 41 3 | ii = ll + 1 4 | IF (cnt .LT. N) THEN 5 | DO jj = q - ll, 2 + ll, -1 6 | cnt = cnt + 1 7 | temp(1, cnt) = xi(ii, jj) 8 | temp(2, cnt) = eta(ii, jj) 9 | END DO 10 | END IF 11 | -------------------------------------------------------------------------------- /src/submodules/Polynomial/src/include/Quadrangle/edge_43.inc: -------------------------------------------------------------------------------- 1 | 2 | ! nodes on edge 43 3 | jj = q + 1 - ll 4 | IF (cnt .LT. N) THEN 5 | DO ii = 2 + ll, p - ll, +1 6 | cnt = cnt + 1 7 | temp(1, cnt) = xi(ii, jj) 8 | temp(2, cnt) = eta(ii, jj) 9 | END DO 10 | END IF 11 | -------------------------------------------------------------------------------- /src/submodules/Polynomial/src/include/Quadrangle/vertex_1.inc: -------------------------------------------------------------------------------- 1 | ! v1 2 | ii = 1 + ll 3 | jj = 1 + ll 4 | IF (cnt .LT. N) THEN 5 | cnt = cnt + 1 6 | temp(1, cnt) = xi(ii, jj) 7 | temp(2, cnt) = eta(ii, jj) 8 | END IF 9 | -------------------------------------------------------------------------------- /src/submodules/Polynomial/src/include/Quadrangle/vertex_2.inc: -------------------------------------------------------------------------------- 1 | ! v2 2 | ii = p + 1 - ll 3 | jj = 1 + ll 4 | IF (cnt .LT. N) THEN 5 | cnt = cnt + 1 6 | temp(1, cnt) = xi(ii, jj) 7 | temp(2, cnt) = eta(ii, jj) 8 | END IF 9 | -------------------------------------------------------------------------------- /src/submodules/Polynomial/src/include/Quadrangle/vertex_3.inc: -------------------------------------------------------------------------------- 1 | ! v3 2 | ii = p + 1 - ll 3 | jj = q + 1 - ll 4 | IF (cnt .LT. N) THEN 5 | cnt = cnt + 1 6 | temp(1, cnt) = xi(ii, jj) 7 | temp(2, cnt) = eta(ii, jj) 8 | END IF 9 | -------------------------------------------------------------------------------- /src/submodules/Polynomial/src/include/Quadrangle/vertex_4.inc: -------------------------------------------------------------------------------- 1 | ! v4 2 | ii = 1 + ll 3 | jj = q + 1 - ll 4 | IF (cnt .LT. N) THEN 5 | cnt = cnt + 1 6 | temp(1, cnt) = xi(ii, jj) 7 | temp(2, cnt) = eta(ii, jj) 8 | END IF 9 | -------------------------------------------------------------------------------- /src/submodules/QuadraturePoint/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/QuadraturePoint_Method@IOMethods.F90 22 | ${src_path}/QuadraturePoint_Method@GetMethods.F90 23 | ${src_path}/QuadraturePoint_Method@ConstructorMethods.F90 24 | ) 25 | 26 | -------------------------------------------------------------------------------- /src/submodules/Random/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library 2 | # Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see 16 | # 17 | 18 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | TARGET_SOURCES( 20 | ${PROJECT_NAME} PRIVATE 21 | ${src_path}/Random_Method@Methods.F90 22 | ) 23 | -------------------------------------------------------------------------------- /src/submodules/Rank2Tensor/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 4/03/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/Rank2Tensor_Method@ConstructorMethods.F90 13 | ${src_path}/Rank2Tensor_Method@IOMethods.F90 14 | ${src_path}/Rank2Tensor_Method@ContractionMethods.F90 15 | ${src_path}/Rank2Tensor_Method@InvarMethods.F90 16 | ${src_path}/Rank2Tensor_Method@OperatorMethods.F90 17 | ${src_path}/Rank2Tensor_Method@PullbackMethods.F90 18 | ${src_path}/Rank2Tensor_Method@PushForwardMethods.F90 19 | ) 20 | -------------------------------------------------------------------------------- /src/submodules/Rank2Tensor/src/old data/Stress/Interface.part: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/easifem/base/ed1acf98b678aef38192a76f1461fb57e79c113e/src/submodules/Rank2Tensor/src/old data/Stress/Interface.part -------------------------------------------------------------------------------- /src/submodules/RealMatrix/src/RealMatrix_Method@BLASMethods.F90: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | -------------------------------------------------------------------------------- /src/submodules/RealMatrix/src/RealMatrix_Method@LAPACKMethods.F90: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | SUBMODULE(RealMatrix_Method) LAPACKMethods 19 | USE BaseMethod 20 | IMPLICIT NONE 21 | CONTAINS 22 | END SUBMODULE LAPACKMethods 23 | -------------------------------------------------------------------------------- /src/submodules/STConvectiveMatrix/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 1/03/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/STConvectiveMatrix_Method@Methods.F90 13 | ) 14 | -------------------------------------------------------------------------------- /src/submodules/STConvectiveMatrix/STConvectiveMatrix-old/MethodNames.part: -------------------------------------------------------------------------------- 1 | getConvectiveMatrix_1, & 2 | getConvectiveMatrix_2, & 3 | getConvectiveMatrix_3, & 4 | getConvectiveMatrix_4, & 5 | getConvectiveMatrix_5, & 6 | getConvectiveMatrix_6, & 7 | getConvectiveMatrix_7, & 8 | getConvectiveMatrix_8, & 9 | getConvectiveMatrix_9, & 10 | getConvectiveMatrix_10, & 11 | getConvectiveMatrix_11, & 12 | getConvectiveMatrix_12, & 13 | getConvectiveMatrix_13, & 14 | getConvectiveMatrix_14, & 15 | getConvectiveMatrix_15, & 16 | getConvectiveMatrix_16, & 17 | getConvectiveMatrix_17, & 18 | getConvectiveMatrix_18, & 19 | getConvectiveMatrix_19, & 20 | getConvectiveMatrix_20, & 21 | getConvectiveMatrix_21, & 22 | getConvectiveMatrix_22, & 23 | getConvectiveMatrix_23, & 24 | getConvectiveMatrix_24, & 25 | getConvectiveMatrix_25, & 26 | getConvectiveMatrix_26, & 27 | getConvectiveMatrix_27, & 28 | getConvectiveMatrix_28, & 29 | getConvectiveMatrix_29, & 30 | getConvectiveMatrix_30, & 31 | getConvectiveMatrix_31, & 32 | getConvectiveMatrix_32, & 33 | getConvectiveMatrix_33, & 34 | getConvectiveMatrix_34, & 35 | getConvectiveMatrix_35, & 36 | getConvectiveMatrix_36, & 37 | getConvectiveMatrix_37, & 38 | getConvectiveMatrix_38, & 39 | getConvectiveMatrix_39 40 | -------------------------------------------------------------------------------- /src/submodules/STDiffusionMatrix/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 1/03/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/STDiffusionMatrix_Method@Methods.F90 13 | ) 14 | -------------------------------------------------------------------------------- /src/submodules/STDiffusionMatrix/STDiffusionMatrix-old/MethodNames.part: -------------------------------------------------------------------------------- 1 | getDiffusionMatrix_1, & 2 | getDiffusionMatrix_2 , & 3 | getDiffusionMatrix_3 , & 4 | getDiffusionMatrix_4 , & 5 | getDiffusionMatrix_5 , & 6 | getDiffusionMatrix_6 , & 7 | getDiffusionMatrix_7 , & 8 | getDiffusionMatrix_8 , & 9 | getDiffusionMatrix_9 , & 10 | getDiffusionMatrix_10 , & 11 | getDiffusionMatrix_11 , & 12 | getDiffusionMatrix_12 , & 13 | getDiffusionMatrix_13 , & 14 | getDiffusionMatrix_14 , & 15 | getDiffusionMatrix_15 , & 16 | getDiffusionMatrix_16 , & 17 | getDiffusionMatrix_17 , & 18 | getDiffusionMatrix_18 , & 19 | getDiffusionMatrix_19 , & 20 | getDiffusionMatrix_20 , & 21 | getDiffusionMatrix_21 , & 22 | getDiffusionMatrix_22 , & 23 | getDiffusionMatrix_23 , & 24 | getDiffusionMatrix_24 , & 25 | getDiffusionMatrix_25 , & 26 | getDiffusionMatrix_26 , & 27 | getDiffusionMatrix_27 , & 28 | getDiffusionMatrix_28 , & 29 | getDiffusionMatrix_29 , & 30 | getDiffusionMatrix_30 , & 31 | getDiffusionMatrix_31 -------------------------------------------------------------------------------- /src/submodules/STFextVector/MethodNames.part: -------------------------------------------------------------------------------- 1 | getFextVector_1, & 2 | getFextVector_2, & 3 | getFextVector_3, & 4 | getFextVector_4, & 5 | getFextVector_5, & 6 | getFextVector_6, & 7 | getFextVector_7, & 8 | getFextVector_8, & 9 | getFextVector_9, & 10 | getFextVector_10, & 11 | getFextVector_11, & 12 | getFextVector_12, & 13 | getFextVector_13, & 14 | getFextVector_14, & 15 | getFextVector_15, & 16 | getFextVector_16, & 17 | getFextVector_17, & 18 | getFextVector_18, & 19 | getFextVector_19, & 20 | getFextVector_20, & 21 | getFextVector_21, & 22 | getFextVector_22, & 23 | getFextVector_23, & 24 | getFextVector_24, & 25 | getFextVector_25, & 26 | getFextVector_26 27 | -------------------------------------------------------------------------------- /src/submodules/STFintVector/MethodNames.part: -------------------------------------------------------------------------------- 1 | getFintVector_1, & 2 | getFintVector_2, & 3 | getFintVector_3, & 4 | getFintVector_4, & 5 | getFintVector_5, & 6 | getFintVector_6, & 7 | getFintVector_7, & 8 | getFintVector_8 -------------------------------------------------------------------------------- /src/submodules/STForceVector/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 1/03/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/STForceVector_Method@Methods.F90 13 | ) 14 | -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 1/03/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/STMassMatrix_Method@Methods.F90 13 | ) 14 | -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_10a.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | !---------------------------------------------------------------------------- 19 | ! 20 | !---------------------------------------------------------------------------- 21 | 22 | #define _KIJ_ outerprod(vbar(:,ips, ipt), [1.0_DFP]) 23 | #define _DIM1_ SIZE(vbar, 1) 24 | #define _DIM2_ 1 25 | 26 | PURE SUBROUTINE STMM_10a(ans, test, trial, term1, term2, rho) 27 | #include "./STMM_10.inc" 28 | END SUBROUTINE STMM_10a 29 | 30 | #undef _DIM1_ 31 | #undef _DIM2_ 32 | #undef _KIJ_ -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_10b.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | !---------------------------------------------------------------------------- 19 | ! 20 | !---------------------------------------------------------------------------- 21 | 22 | #define _KIJ_ outerprod([1.0_DFP], vbar(:,ips, ipt)) 23 | #define _DIM1_ 1 24 | #define _DIM2_ SIZE(vbar, 1) 25 | 26 | PURE SUBROUTINE STMM_10b(ans, test, trial, term1, term2, rho) 27 | #include "./STMM_10.inc" 28 | END SUBROUTINE STMM_10b 29 | 30 | #undef _DIM1_ 31 | #undef _DIM2_ 32 | #undef _KIJ_ -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_10c.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | !---------------------------------------------------------------------------- 19 | ! 20 | !---------------------------------------------------------------------------- 21 | 22 | #define _KIJ_ diag(vbar(:,ips, ipt)) 23 | #define _DIM1_ SIZE(vbar, 1) 24 | #define _DIM2_ SIZE(vbar, 1) 25 | 26 | PURE SUBROUTINE STMM_10c(ans, test, trial, term1, term2, rho) 27 | #include "./STMM_10.inc" 28 | END SUBROUTINE STMM_10c 29 | 30 | #undef _DIM1_ 31 | #undef _DIM2_ 32 | #undef _KIJ_ -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_11a.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | 17 | !---------------------------------------------------------------------------- 18 | ! 19 | !---------------------------------------------------------------------------- 20 | 21 | #define _KIJ_ outerprod(vbar(:,ips, ipt), [1.0_DFP]) 22 | #define _DIM1_ SIZE(vbar, 1) 23 | #define _DIM2_ 1 24 | 25 | PURE SUBROUTINE STMM_11a(ans, test, trial, term1, term2, rho) 26 | #include "./STMM_11.inc" 27 | END SUBROUTINE STMM_11a 28 | 29 | #undef _DIM1_ 30 | #undef _DIM2_ 31 | #undef _KIJ_ -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_11b.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | 17 | !---------------------------------------------------------------------------- 18 | ! 19 | !---------------------------------------------------------------------------- 20 | 21 | #define _KIJ_ outerprod([1.0_DFP], vbar(:,ips, ipt)) 22 | #define _DIM1_ 1 23 | #define _DIM2_ SIZE(vbar, 1) 24 | 25 | PURE SUBROUTINE STMM_11b(ans, test, trial, term1, term2, rho) 26 | #include "./STMM_11.inc" 27 | END SUBROUTINE STMM_11b 28 | 29 | #undef _DIM1_ 30 | #undef _DIM2_ 31 | #undef _KIJ_ -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_11c.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | 17 | !---------------------------------------------------------------------------- 18 | ! 19 | !---------------------------------------------------------------------------- 20 | 21 | #define _KIJ_ diag(vbar(:,ips, ipt)) 22 | #define _DIM1_ SIZE(vbar, 1) 23 | #define _DIM2_ SIZE(vbar, 1) 24 | 25 | PURE SUBROUTINE STMM_11c(ans, test, trial, term1, term2, rho) 26 | #include "./STMM_11.inc" 27 | END SUBROUTINE STMM_11c 28 | 29 | #undef _DIM1_ 30 | #undef _DIM2_ 31 | #undef _KIJ_ -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_12a.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | 17 | !---------------------------------------------------------------------------- 18 | ! 19 | !---------------------------------------------------------------------------- 20 | 21 | #define _KIJ_ outerprod(vbar(:,ips, ipt), [1.0_DFP]) 22 | #define _DIM1_ SIZE(vbar, 1) 23 | #define _DIM2_ 1 24 | 25 | PURE SUBROUTINE STMM_12a(ans, test, trial, term1, term2, rho) 26 | #include "./STMM_12.inc" 27 | END SUBROUTINE STMM_12a 28 | 29 | #undef _DIM1_ 30 | #undef _DIM2_ 31 | #undef _KIJ_ -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_12b.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | 17 | !---------------------------------------------------------------------------- 18 | ! 19 | !---------------------------------------------------------------------------- 20 | 21 | #define _KIJ_ outerprod([1.0_DFP], vbar(:,ips, ipt)) 22 | #define _DIM1_ 1 23 | #define _DIM2_ SIZE(vbar, 1) 24 | 25 | PURE SUBROUTINE STMM_12b(ans, test, trial, term1, term2, rho) 26 | #include "./STMM_12.inc" 27 | END SUBROUTINE STMM_12b 28 | 29 | #undef _DIM1_ 30 | #undef _DIM2_ 31 | #undef _KIJ_ -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_12c.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | 17 | !---------------------------------------------------------------------------- 18 | ! 19 | !---------------------------------------------------------------------------- 20 | 21 | #define _KIJ_ diag(vbar(:,ips, ipt)) 22 | #define _DIM1_ SIZE(vbar, 1) 23 | #define _DIM2_ SIZE(vbar, 1) 24 | 25 | PURE SUBROUTINE STMM_12c(ans, test, trial, term1, term2, rho) 26 | #include "./STMM_12.inc" 27 | END SUBROUTINE STMM_12c 28 | 29 | #undef _DIM1_ 30 | #undef _DIM2_ 31 | #undef _KIJ_ -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_17.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | #define _NT1_ OUTERPROD(test(ipt)%N(:,ips), test(ipt)%T) 19 | #define _NT2_ OUTERPROD(trial(ipt)%N(:,ips), trial(ipt)%T) 20 | PURE SUBROUTINE STMM_17(ans, test, trial, term1, term2, c1, c2, opt) 21 | #include "./STMM_17_20.inc" 22 | END SUBROUTINE STMM_17 23 | #undef _NT1_ 24 | #undef _NT2_ 25 | -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_18.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | #define _NT1_ test(ipt)%dNTdt(:,:,ips) 19 | #define _NT2_ OUTERPROD(trial(ipt)%N(:,ips), trial(ipt)%T) 20 | PURE SUBROUTINE STMM_18(ans, test, trial, term1, term2, c1, c2, opt) 21 | #include "./STMM_17_20.inc" 22 | END SUBROUTINE STMM_18 23 | #undef _NT1_ 24 | #undef _NT2_ 25 | -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_19.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | #define _NT1_ OUTERPROD(test(ipt)%N(:,ips), test(ipt)%T) 19 | #define _NT2_ trial(ipt)%dNTdt(:,:,ips) 20 | PURE SUBROUTINE STMM_19(ans, test, trial, term1, term2, c1, c2, opt) 21 | #include "./STMM_17_20.inc" 22 | END SUBROUTINE STMM_19 23 | #undef _NT1_ 24 | #undef _NT2_ 25 | -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_20.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | #define _NT1_ test(ipt)%dNTdt(:,:,ips) 19 | #define _NT2_ trial(ipt)%dNTdt(:,:,ips) 20 | PURE SUBROUTINE STMM_20(ans, test, trial, term1, term2, c1, c2, opt) 21 | #include "./STMM_17_20.inc" 22 | END SUBROUTINE STMM_20 23 | #undef _NT1_ 24 | #undef _NT2_ -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_21a.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | 17 | !---------------------------------------------------------------------------- 18 | ! 19 | !---------------------------------------------------------------------------- 20 | 21 | #define _KIJ_ outerprod(vbar(:,ips, ipt), [1.0_DFP]) 22 | #define _DIM1_ SIZE(vbar, 1) 23 | #define _DIM2_ 1 24 | 25 | PURE SUBROUTINE STMM_21a(ans, test, trial, term1, term2, c1, c2) 26 | #include "./STMM_21.inc" 27 | END SUBROUTINE STMM_21a 28 | 29 | #undef _DIM1_ 30 | #undef _DIM2_ 31 | #undef _KIJ_ -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_21b.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | 17 | !---------------------------------------------------------------------------- 18 | ! 19 | !---------------------------------------------------------------------------- 20 | 21 | #define _KIJ_ outerprod([1.0_DFP], vbar(:,ips, ipt)) 22 | #define _DIM1_ 1 23 | #define _DIM2_ SIZE(vbar, 1) 24 | 25 | PURE SUBROUTINE STMM_21b(ans, test, trial, term1, term2, c1, c2) 26 | #include "./STMM_21.inc" 27 | END SUBROUTINE STMM_21b 28 | 29 | #undef _DIM1_ 30 | #undef _DIM2_ 31 | #undef _KIJ_ -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_21c.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | 17 | !---------------------------------------------------------------------------- 18 | ! 19 | !---------------------------------------------------------------------------- 20 | 21 | #define _KIJ_ diag(vbar(:,ips, ipt)) 22 | #define _DIM1_ SIZE(vbar, 1) 23 | #define _DIM2_ SIZE(vbar, 1) 24 | 25 | PURE SUBROUTINE STMM_21c(ans, test, trial, term1, term2, c1, c2) 26 | #include "./STMM_21.inc" 27 | END SUBROUTINE STMM_21c 28 | 29 | #undef _DIM1_ 30 | #undef _DIM2_ 31 | #undef _KIJ_ -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_23a.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | 17 | !---------------------------------------------------------------------------- 18 | ! 19 | !---------------------------------------------------------------------------- 20 | 21 | #define _KIJ_ outerprod(vbar(:,ips, ipt), [1.0_DFP]) 22 | #define _DIM1_ SIZE(vbar, 1) 23 | #define _DIM2_ 1 24 | 25 | PURE SUBROUTINE STMM_23a(ans, test, trial, term1, term2, c1, c2) 26 | #include "./STMM_23.inc" 27 | END SUBROUTINE STMM_23a 28 | 29 | #undef _DIM1_ 30 | #undef _DIM2_ 31 | #undef _KIJ_ -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_23b.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | 17 | !---------------------------------------------------------------------------- 18 | ! 19 | !---------------------------------------------------------------------------- 20 | 21 | #define _KIJ_ outerprod([1.0_DFP], vbar(:,ips, ipt)) 22 | #define _DIM1_ 1 23 | #define _DIM2_ SIZE(vbar, 1) 24 | 25 | PURE SUBROUTINE STMM_23b(ans, test, trial, term1, term2, c1, c2) 26 | #include "./STMM_23.inc" 27 | END SUBROUTINE STMM_23b 28 | 29 | #undef _DIM1_ 30 | #undef _DIM2_ 31 | #undef _KIJ_ -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_23c.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | 17 | !---------------------------------------------------------------------------- 18 | ! 19 | !---------------------------------------------------------------------------- 20 | 21 | #define _KIJ_ diag(vbar(:,ips, ipt)) 22 | #define _DIM1_ SIZE(vbar, 1) 23 | #define _DIM2_ SIZE(vbar, 1) 24 | 25 | PURE SUBROUTINE STMM_23c(ans, test, trial, term1, term2, c1, c2) 26 | #include "./STMM_23.inc" 27 | END SUBROUTINE STMM_23c 28 | 29 | #undef _DIM1_ 30 | #undef _DIM2_ 31 | #undef _KIJ_ -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_24a.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | 17 | !---------------------------------------------------------------------------- 18 | ! 19 | !---------------------------------------------------------------------------- 20 | 21 | #define _KIJ_ outerprod(vbar(:,ips, ipt), [1.0_DFP]) 22 | #define _DIM1_ SIZE(vbar, 1) 23 | #define _DIM2_ 1 24 | 25 | PURE SUBROUTINE STMM_24a(ans, test, trial, term1, term2, c1, c2) 26 | #include "./STMM_24.inc" 27 | END SUBROUTINE STMM_24a 28 | 29 | #undef _DIM1_ 30 | #undef _DIM2_ 31 | #undef _KIJ_ -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_24b.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | 17 | !---------------------------------------------------------------------------- 18 | ! 19 | !---------------------------------------------------------------------------- 20 | 21 | #define _KIJ_ outerprod([1.0_DFP], vbar(:,ips, ipt)) 22 | #define _DIM1_ 1 23 | #define _DIM2_ SIZE(vbar, 1) 24 | 25 | PURE SUBROUTINE STMM_24b(ans, test, trial, term1, term2, c1, c2) 26 | #include "./STMM_24.inc" 27 | END SUBROUTINE STMM_24b 28 | 29 | #undef _DIM1_ 30 | #undef _DIM2_ 31 | #undef _KIJ_ -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_24c.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | 17 | !---------------------------------------------------------------------------- 18 | ! 19 | !---------------------------------------------------------------------------- 20 | 21 | #define _KIJ_ diag(vbar(:,ips, ipt)) 22 | #define _DIM1_ SIZE(vbar, 1) 23 | #define _DIM2_ SIZE(vbar, 1) 24 | 25 | PURE SUBROUTINE STMM_24c(ans, test, trial, term1, term2, c1, c2) 26 | #include "./STMM_24.inc" 27 | END SUBROUTINE STMM_24c 28 | 29 | #undef _DIM1_ 30 | #undef _DIM2_ 31 | #undef _KIJ_ -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_9a.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | 17 | !---------------------------------------------------------------------------- 18 | ! 19 | !---------------------------------------------------------------------------- 20 | 21 | #define _KIJ_ outerprod(vbar(:,ips, ipt), [1.0_DFP]) 22 | #define _DIM1_ SIZE(vbar, 1) 23 | #define _DIM2_ 1 24 | 25 | PURE SUBROUTINE STMM_9a(ans, test, trial, term1, term2, rho) 26 | #include "./STMM_9.inc" 27 | END SUBROUTINE STMM_9a 28 | 29 | #undef _DIM1_ 30 | #undef _DIM2_ 31 | #undef _KIJ_ 32 | -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_9b.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | 17 | !---------------------------------------------------------------------------- 18 | ! 19 | !---------------------------------------------------------------------------- 20 | 21 | #define _KIJ_ outerprod([1.0_DFP], vbar(:,ips, ipt)) 22 | #define _DIM1_ 1 23 | #define _DIM2_ SIZE(vbar, 1) 24 | 25 | PURE SUBROUTINE STMM_9b(ans, test, trial, term1, term2, rho) 26 | #include "./STMM_9.inc" 27 | END SUBROUTINE STMM_9b 28 | 29 | #undef _DIM1_ 30 | #undef _DIM2_ 31 | #undef _KIJ_ -------------------------------------------------------------------------------- /src/submodules/STMassMatrix/src/STMM_9c.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | 17 | !---------------------------------------------------------------------------- 18 | ! 19 | !---------------------------------------------------------------------------- 20 | 21 | #define _KIJ_ diag(vbar(:,ips, ipt)) 22 | #define _DIM1_ SIZE(vbar, 1) 23 | #define _DIM2_ SIZE(vbar, 1) 24 | 25 | PURE SUBROUTINE STMM_9c(ans, test, trial, term1, term2, rho) 26 | #include "./STMM_9.inc" 27 | END SUBROUTINE STMM_9c 28 | 29 | #undef _DIM1_ 30 | #undef _DIM2_ 31 | #undef _KIJ_ 32 | -------------------------------------------------------------------------------- /src/submodules/STStiffnessMatrix/MethodNames.part: -------------------------------------------------------------------------------- 1 | getStiffnessMatrix_1, & 2 | getStiffnessMatrix_2, & 3 | getStiffnessMatrix_3, & 4 | getStiffnessMatrix_4, & 5 | getStiffnessMatrix_5, & 6 | getStiffnessMatrix_6, & 7 | getStiffnessMatrix_7, & 8 | getStiffnessMatrix_8, & 9 | getStiffnessMatrix_9, & 10 | getStiffnessMatrix_10, & 11 | getStiffnessMatrix_11, & 12 | getStiffnessMatrix_12, & 13 | getStiffnessMatrix_13, & 14 | getStiffnessMatrix_14 15 | -------------------------------------------------------------------------------- /src/submodules/ST_Tau_SUPG_RGN/MdFiles/._ST_TAU_SUPG_RGN_Class.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/easifem/base/ed1acf98b678aef38192a76f1461fb57e79c113e/src/submodules/ST_Tau_SUPG_RGN/MdFiles/._ST_TAU_SUPG_RGN_Class.md -------------------------------------------------------------------------------- /src/submodules/ST_Tau_SUPG_RGN/MethodNamesForScalar.part: -------------------------------------------------------------------------------- 1 | getSUPG_For_Scalar_1, & 2 | getSUPG_For_Scalar_2, & 3 | getSUPG_For_Scalar_3, & 4 | getSUPG_For_Scalar_4, & 5 | getSUPG_For_Scalar_5, & 6 | getSUPG_For_Scalar_6, & 7 | getSUPG_For_Scalar_7, & 8 | getSUPG_For_Scalar_8, & 9 | getSUPG_For_Scalar_9, & 10 | getSUPG_For_Scalar_10, & 11 | getSUPG_For_Scalar_11, & 12 | getSUPG_For_Scalar_12 13 | -------------------------------------------------------------------------------- /src/submodules/ST_Tau_SUPG_RGN/MethodNamesForVector.part: -------------------------------------------------------------------------------- 1 | getSUPG_For_Vector_1, & 2 | getSUPG_For_Vector_2, & 3 | getSUPG_For_Vector_3, & 4 | getSUPG_For_Vector_4, & 5 | getSUPG_For_Vector_5, & 6 | getSUPG_For_Vector_6, & 7 | getSUPG_For_Vector_7, & 8 | getSUPG_For_Vector_8, & 9 | getSUPG_For_Vector_9, & 10 | getSUPG_For_Vector_10, & 11 | getSUPG_For_Vector_11, & 12 | getSUPG_For_Vector_12 -------------------------------------------------------------------------------- /src/submodules/StiffnessMatrix/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 1/03/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/StiffnessMatrix_Method@Methods.F90 13 | ) 14 | -------------------------------------------------------------------------------- /src/submodules/TriangleInterface/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This program is a part of EASIFEM library Copyright (C) 2020-2021 Vikas 2 | # Sharma, Ph.D 3 | # 4 | # This program is free software: you can redistribute it and/or modify it under 5 | # the terms of the GNU General Public License as published by the Free Software 6 | # Foundation, either version 3 of the License, or (at your option) any later 7 | # version. 8 | # 9 | # This program is distributed in the hope that it will be useful, but WITHOUT 10 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 11 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 12 | # details. 13 | # 14 | # You should have received a copy of the GNU General Public License along with 15 | # this program. If not, see 16 | # 17 | 18 | set(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 19 | target_sources( 20 | ${PROJECT_NAME} 21 | PRIVATE ${src_path}/TriangleInterface@Methods.F90) 22 | -------------------------------------------------------------------------------- /src/submodules/TriangleInterface/src/definemacro.h: -------------------------------------------------------------------------------- 1 | #define C2F(a, c) IF(PRESENT(a)) CALL C_F_POINTER(obj % a, a, [c]) 2 | #define MyNullify(a) obj % a = C_NULL_PTR 3 | #define SimpleSet(a) IF(PRESENT(a)) a = obj % a 4 | #define SimpleNull(a) obj % a = 0 5 | -------------------------------------------------------------------------------- /src/submodules/TriangleInterface/src/undefinemacro.h: -------------------------------------------------------------------------------- 1 | #undef C2F 2 | #undef SimpleSet 3 | #undef SimpleNull 4 | #undef MyNullify 5 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Append/Append_1.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | 17 | IF (.NOT. ALLOCATED(A)) THEN 18 | A = [Entry] 19 | ELSE 20 | n = SIZE(A); ALLOCATE (Dummy(n + 1)) 21 | Dummy(1:n) = A; Dummy(1 + n) = Entry 22 | CALL MOVE_ALLOC(From=Dummy, TO=A) 23 | END IF 24 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Append/Append_1cd.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | INTEGER(I4B) :: n 18 | !! 19 | n = SIZE(A) 20 | !! 21 | IF( n .NE. 0 ) THEN 22 | CALL Reallocate( C, n+1 ) 23 | C(1:n) = A; C(1 + n) = B 24 | ELSE 25 | C = [B] 26 | END IF 27 | !! -------------------------------------------------------------------------------- /src/submodules/Utility/src/Append/Append_2abcd.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: na, nb, nc 19 | 20 | na = SIZE( A ) 21 | nb = SIZE( B ) 22 | nc = SIZE( C ) 23 | 24 | CALL Reallocate( D, na+nb+nc ) 25 | IF(na .gt. 0) D(1:na) = A 26 | IF(nb .gt. 0) D(na + 1: na+nb) = B 27 | IF(nc .gt. 0) D(na + nb + 1:) = C 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Append/Append_3.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | 17 | IF( mask ) THEN 18 | IF (.NOT. ALLOCATED(A)) THEN 19 | A = [Entry] 20 | ELSE 21 | n = SIZE(A); ALLOCATE (Dummy(n + 1)) 22 | Dummy(1:n) = A; Dummy(1 + n) = Entry 23 | CALL MOVE_ALLOC(From=Dummy, TO=A) 24 | END IF 25 | ELSE 26 | IF (.NOT. ALLOCATED(A)) ALLOCATE( A( 0 ) ) 27 | END IF 28 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Append/Append_3cd.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: n 19 | !! 20 | n = SIZE(A) 21 | !! 22 | IF( n .NE. 0 ) THEN 23 | !! 24 | IF( mask ) THEN 25 | CALL Reallocate( C, n+1 ) 26 | C(1:n) = A; C(1 + n) = B 27 | ELSE 28 | CALL Reallocate( C, n ) 29 | C = A 30 | END IF 31 | ELSE 32 | IF( mask ) THEN 33 | C = [B] 34 | ELSE 35 | CALL Reallocate( C, 0 ) 36 | END IF 37 | END IF 38 | !! -------------------------------------------------------------------------------- /src/submodules/Utility/src/ColConcat/ColConcat_1.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: n 19 | n = MAX(SIZE(a), SIZE(b)) 20 | CALL reallocate(ans, n, 2) 21 | ans(1:SIZE(a), 1) = a 22 | ans(1:SIZE(b), 2) = b 23 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/ColConcat/ColConcat_2.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: nrow, ncol 19 | 20 | nrow = MAX(SIZE(a,1), SIZE(b)) 21 | ncol = SIZE(a,2) + 1 22 | CALL reallocate(ans, nrow, ncol) 23 | ans(1:SIZE(a,1), 1:size(a,2) ) = a 24 | ans(1:SIZE(b), ncol) = b 25 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/ColConcat/ColConcat_3.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: nrow, ncol 19 | 20 | nrow = MAX(SIZE(b,1), SIZE(a)) 21 | ncol = SIZE(b,2) + 1 22 | CALL reallocate(ans, nrow, ncol) 23 | ans(1:SIZE(a), 1) = a 24 | ans(1:SIZE(b,1), 2:) = b 25 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/ColConcat/ColConcat_4.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: nrow, ncol 19 | 20 | nrow = MAX(SIZE(a, 1), SIZE(b, 1)) 21 | ncol = SIZE(a, 2) + SIZE(b, 2) 22 | 23 | CALL reallocate(ans, nrow, ncol) 24 | 25 | ans(1:SIZE(a, 1), 1:SIZE(a, 2)) = a 26 | 27 | ans(1:SIZE(b, 1), SIZE(a, 2) + 1:) = b 28 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Diag/Tridiag.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: da_No, db_No 19 | ans = Diag(d) 20 | da_No = ABS(INPUT(option=diagNo, default=1)) 21 | db_No = -da_No 22 | CALL SetDiag(mat=ans, d=da, diagNo=da_No) 23 | CALL SetDiag(mat=ans, d=db, diagNo=db_No) 24 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/In/In_1.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | 19 | INTEGER(I4B) :: ii 20 | 21 | ans = .TRUE. 22 | IF (SIZE(a) .GT. SIZE(b)) THEN 23 | ans = .FALSE. 24 | RETURN 25 | END IF 26 | 27 | DO ii = 1, SIZE(a) 28 | IF (.NOT. ANY(a(ii) .EQ. b)) THEN 29 | ans = .FALSE. 30 | EXIT 31 | END IF 32 | END DO 33 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/In/IsIn_1.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | !! 19 | INTEGER(I4B) :: ii 20 | !! 21 | DO ii = 1, SIZE(a) 22 | ans( ii ) = ANY(a(ii) .EQ. b) 23 | END DO -------------------------------------------------------------------------------- /src/submodules/Utility/src/Input/Input1.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | IF(PRESENT(option) )THEN 19 | ans=option 20 | ELSE 21 | ans=default 22 | ENDIF -------------------------------------------------------------------------------- /src/submodules/Utility/src/InsertionSort/ArgInsertionSort.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: ii, jj 19 | 20 | DO ii = low, high 21 | DO jj = ii, low + 1, -1 22 | IF (array(arg(jj)) < array(arg(jj - 1))) THEN 23 | CALL SWAP(arg(jj), arg(jj - 1)) 24 | ELSE 25 | EXIT 26 | END IF 27 | END DO 28 | END DO 29 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/InsertionSort/InsertionSort.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: ii, jj 19 | 20 | DO ii = low, high 21 | DO jj = ii, low + 1, -1 22 | IF (array(jj) < array(jj - 1)) THEN 23 | CALL SWAP(array(jj), array(jj - 1)) 24 | ELSE 25 | EXIT 26 | END IF 27 | END DO 28 | END DO 29 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Intersection/Intersection.inc: -------------------------------------------------------------------------------- 1 | INTEGER(I4B) :: tsize1, tsize2, ii 2 | 3 | tsize1 = SIZE(a) 4 | tsize2 = SIZE(b) 5 | tsize = 0 6 | 7 | IF (tsize1 .LE. tsize2) THEN 8 | DO ii = 1, tsize1 9 | IF (ANY(a(ii) .EQ. b)) THEN 10 | tsize = tsize + 1 11 | c(tsize) = a(ii) 12 | END IF 13 | END DO 14 | RETURN 15 | END IF 16 | 17 | DO ii = 1, tsize2 18 | IF (ANY(b(ii) .EQ. a)) THEN 19 | tsize = tsize + 1 20 | c(tsize) = b(ii) 21 | END IF 22 | END DO 23 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/IntroSort/ArgIntroSort.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/IntroSort/IntroSort.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Median/ArgMedian.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | IF (this(indx(right)) < this(indx(left))) CALL swap(indx(left), indx(right)) 19 | IF (this(indx(mid)) < this(indx(left))) CALL swap(indx(mid), indx(left)) 20 | IF (this(indx(right)) < this(indx(mid))) CALL swap(indx(right), indx(mid)) 21 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Median/Median.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | if (this(right) < this(left)) call swap(this(left), this(right)) 19 | if (this(mid) < this(left)) call swap(this(mid), this(left)) 20 | if (this(right) < this(mid)) call swap(this(right), this(mid)) 21 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Partition/ArgPartition.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | 19 | pivot = this(idx(left)) 20 | lo = left + 1; hi = right 21 | DO WHILE (lo <= hi) 22 | DO WHILE (this(idx(hi)) > pivot) 23 | hi = hi - 1 24 | END DO 25 | DO WHILE (lo <= hi .AND. this(idx(lo)) <= pivot) 26 | lo = lo + 1 27 | END DO 28 | IF (lo <= hi) THEN 29 | CALL swap(idx(lo), idx(hi)) 30 | lo = lo + 1; hi = hi - 1 31 | END IF 32 | END DO 33 | CALL swap(idx(left), idx(hi)) 34 | i = hi 35 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Partition/Partition.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | 19 | pivot = this(left) 20 | lo = left; hi = right 21 | DO WHILE (lo <= hi) 22 | DO WHILE (this(hi) > pivot) 23 | hi = hi - 1 24 | END DO 25 | 26 | DO WHILE (lo <= hi .AND. this(lo) <= pivot) 27 | lo = lo + 1 28 | END DO 29 | IF (lo <= hi) THEN 30 | CALL swap(this(lo), this(hi)) 31 | lo = lo + 1; hi = hi - 1 32 | END IF 33 | END DO 34 | CALL swap(this(left), this(hi)) 35 | iPivot = hi 36 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/PushPop/Pop_Scalar.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: n, ii 19 | !! 20 | n = SIZE(vec) 21 | !! 22 | IF (n .EQ. 1) RETURN 23 | !! 24 | IF (pos .GT. n) THEN 25 | ans = vec(1:n - 1) 26 | RETURN 27 | END IF 28 | !! 29 | IF (pos .LT. 1_I4B) THEN 30 | ans = vec(2:n) 31 | RETURN 32 | END IF 33 | !! 34 | DO ii = 1, pos - 1 35 | ans(ii) = vec(ii) 36 | END DO 37 | 38 | DO ii = pos, n - 1 39 | ans(ii) = vec(ii + 1) 40 | END DO 41 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/PushPop/Push_Scalar.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: n, ii 19 | !! 20 | n = SIZE(vec) 21 | !! 22 | IF (pos .GT. n) THEN 23 | ans(1:n) = vec 24 | ans(n + 1) = value 25 | RETURN 26 | END IF 27 | !! 28 | IF (pos .LT. 1_I4B) THEN 29 | ans(1) = value 30 | ans(2:n + 1) = vec 31 | RETURN 32 | END IF 33 | !! 34 | ans(pos) = value 35 | DO ii = 1, pos - 1 36 | ans(ii) = vec(ii) 37 | END DO 38 | 39 | DO ii = pos, n 40 | ans(ii + 1) = vec(ii) 41 | END DO 42 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/QuickSort/QuickSort1Vec.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) i, iPivot 19 | 20 | iPivot = high 21 | i = low 22 | DO WHILE (iPivot > i) 23 | IF (vect1(i) > vect1(iPivot)) THEN 24 | CALL Swap(vect1(i), vect1(iPivot - 1)) 25 | CALL Swap(vect1(iPivot - 1), vect1(iPivot)) 26 | iPivot = iPivot - 1 27 | ELSE 28 | i = i + 1 29 | END IF 30 | END DO 31 | IF (low < high) THEN 32 | CALL QuickSort(vect1, low, iPivot - 1) 33 | CALL QuickSort(vect1, iPivot + 1, high) 34 | END IF 35 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/RemoveDuplicates/RemoveDuplicates_2.inc: -------------------------------------------------------------------------------- 1 | ! Define internal variables 2 | INTEGER(I4B) :: ii, n 3 | 4 | tsize = SIZE(obj) 5 | IF (tsize .LE. 1) RETURN 6 | 7 | IF (.NOT. isSorted) CALL QUICKSORT(obj, 1_I4B, tsize) 8 | 9 | DO CONCURRENT(ii=1:tsize) 10 | temp(ii) = obj(ii) 11 | obj(ii) = 0 12 | END DO 13 | 14 | obj(1) = temp(1) 15 | 16 | n = 1 17 | DO ii = 2, tsize 18 | IF (temp(ii) .NE. temp(ii - 1)) THEN 19 | n = n + 1 20 | obj(n) = temp(ii) 21 | END IF 22 | END DO 23 | 24 | tsize = n 25 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Repeat/Repeat_1.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: n, i 19 | n = SIZE(Val) 20 | Ans(1:n) = Val 21 | DO i = 1, rtimes - 1 22 | Ans(i * n + 1:(i + 1) * n) = Val 23 | END DO 24 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/RowConcat/RowConcat_1.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: ncol, nrow 19 | 20 | nrow = 2 21 | ncol = MAX(SIZE(a), SIZE(b)) 22 | 23 | CALL reallocate(ans, nrow, ncol) 24 | 25 | ans(1, 1:SIZE(a)) = a 26 | 27 | ans(2, 1:SIZE(b)) = b 28 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/RowConcat/RowConcat_2.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: nrow, ncol 19 | 20 | nrow = SIZE(a,1) + 1 21 | 22 | ncol = MAX(SIZE(a,2), SIZE(b)) 23 | 24 | CALL reallocate(ans, nrow, ncol) 25 | 26 | ans(1:SIZE(a,1), 1:size(a,2) ) = a 27 | 28 | ans(nrow, 1:SIZE(b) ) = b 29 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/RowConcat/RowConcat_3.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: nrow, ncol 19 | 20 | nrow = SIZE(b,1) + 1 21 | ncol = MAX(SIZE(b,2), SIZE(a)) 22 | 23 | CALL reallocate(ans, nrow, ncol) 24 | 25 | ans(1, 1:SIZE(a)) = a 26 | 27 | ans(2:, 1:SIZE(b,2)) = b 28 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/RowConcat/RowConcat_4.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: nrow, ncol 19 | 20 | ncol = MAX(SIZE(a, 2), SIZE(b, 2)) 21 | 22 | nrow = SIZE(a, 1) + SIZE(b, 1) 23 | 24 | CALL reallocate(ans, nrow, ncol) 25 | 26 | ans(1:SIZE(a, 1), 1:SIZE(a, 2)) = a 27 | 28 | ans(SIZE(a, 1) + 1:, 1:SIZE(b, 2)) = b 29 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Sym/GetSym.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B) :: ii, jj 19 | SELECT CASE (from) 20 | CASE ("L", "l") 21 | DO CONCURRENT(ii=1:SIZE(mat, 1), jj=1:SIZE(mat, 2)) 22 | IF (ii .GE. jj) mat(jj, ii) = mat(ii, jj) 23 | END DO 24 | CASE ("u", "U") 25 | DO CONCURRENT(ii=1:SIZE(mat, 1), jj=1:SIZE(mat, 2)) 26 | IF (ii .GE. jj) mat(ii, jj) = mat(jj, ii) 27 | END DO 28 | END SELECT 29 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Triag/GetTril1.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B), ALLOCATABLE :: indx(:, :) 19 | INTEGER(I4B) :: ii 20 | ! 21 | lu = 0.0_DFP 22 | indx = TrilIndx(A, diagNo) 23 | DO CONCURRENT(ii=1:SIZE(indx, 1)) 24 | lu(indx(ii, 1), indx(ii, 2)) = A(indx(ii, 1), indx(ii, 2)) 25 | END DO 26 | DEALLOCATE (indx) 27 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Triag/GetTril2.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B), ALLOCATABLE :: indx(:, :) 19 | INTEGER(I4B) :: tsize, ii, jj 20 | ! 21 | indx = TrilIndx(A, diagNo) 22 | tsize = SIZE(indx, 1) 23 | ! 24 | CALL Reallocate(lu, tsize) 25 | ! 26 | jj = 0 27 | ! 28 | DO ii = 1, tsize 29 | jj = jj + 1 30 | lu(jj) = A(indx(ii, 1), indx(ii, 2)) 31 | END DO 32 | ! 33 | DEALLOCATE (indx) 34 | 35 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Triag/GetTriu1.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B), ALLOCATABLE :: indx(:, :) 19 | INTEGER(I4B) :: ii 20 | ! 21 | lu = 0.0_DFP 22 | indx = TriuIndx(A, diagNo) 23 | DO CONCURRENT(ii=1:SIZE(indx, 1)) 24 | lu(indx(ii, 1), indx(ii, 2)) = A(indx(ii, 1), indx(ii, 2)) 25 | END DO 26 | DEALLOCATE (indx) 27 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Triag/GetTriu2.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B), ALLOCATABLE :: indx(:, :) 19 | INTEGER(I4B) :: tsize, ii, jj 20 | ! 21 | indx = TriuIndx(A, diagNo) 22 | tsize = SIZE(indx, 1) 23 | ! 24 | CALL REALLOCATE(lu, tsize) 25 | ! 26 | jj = 0 27 | ! 28 | DO ii = 1, tsize 29 | jj = jj + 1 30 | lu(jj) = A(indx(ii, 1), indx(ii, 2)) 31 | END DO 32 | ! 33 | DEALLOCATE (indx) 34 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Triag/SetTril1.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B), ALLOCATABLE :: indx(:, :) 19 | INTEGER(I4B) :: ii 20 | ! 21 | indx = TrilIndx(A, diagNo) 22 | DO CONCURRENT(ii=1:SIZE(indx, 1)) 23 | A(indx(ii, 1), indx(ii, 2)) = lu(indx(ii, 1), indx(ii, 2)) 24 | END DO 25 | DEALLOCATE (indx) 26 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Triag/SetTril2.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B), ALLOCATABLE :: indx(:, :) 19 | INTEGER(I4B) :: tsize, ii, jj 20 | ! 21 | indx = TrilIndx(A, diagNo) 22 | tsize = SIZE(indx, 1) 23 | ! 24 | jj = 0 25 | ! 26 | DO ii = 1, tsize 27 | jj = jj + 1 28 | A(indx(ii, 1), indx(ii, 2)) = lu(jj) 29 | END DO 30 | ! 31 | DEALLOCATE (indx) 32 | 33 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Triag/SetTril3.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B), ALLOCATABLE :: indx(:, :) 19 | INTEGER(I4B) :: ii 20 | ! 21 | indx = TrilIndx(A, diagNo) 22 | DO CONCURRENT(ii=1:SIZE(indx, 1)) 23 | A(indx(ii, 1), indx(ii, 2)) = val 24 | END DO 25 | DEALLOCATE (indx) 26 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Triag/SetTriu1.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B), ALLOCATABLE :: indx(:, :) 19 | INTEGER(I4B) :: ii 20 | ! 21 | indx = TriuIndx(A, diagNo) 22 | DO CONCURRENT(ii=1:SIZE(indx, 1)) 23 | A(indx(ii, 1), indx(ii, 2)) = lu(indx(ii, 1), indx(ii, 2)) 24 | END DO 25 | DEALLOCATE (indx) 26 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Triag/SetTriu2.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B), ALLOCATABLE :: indx(:, :) 19 | INTEGER(I4B) :: tsize, ii, jj 20 | ! 21 | indx = TriuIndx(A, diagNo) 22 | tsize = SIZE(indx, 1) 23 | ! 24 | jj = 0 25 | ! 26 | DO ii = 1, tsize 27 | jj = jj + 1 28 | A(indx(ii, 1), indx(ii, 2)) = lu(jj) 29 | END DO 30 | ! 31 | DEALLOCATE (indx) 32 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Triag/SetTriu3.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B), ALLOCATABLE :: indx(:, :) 19 | INTEGER(I4B) :: ii 20 | ! 21 | indx = TriuIndx(A, diagNo) 22 | DO CONCURRENT(ii=1:SIZE(indx, 1)) 23 | A(indx(ii, 1), indx(ii, 2)) = val 24 | END DO 25 | DEALLOCATE (indx) 26 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Triag/Tril1.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B), ALLOCATABLE :: indx(:, :) 19 | INTEGER(I4B) :: ii 20 | ! 21 | ans = 0.0_DFP 22 | indx = TrilIndx(A, diagNo) 23 | DO CONCURRENT(ii=1:SIZE(indx, 1)) 24 | ans(indx(ii, 1), indx(ii, 2)) = A(indx(ii, 1), indx(ii, 2)) 25 | END DO 26 | DEALLOCATE (indx) -------------------------------------------------------------------------------- /src/submodules/Utility/src/Triag/Tril2.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B), ALLOCATABLE :: indx(:, :) 19 | INTEGER(I4B) :: tsize, ii, jj 20 | ! 21 | indx = TrilIndx(A, diagNo) 22 | tsize = SIZE(indx, 1) 23 | ! 24 | ALLOCATE (ans(tsize)) 25 | ! 26 | jj = 0 27 | ! 28 | DO ii = 1, tsize 29 | jj = jj + 1 30 | ans(jj) = A(indx(ii, 1), indx(ii, 2)) 31 | END DO 32 | ! 33 | DEALLOCATE (indx) 34 | 35 | -------------------------------------------------------------------------------- /src/submodules/Utility/src/Triag/Triu1.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B), ALLOCATABLE :: indx(:, :) 19 | INTEGER(I4B) :: ii 20 | ! 21 | ans = 0.0_DFP 22 | indx = TriuIndx(A, diagNo) 23 | DO CONCURRENT(ii=1:SIZE(indx, 1)) 24 | ans(indx(ii, 1), indx(ii, 2)) = A(indx(ii, 1), indx(ii, 2)) 25 | END DO 26 | DEALLOCATE (indx) -------------------------------------------------------------------------------- /src/submodules/Utility/src/Triag/Triu2.inc: -------------------------------------------------------------------------------- 1 | ! This program is a part of EASIFEM library 2 | ! Copyright (C) 2020-2021 Vikas Sharma, Ph.D 3 | ! 4 | ! This program is free software: you can redistribute it and/or modify 5 | ! it under the terms of the GNU General Public License as published by 6 | ! the Free Software Foundation, either version 3 of the License, or 7 | ! (at your option) any later version. 8 | ! 9 | ! This program is distributed in the hope that it will be useful, 10 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ! GNU General Public License for more details. 13 | ! 14 | ! You should have received a copy of the GNU General Public License 15 | ! along with this program. If not, see 16 | ! 17 | 18 | INTEGER(I4B), ALLOCATABLE :: indx(:, :) 19 | INTEGER(I4B) :: tsize, ii, jj 20 | ! 21 | indx = TriuIndx(A, diagNo) 22 | tsize = SIZE(indx, 1) 23 | ! 24 | ALLOCATE (ans(tsize)) 25 | ! 26 | jj = 0 27 | ! 28 | DO ii = 1, tsize 29 | jj = jj + 1 30 | ans(jj) = A(indx(ii, 1), indx(ii, 2)) 31 | END DO 32 | ! 33 | DEALLOCATE (indx) 34 | -------------------------------------------------------------------------------- /src/submodules/Vector3D/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 23/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/Vector3D_Method@Constructor.F90 13 | ${src_path}/Vector3D_Method@Misc.F90 14 | ) -------------------------------------------------------------------------------- /src/submodules/Vector3D/Vector3D_Method@Misc.F90: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/easifem/base/ed1acf98b678aef38192a76f1461fb57e79c113e/src/submodules/Vector3D/Vector3D_Method@Misc.F90 -------------------------------------------------------------------------------- /src/submodules/VoigtRank2Tensor/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file is a part of easifem-base 2 | # (c) 2021, Vikas Sharma, Ph.D. 3 | # All right reserved 4 | # 5 | # log 6 | # 23/02/2021 this file was created 7 | #----------------------------------------------------------------------- 8 | 9 | SET(src_path "${CMAKE_CURRENT_LIST_DIR}/src/") 10 | TARGET_SOURCES( 11 | ${PROJECT_NAME} PRIVATE 12 | ${src_path}/VoigtRank2Tensor_Method@Constructor.F90 13 | ${src_path}/VoigtRank2Tensor_Method@IO.F90 14 | ) 15 | --------------------------------------------------------------------------------