8.3. Example 3: Two Jointed Beams with Frictional Contact Interface

This example shows the nonlinear harmonic analysis of two jointed beams with a frictional contact interface using Harmonic Balance Method (HBM). Specifically, it demonstrates the following key points:

The example problem is presented in the following sections:

8.3.1. Problem Description

Two solid beams of respective sizes 40 x 20 x 5 mm and 140 x 20 x 5 mm are meshed with SOLID185 elements and linked by a frictional contact interface of 20 mm length. The left end of the top beam is clamped, and a constant surface pressure of magnitude 1 N/mm2 is applied on each side of the contact area to maintain contact between the two beams.

Figure 8.10: Finite Element Model of the Two Jointed Beams

Finite Element Model of the Two Jointed Beams

All node-to-node contact elements have a normal and tangential stiffness of 103 N/m and a friction coefficient of 0.3.

The first out-of-plane mode of the jointed beams (f2 = 318.7 Hz), which generates high friction in the joint interface is under study in the nonlinear harmonic analysis. It is activated by applying a transverse surface pressure of different magnitude levels at the end of the lower beam. To compute the response, the frequency range for the HBM analysis is [310, 325] Hz and the number of harmonics NH = 3.

Figure 8.11: First Out-of-plane Mode (Mode 2) at 318.7 Hz

First Out-of-plane Mode (Mode 2) at 318.7 Hz

Model reduction

Before running the HBM analysis, the linear part of the model is condensed using Component Mode Synthesis (CMS) to reduce the total number of equations and consequently the computational time. The 15 nodes on each substructure used to define contact and one observation node at the end of the lower beam are selected as master nodes. Loads are defined using superelement load vectors to apply pressure, avoiding extra master nodes for loading. Six modes are used to generate each superelement so that the total number of HBM equations is 735.

Preload

To improve convergence at the first frequency point, a preliminary static analysis is run considering only the constant pressure load. Then, the static solution is read from the results (Jobname.rst) file and used as an initial guess for the HBM solution (HBMOPT,UINIT). The procedure to define the HBM initial guess is as follows:

Combine the static Jobname.full files if using distributed-memory parallel (DMP) processing.

  1. Read the static solution vector to be used as the 0th harmonic () of the initial guess () from the Jobname.rst file.

  2. Create the multiharmonic solution vector ( in Equation 1–7 - Equation 1–9, referred to here as for clarity) using the *DIM command. The size of is related to and the number of harmonics NH as follows:

    size() = size()*(2*NH + 1).

  3. Fill the vector with values. is defined as

    = [; ; ; ; ; … ; ]

    where

    the subscripts and denote real and complex values

    and the integer superscripts denote the time-domain harmonic index h (see Equation 1–9).

  4. Read the BACK nodal mapping vector from the Jobname.rst file and export it to an APDL array named "UserBack".

  5. Specify the initial guess for the HBM solution using and UserBack as inputs by issuing HBMOPT,UINIT,APDL,umh,INT,UserBack.

The HBM initial guess can be retrieved from different preliminary analyses. See below for more details about the procedure.

To restart from a linear harmonic analysis, use the linear solution as an initial guess to help the solver converge towards the first solution. Follow the procedure described above except for steps two and four to fill the multiharmonic solution vector :

2. Read the linear harmonic solution vector (real and imaginary ) from the Jobname.rst file.
4. Fill the vector with and values.

To resume a prior HBM analysis that stopped due to convergence failure or a stopping criterion, restart the analysis at the last point computed. Changing some parameters (number of harmonics NH, number of time points per period NT, etc. via HBMOPT) without recomputing the previous substeps reduces the workflow and computation time. Follow the procedure described above except for steps two and four to fill the multiharmonic solution vector umh (see Example 8.1: Command Input for Filling umh from a Previous HBM Analysis):

2. For each harmonic of the initial run, read the solution vector (real and imaginary ) from the corresponding results file (Jobname0.rst, Jobname_1hi0.rst, etc.)
4. Fill the vector with and values.

Example 8.1: Command Input for Filling umh from a Previous HBM Analysis

! number of harmonics
NH = 3

*get,rstName,active,,jobnam
*VEC,u0,D,IMPORT,RST,%rstName%.rst,1,,NSL
uDim = u0_Dim ! size of the single harmonic solution vector

! size of the multiharmonic solution vector
umhDim = uDim*(1+2*NH)
*DIM,umh,ARRAY,umhDim

