diff --git a/CMakeLists.txt b/CMakeLists.txt index df5984733..b79c108ef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -177,6 +177,7 @@ foreach(filepath ${ops_include_files}) set(OPS_INCLUDE_DIRS ${OPS_INCLUDE_DIRS} ${dir_path}) endforeach() list(REMOVE_DUPLICATES OPS_INCLUDE_DIRS) + include_directories(${OPS_INCLUDE_DIRS}) #message(${OPS_INCLUDE_DIRS}) @@ -197,12 +198,12 @@ add_library(G3_Utilities OBJECT) add_library(G3_Element OBJECT) add_library(G3_Material OBJECT) add_library(G3_ModelBuilder OBJECT) -add_library(G3_Numerics OBJECT) -target_link_libraries(G3_Numerics +add_library(G3_Numerics INTERFACE) +target_link_libraries(G3_Numerics INTERFACE ${ARPACK_LIBRARIES} - #${SUPERLU_LIBRARIES} - #${UMFPACK_LIBRARIES} - ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} + ${SUPERLU_LIBRARIES} + ${UMFPACK_LIBRARIES} + ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} ) # Core OpenSees @@ -226,7 +227,10 @@ add_library(OPS_Reliability OBJECT EXCLUDE_FROM_ALL) add_library(G3) add_library(OpenSees EXCLUDE_FROM_ALL ) -add_executable(OpenSeesTcl EXCLUDE_FROM_ALL ${OPS_SRC_DIR}/tcl/tclAppInit.cpp) +add_executable(OpenSeesTcl EXCLUDE_FROM_ALL + ${OPS_SRC_DIR}/tcl/tclAppInit.cpp + ${OPS_SRC_DIR}/tcl/tclMain.cpp +) add_executable(OpenSeesSP EXCLUDE_FROM_ALL ${OPS_SRC_DIR}/tcl/tclAppInit.cpp) add_executable(OpenSeesMP EXCLUDE_FROM_ALL ${OPS_SRC_DIR}/tcl/tclAppInit.cpp) add_executable(OpenSeesPy EXCLUDE_FROM_ALL ${OPS_SRC_DIR}/interpreter/pythonMain.cpp) @@ -332,7 +336,9 @@ opensees_add_cxx_flag(TARGETS OPS_Tcl #---------------------------- # OpenSeesTcl #---------------------------- -target_link_libraries(OpenSeesTcl +#target_include_directories(OpenSeesTcl PUBLIC ${OPS_INCLUDE_DIRS}) + +target_link_libraries(OpenSeesTcl OPS_Tcl ${OPS_Element_List} OPS_Thermal OpenSees ${CMAKE_DL_LIBS} #${SUPERLU_LIBRARIES} ) @@ -405,7 +411,7 @@ endif() #---------------------------- if (OPS_Use_PFEM) message("OPS >>> Including OPS_PFEM option") - target_link_libraries(${OPS_FINAL_TARGET} OPS_PFEM) + #target_link_libraries(${OPS_FINAL_TARGET} OPS_PFEM) endif() #---------------------------- diff --git a/Conf.cmake b/Conf.cmake index f57c5d426..da38f3e36 100644 --- a/Conf.cmake +++ b/Conf.cmake @@ -39,7 +39,7 @@ option(OPS_Use_Graphics "Include graphics" OFF) option(OPS_Use_PFEM - "Include PFEM library" ON) + "Include PFEM library" OFF) option(OPS_Use_ASDEA "Include ASDEA library" ON) @@ -89,18 +89,18 @@ opensees_load(TCL INCLUDE /home/claudio/miniconda3/include ) -opensees_load(BLAS SEARCH) - #LIBRARY /home/claudio/lib/libBlas.a - #) +opensees_load(BLAS #SEARCH) + LIBRARY /home/claudio/lib/libBlas.a +) -opensees_load(LAPACK SEARCH) -#LIBRARY /home/claudio/lib/libLapack.a -#) +opensees_load(LAPACK #SEARCH) + LIBRARY /home/claudio/lib/libLapack.a +) -#opensees_load(SUPERLU SEARCH) - #LIBRARY /home/claudio/lib/libSuperLU.a - #INCLUDE ${OPS_BUNDLED_DIR}/SuperLU_5.1.1/ - #) +opensees_load(SUPERLU #SEARCH) + LIBRARY /home/claudio/lib/libSuperLU.a + INCLUDE ${OPS_BUNDLED_DIR}/SuperLU_5.1.1/ +) opensees_load(ARPACK SEARCH) diff --git a/OTHER/LAPACK/CMakeLists.txt b/OTHER/LAPACK/CMakeLists.txt new file mode 100644 index 000000000..e9209ba78 --- /dev/null +++ b/OTHER/LAPACK/CMakeLists.txt @@ -0,0 +1,48 @@ +project(LAPACK) +target_sources(LAPACK + dgeqr2.o dlabad.o dlacon.o dlacpy.o dladiv.o dlae2.o dlaev2.o + dlaexc.o dlagtm.o dlahqr.o dlaln2.o dlamch.o dlange.o dlanhs.o + dlanst.o dlanv2.o dlaptm.o dlapy2.o dlapy3.o dlaran.o dlarf.o + dlarfg.o dlarfx.o dlarnd.o dlarnv.o dlartg.o dlaruv.o dlascl.o + dlaset.o dlasr.o dlasrt.o dlassq.o dlasy2.o dorm2r.o dsteqr.o + dtrevc.o dtrexc.o dtrsen.o dtrsyl.o dgbtf2.o dgbtrf.o dgbtrs.o + dgttrf.o dgttrs.o dpttrf.o dpttrs.o dlaswp.o dgbsv.o dpbtrs.o + dgesv.o dgetrs.o dpbsv.o dgetrf.o dgetf2.o dpbtrf.o dpotf2.o + dpbtf2.o dgels.o dgeqrf.o dgelqf.o dormqr.o dormlq.o + dgelq2.o dlarft.o dlarfb.o dorml2.o + dlaebz.o dlagtf.o dlagts.o dlansb.o dlar2v.o dlargv.o + dlartv.o dsbevx.o dsbtrd.o dstebz.o dstein.o dsterf.o + dgetri.o dtrtri.o dtrti2.o dgebak.o dgebal.o dgeev.o + dgehd2.o dgehrd.o dhseqr.o dlahrd.o + dorg2r.o dorghr.o dorgqr.o dpotrf.o dpotrs.o dtrtrs.o + dggbak.o dggbal.o dggev.o dgghrd.o dhgeqz.o dlag2.o dlasv2.o dtgevc.o + dgesvxx.o dla_gerfsx_extended.o dlascl2.o dlaqge.o dgeequb.o dgerfsx.o + chla_transtype.o dla_gercond.o dla_wwaddw.o ilaprec.o ilatrans.o dgecon.o + dla_geamv.o dlacn2.o dla_lin_berr.o drscl.o dlatrs.o dla_rpvgrw.o dla_gerpvgrw.o + BLAS_dgemv2_x.o BLAS_dgemv2_x-f2c.o + BLAS_dgemv_x.o BLAS_dgemv_x-f2c.o BLAS_error.o BLAS_error.o +) + + + +IOBJ = ilaenv.o lsame.o lsamen.o xerbla.o xlaenv.o ieeeck.o + +all: double + +double: $(DOBJ) $(IOBJ) + @$(RM) $(RMFLAGS) $(LAPACK_LIBRARY) + @$(AR) $(ARFLAGS) $(LAPACK_LIBRARY) $(DOBJ) $(IOBJ) + @$(RANLIB) $(LAPACK_LIBRARY) + +# Miscellaneous +tidy: + @$(RM) $(RMFLAGS) Makefile.bak *~ #*# core go + +clean: tidy + @$(RM) $(RMFLAGS) $(OBJS) *.o test go + +spotless: clean + +wipe: spotless + +# DO NOT DELETE THIS LINE -- make depend depends on it. diff --git a/OTHER/UMFPACK/CMakeLists.txt b/OTHER/UMFPACK/CMakeLists.txt new file mode 100644 index 000000000..579753f00 --- /dev/null +++ b/OTHER/UMFPACK/CMakeLists.txt @@ -0,0 +1,150 @@ +include ../../Makefile.def + +I = -I. -I../AMD +C = $(CC) $(OPT_FLAG) -fexceptions -fPIC -DNCHOLMOD $(I) + +#------------------------------------------------------------------------------- +# source files +#------------------------------------------------------------------------------- + +# non-user-callable umf_*.[ch] files: +UMFCH = umf_assemble umf_blas3_update umf_build_tuples umf_create_element \ + umf_extend_front umf_garbage_collection umf_get_memory \ + umf_init_front umf_kernel umf_kernel_init umf_kernel_wrapup \ + umf_local_search umf_lsolve umf_ltsolve umf_mem_alloc_element \ + umf_mem_alloc_head_block umf_mem_alloc_tail_block \ + umf_mem_free_tail_block umf_mem_init_memoryspace \ + umf_report_vector umf_row_search umf_scale_column \ + umf_set_stats umf_solve umf_symbolic_usage umf_transpose \ + umf_tuple_lengths umf_usolve umf_utsolve umf_valid_numeric \ + umf_valid_symbolic umf_grow_front umf_start_front \ + umf_store_lu umf_scale + +# non-user-callable umf_*.[ch] files, int/SuiteSparse_long versions only +# (no real/complex): +UMFINT = umf_analyze umf_apply_order umf_colamd umf_free umf_fsize \ + umf_is_permutation umf_malloc umf_realloc umf_report_perm \ + umf_singletons umf_cholmod + +# non-user-callable, created from umf_ltsolve.c, umf_utsolve.c, +# umf_triplet.c, and umf_assemble.c , with int/SuiteSparse_long +# and real/complex versions: +UMF_CREATED = umf_lhsolve umf_uhsolve umf_triplet_map_nox \ + umf_triplet_nomap_x umf_triplet_nomap_nox umf_triplet_map_x \ + umf_assemble_fixq umf_store_lu_drop + +# non-user-callable, int/SuiteSparse_long and real/complex versions: +UMF = $(UMF_CREATED) $(UMFCH) + +# user-callable umfpack_*.[ch] files (int/SuiteSparse_long and real/complex): +UMFPACK = umfpack_col_to_triplet umfpack_defaults umfpack_free_numeric \ + umfpack_free_symbolic umfpack_get_numeric umfpack_get_lunz \ + umfpack_get_symbolic umfpack_get_determinant umfpack_numeric \ + umfpack_qsymbolic umfpack_report_control umfpack_report_info \ + umfpack_report_matrix umfpack_report_numeric umfpack_report_perm \ + umfpack_report_status umfpack_report_symbolic umfpack_report_triplet \ + umfpack_report_vector umfpack_solve umfpack_symbolic \ + umfpack_transpose umfpack_triplet_to_col umfpack_scale \ + umfpack_load_numeric umfpack_save_numeric \ + umfpack_load_symbolic umfpack_save_symbolic + +# user-callable, created from umfpack_solve.c (umfpack_wsolve.h exists, though): +# with int/SuiteSparse_long and real/complex versions: +UMFPACKW = umfpack_wsolve + +USER = $(UMFPACKW) $(UMFPACK) + +# user-callable, only one version for int/SuiteSparse_long, +# real/complex, *.[ch] files: +GENERIC = umfpack_timer umfpack_tictoc + +#------------------------------------------------------------------------------- +# include files: +#------------------------------------------------------------------------------- + +INC = umfpack.h ../AMD/SuiteSparse_config.h \ + umf_config.h umf_version.h \ + umf_internal.h umf_triplet.h \ + $(addprefix ./, $(addsuffix .h,$(UMFCH))) \ + $(addprefix ./, $(addsuffix .h,$(UMFINT))) \ + $(addprefix ./, $(addsuffix .h,$(USER))) \ + $(addprefix ./, $(addsuffix .h,$(GENERIC))) \ + ../AMD/amd_internal.h ../AMD/amd.h + +#------------------------------------------------------------------------------- +# object files for each version +#------------------------------------------------------------------------------- +UMFPACK_DI = $(addsuffix .o, $(subst umf_,umf_di_,$(UMF)) $(subst umfpack_,umfpack_di_,$(USER))) +UMFPACK_II = $(addsuffix .o, $(subst umf_,umf_i_,$(UMFINT))) +UMFPACK_GN = $(addsuffix .o, $(subst umfpack_,umfpack_gn_,$(GENERIC))) + + +# obj +UMFPACK_OBJ = $(UMFPACK_DI) $(UMFPACK_II) $(UMFPACK_GN) + + + +all: umfpack + +#------------------------------------------------------------------------------- +# compile each int and SuiteSparse_long routine (with no real/complex version) +#------------------------------------------------------------------------------- + +umf_i_%.o: umf_%.c $(INC) + $(C) -DDINT -c $< -o $@ + +#------------------------------------------------------------------------------- +# compile each routine in the DI version +#------------------------------------------------------------------------------- + +umf_di_%.o: umf_%.c $(INC) + $(C) -DDINT -c $< -o $@ + +umf_di_%hsolve.o: umf_%tsolve.c $(INC) + $(C) -DDINT -DCONJUGATE_SOLVE -c $< -o $@ + +umf_di_triplet_map_x.o: umf_triplet.c $(INC) + $(C) -DDINT -DDO_MAP -DDO_VALUES -c $< -o $@ + +umf_di_triplet_map_nox.o: umf_triplet.c $(INC) + $(C) -DDINT -DDO_MAP -c $< -o $@ + +umf_di_triplet_nomap_x.o: umf_triplet.c $(INC) + $(C) -DDINT -DDO_VALUES -c $< -o $@ + +umf_di_triplet_nomap_nox.o: umf_triplet.c $(INC) + $(C) -DDINT -c $< -o $@ + +umf_di_assemble_fixq.o: umf_assemble.c $(INC) + $(C) -DDINT -DFIXQ -c $< -o $@ + +umf_di_store_lu_drop.o: umf_store_lu.c $(INC) + $(C) -DDINT -DDROP -c $< -o $@ + +umfpack_di_wsolve.o: umfpack_solve.c $(INC) + $(C) -DDINT -DWSOLVE -c $< -o $@ + +umfpack_di_%.o: umfpack_%.c $(INC) + $(C) -DDINT -c $< -o $@ + +#------------------------------------------------------------------------------- +# Create the generic routines (GN) using a generic rule +#------------------------------------------------------------------------------- + +umfpack_gn_%.o: umfpack_%.c $(INC) + $(C) -c $< -o $@ + +#------------------------------------------------------------------------------- +# Create the libumfpack.a library +#------------------------------------------------------------------------------- + +umfpack: $(UMFPACK_OBJ) + @$(RM) $(RMFLAGS) $(UMFPACK_LIBRARY) + @$(AR) $(ARFLAGS) $(UMFPACK_LIBRARY) $(UMFPACK_OBJ) + @$(RANLIB) $(UMFPACK_LIBRARY) + +clean: + @$(RM) $(RMFLAGS) *.o + +wipe: clean + diff --git a/SRC/domain/constraints/CMakeLists.txt b/SRC/domain/constraints/CMakeLists.txt index 3c468dca6..65d827b47 100644 --- a/SRC/domain/constraints/CMakeLists.txt +++ b/SRC/domain/constraints/CMakeLists.txt @@ -6,21 +6,21 @@ target_sources(G3_Domain RigidDiaphragm.cpp RigidRod.cpp SP_Constraint.cpp + Pressure_Constraint.cpp PUBLIC MP_Constraint.h RigidBeam.h RigidDiaphragm.h RigidRod.h SP_Constraint.h + Pressure_Constraint.h ) target_sources(OPS_Domain PRIVATE ImposedMotionSP.cpp ImposedMotionSP1.cpp - Pressure_Constraint.cpp PUBLIC ImposedMotionSP.h ImposedMotionSP1.h - Pressure_Constraint.h ) target_include_directories(OPS_Domain PUBLIC $(CMAKE_CURRENT_LIST_DIR)) diff --git a/SRC/element/PFEMElement/CMakeLists.txt b/SRC/element/PFEMElement/CMakeLists.txt index 2d2977888..34b25b20a 100644 --- a/SRC/element/PFEMElement/CMakeLists.txt +++ b/SRC/element/PFEMElement/CMakeLists.txt @@ -25,8 +25,8 @@ target_sources(OPS_Element_PFEMElement PFEMElement2DQuasi.cpp PFEMElement3DBubble.cpp PFEMElement3D.cpp - PFEMElement3Dmini.cpp - PFEMMesher2D.cpp + #PFEMElement3Dmini.cpp + #PFEMMesher2D.cpp PFEMMesher3D.cpp QuadMesh.cpp QuadMeshGenerator.cpp @@ -62,8 +62,8 @@ target_sources(OPS_Element_PFEMElement PFEMElement2DQuasi.h PFEMElement3DBubble.h PFEMElement3D.h - PFEMElement3Dmini.h - PFEMMesher2D.h + #PFEMElement3Dmini.h + #PFEMMesher2D.h PFEMMesher3D.h QuadMeshGenerator.h QuadMesh.h diff --git a/SRC/system_of_eqn/linearSOE/CMakeLists.txt b/SRC/system_of_eqn/linearSOE/CMakeLists.txt index 21aa203e8..d4d877b61 100644 --- a/SRC/system_of_eqn/linearSOE/CMakeLists.txt +++ b/SRC/system_of_eqn/linearSOE/CMakeLists.txt @@ -18,7 +18,7 @@ add_subdirectory(diagonal) add_subdirectory(fullGEN) add_subdirectory(sparseGEN) add_subdirectory(sparseSYM) -add_subdirectory(umfGEN) +#add_subdirectory(umfGEN) add_subdirectory(profileSPD) #add_subdirectory(cg) diff --git a/SRC/system_of_eqn/linearSOE/sparseGEN/CMakeLists.txt b/SRC/system_of_eqn/linearSOE/sparseGEN/CMakeLists.txt index e0df6e1e7..f426a4a80 100644 --- a/SRC/system_of_eqn/linearSOE/sparseGEN/CMakeLists.txt +++ b/SRC/system_of_eqn/linearSOE/sparseGEN/CMakeLists.txt @@ -16,31 +16,33 @@ target_sources(G3_SysOfEqn target_sources(OPS_PFEM PRIVATE - PFEMSolver.cpp - PFEMLinSOE.cpp - PFEMCompressibleSolver.cpp PFEMCompressibleLinSOE.cpp - PFEMSolver_LumpM.cpp - PFEMSolver_Umfpack.cpp - PFEMQuasiLinSOE.cpp - PFEMQuasiSolver.cpp + PFEMCompressibleSolver.cpp PFEMDiaLinSOE.cpp PFEMDiaSolver.cpp + PFEMLinSOE.cpp + PFEMQuasiLinSOE.cpp + PFEMQuasiSolver.cpp + + PFEMSolver.cpp PFEMSolver_Laplace.cpp PFEMSolver_LumpM.cpp + PFEMSolver_LumpM.cpp + PFEMSolver_Umfpack.cpp PUBLIC - PFEMSolver.h - PFEMLinSOE.h - PFEMCompressibleSolver.h PFEMCompressibleLinSOE.h - PFEMSolver_LumpM.h - PFEMSolver_Umfpack.h - PFEMQuasiLinSOE.h - PFEMQuasiSolver.h + PFEMCompressibleSolver.h PFEMDiaLinSOE.h PFEMDiaSolver.h + PFEMLinSOE.h + PFEMQuasiLinSOE.h + PFEMQuasiSolver.h + + PFEMSolver.h PFEMSolver_Laplace.h PFEMSolver_LumpM.h + PFEMSolver_LumpM.h + PFEMSolver_Umfpack.h ) target_sources(OpenSeesMP