FrontISTR  5.7.0
Large-scale structural analysis program with finit element method
fstr_solve_eigen.f90
Go to the documentation of this file.
1 !-------------------------------------------------------------------------------
2 ! Copyright (c) 2019 FrontISTR Commons
3 ! This software is released under the MIT License, see LICENSE.txt
4 !-------------------------------------------------------------------------------
7 contains
8 
10  subroutine fstr_solve_eigen( hecMESH, hecMAT, fstrEIG, fstrSOLID, &
11  & fstrRESULT, fstrPARAM, hecLagMAT)
13  use m_fstr
15  use m_fstr_addbc
19  use m_static_lib
21  use m_fstr_spring
22 
23  implicit none
24 
25  type(hecmwst_local_mesh) :: hecmesh
26  type(hecmwst_matrix) :: hecMAT
27  type(fstr_solid) :: fstrSOLID
28  type(hecmwst_result_data) :: fstrRESULT
29  type(fstr_param) :: fstrPARAM
30  type(fstr_eigen) :: fstrEIG
31  type(hecmwst_matrix_lagrange) :: hecLagMAT
32 
33  type(hecmwst_local_mesh), pointer :: hecMESHmpc
34  type(hecmwst_matrix), pointer :: hecMATmpc
35  real(kind=kreal) :: t1, t2
36 
37  t1 = hecmw_wtime()
38 
39  call hecmw_mpc_mat_init(hecmesh, hecmat, hecmeshmpc, hecmatmpc)
40 
41  fstrsolid%dunode = 0.0d0
42  call fstr_stiffmatrix(hecmesh, hecmat, fstrsolid, 0.0d0, 0.0d0)
43  call fstr_addspring(1, hecmesh, hecmat, fstrsolid, fstrparam)
44 
45  call fstr_addbc(1, hecmesh, hecmat, fstrsolid, fstrparam, heclagmat, 2)
46  call hecmw_mpc_mat_ass(hecmesh, hecmat, hecmeshmpc, hecmatmpc)
47  call hecmw_mpc_trans_rhs(hecmesh, hecmat, hecmatmpc)
48 
49  call setmass(fstrsolid, hecmesh, hecmat, fstreig)
50  call hecmw_mpc_trans_mass(hecmesh, hecmat, fstreig%mass)
51 
52  call fstr_solve_lanczos(hecmeshmpc, hecmatmpc, fstrsolid, fstreig)
53 
54  call hecmw_mpc_tback_eigvec(hecmesh, hecmat, fstreig%iter, fstreig%eigvec)
55 
56  call fstr_eigen_output(hecmesh, hecmat, fstreig)
57 
58  call fstr_eigen_make_result(hecmesh, hecmat, fstreig, fstrresult)
59 
60  call hecmw_mpc_mat_finalize(hecmesh, hecmat, hecmeshmpc, hecmatmpc)
61 
62  t2 = hecmw_wtime()
63 
64  if(myrank == 0)then
65  write(imsg,'("### FSTR_SOLVE_EIGEN FINISHED!")')
66  write(*,'("### FSTR_SOLVE_EIGEN FINISHED!")')
67  endif
68 
69  end subroutine fstr_solve_eigen
70 end module m_fstr_solve_eigen
m_fstr_solve_eigen
This module provides a function to control eigen analysis.
Definition: fstr_solve_eigen.f90:6
hecmw_util::hecmw_wtime
real(kind=kreal) function hecmw_wtime()
Definition: hecmw_util_f.F90:549
m_fstr_eig_lanczos
Lanczos iteration calculation.
Definition: fstr_EIG_lanczos.f90:6
m_fstr_eig_setmass::setmass
subroutine setmass(fstrSOLID, hecMESH, hecMAT, fstrEIG)
Definition: fstr_EIG_setMASS.f90:16
m_fstr::myrank
integer(kind=kint) myrank
PARALLEL EXECUTION.
Definition: m_fstr.f90:96
m_fstr::fstr_eigen
Package of data used by Lanczos eigenvalue solver.
Definition: m_fstr.f90:593
m_fstr_stiffmatrix::fstr_stiffmatrix
subroutine, public fstr_stiffmatrix(hecMESH, hecMAT, fstrSOLID, time, tincr)
This subroutine creates tangential stiffness matrix.
Definition: fstr_StiffMatrix.f90:19
m_fstr::fstr_solid
Definition: m_fstr.f90:238
m_fstr_eig_output::fstr_eigen_output
subroutine fstr_eigen_output(hecMESH, hecMAT, fstrEIG)
Definition: fstr_EIG_output.f90:10
m_fstr::fstr_param
FSTR INNER CONTROL PARAMETERS (fstrPARAM)
Definition: m_fstr.f90:154
m_fstr_spring::fstr_addspring
subroutine fstr_addspring(cstep, hecMESH, hecMAT, fstrSOLID, fstrPARAM)
Definition: fstr_Spring.f90:12
m_fstr_eig_lanczos::fstr_solve_lanczos
subroutine fstr_solve_lanczos(hecMESH, hecMAT, fstrSOLID, fstrEIG)
SOLVE EIGENVALUE PROBLEM.
Definition: fstr_EIG_lanczos.f90:11
m_fstr_eig_setmass
Set up lumped mass matrix.
Definition: fstr_EIG_setMASS.f90:6
hecmw_util
I/O and Utility.
Definition: hecmw_util_f.F90:7
hecmw_util::hecmwst_local_mesh
Definition: hecmw_util_f.F90:234
m_fstr
This module defines common data and basic structures for analysis.
Definition: m_fstr.f90:15
m_fstr_solve_eigen::fstr_solve_eigen
subroutine fstr_solve_eigen(hecMESH, hecMAT, fstrEIG, fstrSOLID, fstrRESULT, fstrPARAM, hecLagMAT)
solve eigenvalue probrem
Definition: fstr_solve_eigen.f90:12
m_fstr_eig_output
Definition: fstr_EIG_output.f90:5
hecmw_util::kreal
integer(kind=4), parameter kreal
Definition: hecmw_util_f.F90:16
m_hecmw2fstr_mesh_conv
HECMW to FSTR Mesh Data Converter. Converting Connectivity of Element Type 232, 342 and 352.
Definition: hecmw2fstr_mesh_conv.f90:8
m_fstr_addbc::fstr_addbc
subroutine fstr_addbc(cstep, hecMESH, hecMAT, fstrSOLID, fstrPARAM, hecLagMAT, iter, conMAT, RHSvector)
Add Essential Boundary Conditions.
Definition: fstr_AddBC.f90:14
m_fstr_eig_output::fstr_eigen_make_result
subroutine fstr_eigen_make_result(hecMESH, hecMAT, fstrEIG, fstrRESULT)
Definition: fstr_EIG_output.f90:113
m_fstr_stiffmatrix
This module provides function to calculate tangent stiffness matrix.
Definition: fstr_StiffMatrix.f90:7
m_static_lib
This modules just summarizes all modules used in static analysis.
Definition: static_LIB.f90:6
m_fstr_addbc
This module provides a function to deal with prescribed displacement.
Definition: fstr_AddBC.f90:7
m_fstr_spring
This module provides functions to deal with spring force.
Definition: fstr_Spring.f90:7
hecmw_util::hecmwst_matrix_lagrange
Structure for Lagrange multiplier-related part of stiffness matrix (Lagrange multiplier-related matri...
Definition: hecmw_util_f.F90:427
hecmw_util::hecmwst_matrix
Definition: hecmw_util_f.F90:444
m_fstr::imsg
integer(kind=kint), parameter imsg
Definition: m_fstr.f90:110