! fill vector with harmonic 0 solution
*DO,i,1,uDim
   umh(i) = u0(i)
*ENDDO 

! fill vector with other harmonic solutions (complex)
iloc = uDim
*DO,ih,1,NH
   *VEC,uh,Z,IMPORT,RST,%rstName%_%ih%hi0.rst,iRestart,,NSL
   *DO,i,1,uDim
      iloc = iloc + 1
      umh(iloc) = uh(i,1)
   *ENDDO 
   *DO,i,1,uDim
      iloc = iloc + 1
      umh(iloc) = uh(i,2)
   *ENDDO 
*ENDDO


Scaling the solution vector

To improve convergence behavior in the Newton-Raphson continuation procedure, the use of HBMOPT,SCAL to linearly scale each component of the solution vector by providing a vector of scaling factors is demonstrated here. (For scaling equations and tips on scaling the solution vector, see Equation Solution and Scaling the Solution Vector.)

Scaling the solution to improve convergence depends on the specifics of each model. Although there is no universal rule for determining scaling factors, the approach and equations used in this problem are often applicable. Since scaling does not affect solution accuracy, you can use typical or approximate values (as exact values may be unknown a priori) or other strategies to determine scaling parameters suitable for your application.

For this problem, the scaling vector is defined as an APDL array named "uscal" filled with a constant scaling factor for the displacement, scal_disp. The number of physical equations, Neq_typ, and the largest predicted displacement, Umax_typ, are used to calculate the displacement scaling factor by scal_disp = Neq_typ*Umax_typ. A value of scal_freq =300*2*p, close to the frequency range of interest (in rad/s) is used to scale the solution degree of freedom which corresponds to the forcing frequency. Finally, the scaling is applied by issuing HBMOPT,SCAL,1,uscal,scal_freq,SOLU. Note that for this example, a constant scaling value could be used (HBMOPT,SCAL,VALU,scal_disp,scal_freq), and a vector is created only for demonstration purposes.

8.3.2. Input for the Analysis

To download the .dat file used for this example problem, click the link below.

The contents of this file are listed below. The command listing shows in detail how to specify and run the HBM analysis. You can use it as a template and modify it to create a custom HBM analysis.

/batch,list
/title, Two jointed beams with frictional contact interface

! beam 1
Lb1 =  40                           ! length
wb1 =  20                           ! width
tb1 =   5                           ! thickness

! beam 2
Lb2 = 140                           ! length
wb2 =  20                           ! width
tb2 =   5                           ! thickness

! material
E   = 116e3                         ! Young's modulus
nu  = 0.32                          ! Poisson's ratio
rho = 4506e-12                      ! density

alpd = 2e-6                         ! alpha damping
betd = 1e-5                         ! beta damping

! contact
Lc = 20                             ! surface length
wc = 20                             ! surface width
Kn = 1e3                            ! normal     stiffness
Kt = 1e3                            ! tangential stiffness
mu = 0.3                            ! friction coefficient

! load
FN0 = 1.0                           ! static   pressure
FT1 = 5.0e-4                        ! harmonic tangential force
                                    ! 1.0e-4, 5.0e-4, 1.0e-3 or 2.0e-3 to reproduce figure 3 results

! mesh
esiz_x = Lb1/4                      ! element size in x-direction
esiz_y = wb1/4                      ! element size in y-direction
esiz_z = tb1/2                      ! element size in z-direction

! CMS
Nmode = 6

! HBM
Fmin  = 310
Fmax  = 325

NH    = 3                           ! number of harmonics

ds    = 0.5                         ! initial step size
dsmin = ds/50                       ! minimum step size
dsmax = ds*5                        ! maximum step size

neq_hbm   = (31*3+2*Nmode)*(2*NH+1) ! number of HBM equations: 
                                    !      113 equations = 31 nodes X 3 dofs + 20 CMS modes

pi        = acos(-1)

! typical values of the problem
Neq_typ   = 90                      ! typical number of physical equations
Umax_typ  = 0.10                    ! typical value of maximum displacement (mm)
Fpeak_typ = 300                     ! peak frequency (Hz)

! scaling values
scal_disp = Umax_typ*Neq_typ        ! scaling for displacement DOFs
scal_freq = 2*pi*Fpeak_typ          ! scaling for frequency    DOF

/prep7

! material
mp,ex  ,1,E
mp,prxy,1,nu
mp,dens,1,rho
mp,alpd,1,alpd
mp,betd,1,betd

mp,mu,2,mu

! geometry
block, 0,Lb1,             0,wb1, 0,tb1  ! beam 1
block, Lb1-Lc,Lb1+Lb2-Lc, 0,wb2, -tb2,0 ! beam 2

! element types
et,1,185

! mesh
vsel,s,volu,,1,,,1
lsel,r,loc,x,Lb1/2
lesize,all,esiz_x
allsel

vsel,s,volu,,2,,,1
lsel,r,loc,x,Lb1-Lc+Lb2/2
lesize,all,esiz_x
allsel

lsel,s,loc,y,wb1/2
lesize,all,esiz_y
allsel

lsel,s,loc,z, tb1/2
lsel,a,loc,z,-tb2/2
lesize,all,esiz_z
allsel

type,1
real,1
mat ,1
vmesh,all

vsel,s,volu,,1,,,1
cm,beam1_node,node
cm,beam1_elem,elem
allsel

vsel,s,volu,,2,,,1
cm,beam2_node,node
cm,beam2_elem,elem
allsel

finish

save,full,db
parsav,all,full,parm

/com
/com ______________ GENERATION PASS - BEAM 1 _____________
/com
/filname,beam1

/solu
antype,substr
seopt,beam1,3,,,NONE        ! generate stiffness, damping, and mass matrix 
                            !          (NONE = no files kept for expansion)
cmsopt,fixed,Nmode

! boundary conditions
nsel,s,loc,x,0
d,all,all
allsel

! loading
nsel,s,loc,x,Lb1-Lc,Lb1
nsel,r,loc,z,tb1
sf,all,pres,1
allsel

! master dofs
cmsel,s,beam1_node
nsel,r,loc,z,0
nsel,r,loc,x,Lb1-Lc,Lb1
cm,contact_beam1,node
allsel

cmsel,s,contact_beam1
m,all,all
allsel

cmsel,s,beam1_node      ! select only nodes and elements for beam 1
cmsel,s,beam1_elem
solve
finish

save

/com
/com ______________ GENERATION PASS - BEAM 2 _____________
/com
/filname,beam2

/solu
antype,substr
seopt,beam2,3,,,NONE   ! generate stiffness, damping, and mass matrix 
                       !          (NONE = no files kept for expansion)
cmsopt,fixed,nmode

! master dofs
cmsel,s,beam2_node
nsel,r,loc,z,0
nsel,r,loc,x,Lb1-Lc,Lb1
cm,contact_beam2,node
allsel

nsel,s,loc,x,Lb1-Lc+Lb2
nsel,r,loc,y,wb2/2
nsel,r,loc,z,0
cm,load_beam2,node
allsel

cmsel,s,contact_beam2
cmsel,a,load_beam2
m,all,all
allsel

/com >>>>>> LOAD VECTOR 1
nsel,s,loc,x,Lb1-Lc,Lb1
nsel,r,loc,z,-tb2
sf,all,pres,1
allsel

cmsel,s,beam2_node     ! select only nodes and elements for beam 2
cmsel,s,beam2_elem
solve

/com >>>>>> LOAD VECTOR 2
sfdele,all,all
nsel,s,loc,x,Lb1+Lb2-Lc
sfco,2,,0,1,0
sf,all,pres,1
allsel

cmsel,s,beam2_node     ! select only nodes and elements for beam 2
cmsel,s,beam2_elem
solve

finish

save

/com
/com ______________ USE PASS _____________
/com
/clear,nostart
/filname,hbm

parres,,full,parm

/prep7

! load SE
et,10,50
type,10
se,beam1
se,beam2

! contact
et,2,178
keyopt,2,2 ,1        ! pure penalty method
keyopt,2,5 ,3        ! contact normal along z-direction
r,2,-Kn,,,-Kt

mp,mu,2,mu

type,2
real,2
mat ,2
nsel,s,loc,z,0
nsel,r,loc,x,Lb1-Lc,Lb1
eintf,,,HIGH
allsel

finish

/solu
antype,static

rescontrol,define,last,last
nropt,unsym

! boundary conditions
nsel,s,loc,x,0
d,all,all
allsel

! loading - constant pressure
sfe,1,1,SELV,0,FN0 ! SE 1 - LV 1
sfe,2,1,SELV,0,FN0 ! SE 2 - LV 1

solve
finish
save

/clear,nostart
/filname,hbm

resume,hbm,db

/com
/com ---- READ STATIC RESULTS AND WRITE CORRESPONDING HBM INITIAL SOLUTION VECTOR
/com

! read harmonic 0 solution (real)
*get,jobn,active,,jobnam
*VEC,u0,D,IMPORT,RST,%jobn%.rst,1,,NSL
uDim   = u0_Dim                     ! size of the single harmonic solution vector
umhDim = uDim*(1+2*NH)              ! size of the multiharmonic solution vector

! fill multiharmonic vector with harmonic 0 solution
*DIM,umh,ARRAY,umhDim
*DO,i,1,uDim
   umh(i) = u0(i)
*ENDDO 

! read the mapping
*xpl,open,%jobn%.rst
*xpl,read,nod,BackVecI
*xpl,close
*vec,BackVecD,D,copy,BackVecI
*export,BackVecD,apdl,UserBack

/solu
antype,harmic

hropt,hbm,NH                        ! hbm solve and number of harmonics
harfrq,Fmin,Fmax

hbmopt,contset,,ds,dsmin,dsmax
hbmopt,uinit,APDL,umh,INT,UserBack
hbmopt,contterm,100,50
hbmopt,nr,10

kbc,1

! boundary conditions
nsel,s,loc,x,0
d,all,all
allsel

! loading - constant pressure - harmonic 0
*dim,FNtab,TABLE,NH+1,1,,NHINDEX,FREQ
*vfill,FNtab(1,0),RAMP,0,1
FNtab(0,1) = 100
FNtab(1,1) = FN0
sfe,1,1,SELV,0,%FNtab%              ! SE 1 - LV 1
sfe,2,1,SELV,0,%FNtab%              ! SE 2 - LV 1

! loading - tangential pressure - harmonic 1
sfe,2,2,SELV,0,FT1                  ! SE 2 - LV 2

! scaling
*dim,uscal,array,neq_hbm
*vfill,uscal(1),RAMP,scal_disp,0

hbmopt,scal,1,uscal,scal_freq,SOLU

solve
finish

/post26

nsel,s,loc,x,Lb1-Lc+Lb2
nsel,r,loc,y,wb2/2
nsel,r,loc,z,0
nd_load = ndnext(0)
allsel

HBM_EXPA,'hbm',nd_load,'u','y',NH,'minmax'

*vfact,1/(FT1*wb2*tb2)
*vfun,_hbm_ampl(1),COPY,_hbm_ampl(1)

/gmarker,,4
/xrange,310,325
/yrange,0,3
/axlab,X,Frequency (Hz)
/axlab,Y,Amplitude (mm/N)
/plopt,info,0
/title,Ft = %FT1% N
/show,png,rev
   *vplot,_hbm_freq(1),_hbm_ampl(1)
/show,close

/nopr
/out,results_FT%FT1%,txt
*vwrite,_hbm_freq(1),_hbm_ampl(1)
(F10.5,' , ',E12.6)
/out,scratch

finish

8.3.3. Results

The amplitude of UY displacement at the tip of the lower beam is computed using the HBM_EXPA macro. The amplitude of the response scaled by the excitation amplitude is shown in the figure below for different levels of excitations.

Figure 8.12: Scaled Response for Different Levels of Excitation

Scaled Response for Different Levels of Excitation

It shows that friction dissipates energy because of the contact stick-slip phenomenon. When increasing the excitation amplitude from 0.01 N to 0.20 N, the scaled amplitude of the response decreases. This corresponds to an increase of frictional damping due to the contact elements spending more time in the sliding state.

Information about the contact status is provided in the jobname1.out file for each iteration. For example, for Ft = 0.10 N and close to the natural frequency, the summary shows that sliding occurs on average 12.5% of time for 2 of the 15 contact elements:

******** SUMMARY OF CONTACT ELEMENTS BEHAVIOR DURING LAST PERIOD ********  
NO. OF ELEMENTS STICKING AT LEAST ONCE =  15  | AVERAGE % OF TIME =  98.3%        
NO. OF ELEMENTS SLIDING AT LEAST ONCE  =   2  | AVERAGE % OF TIME =  12.5% 

For Ft = 0.20 N and around the same frequency, there are still only 2 elements sliding but they spend a greater time sliding, on average of 20% of the time:

******** SUMMARY OF CONTACT ELEMENTS BEHAVIOR DURING LAST PERIOD ********
NO. OF ELEMENTS STICKING AT LEAST ONCE =  15  | AVERAGE % OF TIME =  97.3%
NO. OF ELEMENTS SLIDING AT LEAST ONCE  =   2  | AVERAGE % OF TIME =  20.3%