9.6. Example Inputs for Linear Perturbation Analysis

This section contains input listings for the following linear perturbation analysis examples:

Example 9.1: Linear Perturbation Static Analysis

/prep7
et,1,solid185

mp,ex,1,11.5e8
mp,nuxy,1,.3
mp,dens,1,1000

! ********** Creating geometry ***********
block,0,1,0,-0.1,-1,1
esize,0.2
type,1
vmesh,1

block,1,2,0,-0.1,-1,1
esize,0.2
type,1
vmesh,2
allsel,all

! ********** Creating Bonded Contact Pair **********
*set,tid,4
*set,cid,3
et,cid,conta175
et,tid,targe170

keyo,cid,12,5                      ! Bonded Contact 

vsel,s,volu,,1
allsel,below,volu
type,3
real,3
nsel,r,loc,x,1
esurf
allsel

vsel,s,volu,,2
allsel,below,volu
type,4
real,3
nsel,r,loc,x,1
esurf
allsel

! ********** Displacement Load in Base Static Solve ***********
*dim,disp_x,table,2,1,1
disp_x(1,0)=1
disp_x(1,1)=-1e-03
disp_x(2,0)=2
disp_x(2,1)=-1.5e-03


! ********** Force Load in Linear Perturbation Static Solve ************
*dim,force_y,table,1,1,1
force_y(1,0)=3
force_y(1,1)=1e+02

nsel,s,loc,x,0
d,all,all
allsel,all

nsel,s,loc,x,2
nsel,r,loc,y,0
cm,comp1,node
nsel,all
finish

/solution  
antype,static
nlgeom,on                          ! Enable nonlinear effects
nsubst,10,100,10
autots,on
outres,all,all
rescontrol,define,all,all,         ! write restart files
nsel,s,loc,x,2
d,all,ux,%disp_x%
allsel,all,all
time,2
solve                              ! 2nd load step
save
fini

/solution
antype,static,restart,,,perturb
perturb,static,,current,nokeep     ! Discard any BCs from the base static solution
solve,elform

nsel,s,loc,x,0
d,all,all,0                        ! Redefine BC
nsel,all

f,comp1,fy,%force_y%
time,3
allsel,all,all
solve
fini

/post1
file,,rstp
set,last
nsel,s,,,200,264,2
prnsol,u,sum
prnsol,s
nsel,all
prrfor
finish


Example 9.2: Simple Example of a Linear Perturbation Modal Analysis

/prep7
mp,ex,1,10     ! Simple material
mp,nuxy,1,0.3
mp,dense,1,0.5
n,1,
n,2,1
n,3,1,1
n,4,0,1
n,5,2,0
n,6,2,1
n,7,3,0
n,8,3,1

et,1,182,,,1
e,1,2,3,4
e,2,5,6,3,
e,7,8,6,5

allsel,all

d,1,all
d,4,ux
f,8,fy,-2.0        ! Apply a lateral point load at node 8
dlist
finish

/solution
antype,static      ! Static analysis
nlgeom,on          ! Large deformation and large strain
rescontrol,,all,1  ! Get restart files for all substeps
nsub,5,5,5         ! Use fixed time steps
solve
finish

!! Begin modal linear perturbation analysis

/solu
/com    FIRST PHASE OF LINEAR PERTURBATION
antype,,restart,1,3,perturb  ! Restart at 1st loadstep, 3rd substep,
                             ! from the base nonlinear static analysis
perturb,modal
solve,elform     ! Execute 1st phase of linear perturbation, recovering Kt of NLGEOM,on
!!
/com    SECOND PHASE OF LINEAR PERTURBATION
dlist,all        ! Displacement boundary conditions are not deleted
flist,all        ! Lateral point load at node 8 has been deleted internally at SOLVE,elform
f,8,fy,-4.0      ! Apply new load for downstream analysis, 
f,8,fx,-2.0      ! (downstream analysis is not shown in this simple example)
                 ! This newly applied point load does not affect modal solution
flist
modopt,lanb,3    ! Solve for lowest 3 modes by using block Lanczos
mxpand,3,,,yes   ! Expand mode the same time
outres,esol,all 
solve            ! Execute 2nd phase of linear perturbation: modal analysis
dlist            ! Verify perturbation loads again
flist
fini

/post1
file,,rstp  ! Use *.rstp file to review results from linear perturbation
set,list    ! It should list 3 eigen-modes
set,last    ! List stresses of the 3rd mode
esel,s,elem,,1
etable,seqv,s,eqv
allsel,all
etable,seqv,s,eqv
pretab,seqv
finish

Example 9.3: Linear Perturbation Modal Analysis with Large Rotation Effects

*afun,deg

/prep7
/triad,lbot
/view,1,1,0,0
/angl,1,-90
/graph,full
rotxy=0
rotyz=0
rotzx=-90

et,1,185

n,1,0,0,0                ! Define nodes
n,2,.5,0,0
n,3,.5,1,0
n,4,0,1,0
ngen,11,10,1,4,1,0,0,1
en,1,1,2,3,4,11,12,13,14         ! Define elements
egen,10,10,1
mp,ex,1,1.0e6                    ! define material
mp,ey,1,1.0e7
mp,ez,1,1.0e8
mp,nuxy,1,1.0e-8
mp,nuxz,1,1.0e-8
mp,nuyz,1,1.0e-8
mp,gxy,1,1e5
mp,gxz,1,1e5
mp,gyz,1,1e5
mp,dens,1,0.3/386.4
local,11,0,0,0,0,rotxy,rotyz,rotzx
csys,0
/psymb,cs,1
emodif,all,esys,11

tref,0
tunif,0
nsel,s,node,,1,4
d,all,ux,0
d,all,uy,0
d,all,uz,0
allsel,all
finish

!! Rigid rotation of 90 degrees

/solu
antype,static
nlgeom,on            ! large deflection
nsubst,1,1,1
save,case1,db,,model
nstep=9
dstep=90/nstep
*do,istep,1,nstep
  theta=dstep*istep
  nsel,s,node,,3,4
  d,all,uz,-sin(theta)
  d,all,uy,cos(theta)-1
  allsel
  solve
*enddo
finish

!! Linear perturbed modal analysis

/solu

/com   First phase of linear perturbation

antype,static,restart,,,perturb     ! Restart from the last substep of the rigid rotation

perturb,modal                       ! Set linear perturbed modal analysis
solve,elform                        ! Execute 1st phase of linear perturbation, recovering Kt of NLGEOM,on

/com   Second phase of linear perturbation

outres,all,all
modopt,lanb,2     		! Solve for first 2 modes by using block lanczos
mxpand,2,,,yes			! Expand mode at the same time
solve				    ! Execute 2nd phase of linear perturbation: modal analysis
finish
/post1
file,,rstp			    ! Use *.rstp file to review results from linear perturbation

set,list				! List 2 eigenmodes
 
set,1,1				    ! List strains and stresses of element 1 in the first mode 
esel,s,elem,,1

rsys,0					! List results in global coordinates
presol,s
presol,epto

rsys,solu		        ! List results in element coordinates
presol,s
presol,epto

finish

Example 9.4: Contact Status Control in a Linear Perturbation Modal Analysis

/filname,test1

!********** CASE 1 **********
/prep7
et,1,182
r,1,0.1

mp,ex,1,30e6
mp,dens,1,7.324
mp,prxy,,0.3

csys,1
pcirc,10,5,0,90
pcirc,10,15,40,50
allsel,all
esize,0.7

cyclic                 ! A cyclic symmetric static problem
mshkey,1
amesh,all
allsel,all

!********** Original contact definition **********
et,2,172
mat,2
mp,mu,2,0.000001
keyopt,2,4,2     
keyopt,2,2,0           ! Penalty function
keyopt,2,12,2          ! No-Separation contact (sliding allowed)
keyopt,2,5,1

type,2
real,2
lsel,s,line,,7
lmesh,all
allsel,all

et,3,169
lsel,s,line,,1
type,3
real,2
esurf,,reverse
lmesh,all
allsel,all

!********** Boundary Condition **********
nsel,s,loc,x,5
d,all,all,0
nsel,all
allsel,all

nsel,s,loc,x,15
esln,s
cm,load,elem
allsel,all

nsel,s,loc,x,13,14
nsel,r,loc,y,40
cm,comp1,node
nsel,all
nrotate,all
finish

/SOLU                  ! Enter the base nonlinear static analysis
antype,static
rescontrol,define,all,1
outres,all,all
nlgeom,on
nsubs,20,20,20
kbc,0
nsel,s,loc,x,15
f,all,fx,-3e4
allsel,all
solve                  ! 1st loadstep

time,2.0
nsubs,20,20,20
kbc,0
f,comp1,fy,10
allsel,all
solve                  ! 2nd loadstep
finish

/post1
set,last
/cycexpand,,on
esel,s,type,,2

!********** Contact status after Base static analysis: sliding **********
presol,cont,stat
esel,all
allsel,all
/cycexpand,,off
finish

/solu
antype,static,restart,,,perturb     ! Enter linear perturbed modal analysis
                                    ! by using last loadstep and substep. 
perturb,modal,,current,allkeep      ! Keep all the loads as in Base static run.
solve,elform                        ! First phase of linear perturbation

modopt,lanb,6
mxpand,6,,,yes
solve                               ! Second phase of linear perturbation
finish                              ! Completion of linear perturbation

/post1
file,,rstp
set,list
/cycexpand,,on
set,1,5                             ! Use the 5th mode, Harmonic Index = 0 to see solution
esel,s,type,,2

/com, ************************************************************
/com, *                        CASE 1                            *
/com, *  Using CURRENT as contact status key on PERTURB command  *
/com, ************************************************************
presol,cont,stat                    ! Expected contact status: sliding (same as Base static analysis)

esel,all
/cycexpand,,off
/delete,test1,rstp
finish
/clear,nostart
/filname,test1

!********** CASE 2 **********
/solu
antype,static,restart,1,10,perturb  ! Restart from loadstep 1, substep 10 (uy=2)
perturb,modal,,sticking,allkeep     ! Modify the contact from sliding to sticking
solve,elform

modopt,lanb,6
mxpand,6,,,yes
solve
finish

/post1
file,,rstp
set,list
/cycexpand,,on
set,1,5
esel,s,type,,2

/com, ************************************************************
/com, *                        CASE 2                            *
/com, *  Use sticking as contact status key on PERTURB command   *
/com, ************************************************************
presol,cont,stat                    ! Expected contact status: sticking

esel,all
/cycexpand,,off
/delete,test1,rstp
finish
/clear,nostart
/filname,test1

!********** CASE 3 **********
/solu
antype,static,restart,1,10,perturb  ! Restart from load step 1, substep 10 (uy=2)
cnkmod,2,12,3	                    ! Change from Keyopt(12)=2 to Keyopt(12)=3 (bonded)
perturb,modal,,current,allkeep      ! Retain the contact status same as in Base static analysis
solve,elform
modopt,lanb,6
mxpand,6,,,yes
solve
finish

/post1
file,,rstp
set,list
/cycexpand,,on
set,1,5
esel,s,type,,2

/com, ************************************************************
/com, *                        CASE 3                            *
/com, *  Use CNKMOD command to modify individual contact pairs   *
/com, ************************************************************
presol,cont,stat                    ! Expected contact status: Sticking

esel,all
/cycexpand,,off
finish

Example 9.5: Prestressed QRDAMP Linear Perturbation MODAL Analysis

/filname,modal

pres1 = 500
k1 = 1.e+4
k2 = 1.e+2

/prep7
et,1,185,,2
mp,ex,1,3.0e5
mp,nuxy,1,.3
mp,dens,1,.05
mp,mu,1,.3                    ! Make friction large

lp = 0.5
hp = 0.5

block,-lp,lp,-lp,lp, ,hp
block,-lp,lp,-lp,lp,hp,2*hp

esize,1.0
vmesh,1,2

!********** Allow sliding contact between blocks **********
et,2,174 
et,3,170
keyopt,2,9,1
keyopt,2,10,1
r,3

type,2
real,3
vsel,s,,,1,,,1
nsel,r,loc,z,hp
esurf

type,3
vsel,s,,,2,,,1
nsel,r,loc,z,hp
esurf
alls

!********** Put springs on UX ***********
et,4,14
keyopt,4,2,1
r,4,k1
et,5,14
keyopt,5,2,1
r,5,k2

lsp = -hp/2
n,1000,-lp, lp,lsp
n,1001,-lp,-lp,lsp
n,1002, lp, lp,lsp
n,1003, lp,-lp,lsp

type,4
real,4
e,1000,node(-lp,lp,0)
e,1001,node(-lp,-lp,0)
e,1002,node(lp,lp,0)

type,5
real,5
e,1003,node(lp,-lp,0)

!*********** Put springs on UY **********
et,6,14
keyopt,6,2,2
r,6,k1
et,7,14
keyopt,7,2,2
r,7,k2

type,6
real,6
e,1000,node(-lp,lp,0)
e,1001,node(-lp,-lp,0)
e,1002,node(lp,lp,0)

type,7
real,7
e,1003,node(lp,-lp,0)

!*********** Put springs on UZ ***********
et,8,14
keyopt,8,2,3
r,8,k1
et,9,14
keyopt,9,2,3
r,9,k2

type,8
real,8
e,1000,node(-lp,lp,0)
e,1001,node(-lp,-lp,0)
e,1002,node(lp,lp,0)

type,9
real,9
e,1003,node(lp,-lp,0)
finish

/solution
antype,static
nsel,,loc,z,lsp
d,all,all,0            ! Apply zero displacement on second node of springs
allsel
vsel,s,,,1,,,1
nsel,r,loc,x,-lp
d,all,ux,0             ! Apply zero UX displacement on constrained plate
vsel,s,,,2,,,1
nsel,r,loc,x,-lp
d,all,ux,.01           ! Force UX displacement on free plate
vsel,s,,,2,,,1
nsel,r,loc,y,-lp
d,all,uy,0             ! Apply zero UY displacement on free plate
allsel
nsel,s,loc,z,2*hp
sf,all,pres, pres1     ! Apply pressure on free plate
nsel,all
esel,,type,,2
cm,contact2,elem       ! Make a contact component
allsel
outres,all,last
nlgeom,on
nropt,unsym            ! Use unsymmetric option for frictional contact 
                       ! so that QRDAMP or UNSYM eigensolver can be used
solve
finish

/solution
antype,,restart,,,perturbation
perturb,modal
qrdopt,yes                   ! Allow reuse of QRDAMP Lanczos modes later
cmrot,contact2,0.0,0.0,1.9   ! Apply rotational velocity along rotZ
solve,elform                 ! 1st phase of perturbation

! Free blocks to see rigid body modes, if any.
! This is an example of modifying loads or B.C. in the 2nd 
! phase of linear perturbation.
vsel,s,,,1,2,,1
ddele,all,all
allsel
modopt,qrdamp,20,50,,on      ! Try QRDAMP eigensolver
!modopt,unsym,20,50          ! Alternatively use UNSYM eigensolver  j
    15-0.31718E-02  1183.7    j       1
solve                        ! 2nd phase of perturbation
finish

/post1
file,modal,rstp
*get,FREQ_IMAG1,mode,1,freq,imag
*get,FREQ_IMAG2,mode,5,freq,imag
*get,FREQ_IMAG3,mode,10,freq,imag
*get,FREQ_IMAG4,mode,15,freq,imag
*get,FREQ_IMAG5,mode,20,freq,imag
*stat,FREQ_IMAG1
*stat,FREQ_IMAG2
*stat,FREQ_IMAG3
*stat,FREQ_IMAG4
*stat,FREQ_IMAG5
finish

Example 9.6: Using Linear Perturbation to Predict a Buckling Load

!********** CASE 1 **********
!********** Base analysis ***********
/prep7                       ! Build the model
et,1,188

sectype,1,beam,rect          ! Define beam section
secdata,0.2,0.4
mp,ex,1,1.0e8                ! Define material
mp,dens,1,1000
mp,nuxy,1,0.3

local,11,0,0,0,0,45,0,0      ! Create model and mesh it
csys,11
k,1,0,0,0
k,2,10,0,0
l,1,2
lesize,1,,,10
lmesh,1
allsel,all

d,1,all,0                    ! Fix end of beam
allsel,all
nrotate,all
finish

save,model1,db               ! Save model as model1.db for use in cases 2 and 3

/solu
antype,static
outres,all,all

f,2,fx,-1000.0               ! Buckling load prediction is independent of 
                             ! this load level because base analysis is linear

rescontrol,linear,all,1      ! Needed to generate restart file
solve
finish

!********** Linear perturbation buckling analysis - first phase **********
/solu
antype,static,restart,,,perturb     ! Restart the linear base analysis
perturb,buckle,,,allkeep            ! This is a LP eigen-buckling analysis
solve,elform

!********** Linear perturbation buckling analysis - second phase **********
f,2,fx,-10.0
bucopt,lanb,2,,,range
mxpand,2,,,yes
solve
finish

/post1
file,,rstp
set,1,1
*get,loadfactor,active,0,set,freq

/com,*******************************************************************
/com, Case 1: Linear base analysis, Eigenvalue buckling analysis
/com, Buckling load is:  Fbuckling = 0 + Lambda *(Fperturbed)
/com,
/com, Expected load factor = 66.0258
/com, predicted Fbuckling = 0-66.0258*10 = -660.258
/com,
/com,*******************************************************************
*stat,loadfactor

finish
/delete,,rstp
/clear,nostart



!********** CASE 2 **********
resume,model1,db

!********** Base analysis **********
/solu
antype,static
outres,all,all
nlgeom,on                    ! Base analysis is nonlinear
rescontrol,define,all,1
nsubs,2,10,2
time,1
f,2,fx,-100.0                ! Buckling load prediction is dependent on
                             ! this load level because base analysis is nonlinear
solve
finish

!********** Linear perturbation buckling analysis - first phase **********
/solu
antype,static,restart,,,perturb     ! Restart at the end of loadstep
perturb,buckle,,,allkeep
solve,elform

!********** Linear perturbation buckling analysis - second phase **********
outres,all,all
f,2,fx,300
bucopt,lanb,2,,,center       ! Use CENTER option (default), we don't know if load factor
                             ! is negative or positive 
mxpand,2,,,yes
solve
finish

/post1
file,,rstp
set,1,2
*get,loadfactor2,active,0,set,freq

/com,********************************************************************
/com, Case 2:  Nonlinear base analysis, Eigenvalue buckling analysis
/com, Buckling load is:  Fbuckling = Frestart + Lambda *(Fperturbed),
/com, The CENTER option is used
/com,
/com, Expected load factor = -1.868
/com, predicted Fbuckling = -100-1.868*300 = -660.4
/com,
/com,********************************************************************
*stat,loadfactor2
finish
/delete,,rstp
/clear,nostart



!********** CASE 3 **********
resume,model1,db

!********** Base analysis **********
/solu
antype,static
outres,all,all
nlgeom,on                    ! Base analysis is nonlinear
rescontrol,define,all,1
nsubs,10,10,10
time,1
f,2,fx,-400.0                ! Buckling load prediction is dependent on
                             ! this load level because base analysis is nonlinear
solve
finish

!********** Linear perturbation buckling analysis - first phase **********
/solu
antype,static,restart,1,5,perturb   ! Restart in the middle of loadstep
perturb,buckle,,,allkeep
solve,elform

!********** Linear perturbation buckling analysis - second phase **********
outres,all,all
f,2,fx,-500
bucopt,lanb,2,,,range        ! Expected load factor is greater than zero; no need to use CENTER
mxpand,2,,,yes
solve
finish

/post1
file,,rstp
set,1,1
*get,loadfactor3,active,0,set,freq

/com,********************************************************************
/com, Case 3:  Nonlinear base analysis, Eigenvalue buckling analysis
/com, Buckling load is:  Fbuckling = Frestart + Lamda *(Fperturbed)
/com, No CENTER Option is used and restarting from middle.
/com,
/com, Expected load factor = 0.9205
/com, predicted Fbuckling=-400*0.5-0.9205*500=-660.25 
/com,
/com,********************************************************************
*stat,loadfactor3

finish

Example 9.7: Linear Perturbation (Prestressed) Harmonic Analysis

/prep7                      ! Build the model
et,1,188
 
sectype,1,beam,rect         ! Define beam section
secdata,0.2,0.4
mp,ex,1,2.0e11              ! Define material
mp,dens,1,7800
mp,nuxy,1,0.3
k,1,0,0,0                   ! Create model and mesh it
k,2,4,0,0
l,1,2
lesize,1,,,4
lmesh,all
allsel,all

nsel,s,loc,x,0
d,all,all,0                 ! Fix end of beam
nsel,all
finish

/solu 
antype,static
nsubs,10,10,10
time,1.0
nlgeom,on
nsel,s,loc,x,4
f,all,fx,1e5
f,all,fy,-1e6
nsel,all
rescontrol,define,all,1     ! Needed to generate restart file
cnvtol,f,,1e-3              ! Tighter tolerance than default for better accuracy
cnvtol,m,,1e-4
solve
finish                      ! Completion of nonlinear base analysis


! !  CASE 1

! !  Linear perturbation modal analysis starts here

/solu                                  ! First phase of linear perturbation
antype,static,restart,1,5,perturb      ! Restart in the middle
perturb,modal,,,allkeep
solve,elform

nsel,s,loc,x,4              ! Second phase of linear perturbation
ddele,all,ux
nsel,all
modopt,lanb,24              ! Compute all the modes possible
mxpand,24,,,yes
solve
finish

! ! Linear perturbation ends here

! ! MSUP harmonic analysis starts here, uses modes from linear perturbation
! ! MSUP is a downstream analysis

/solu
antype,harmonic
hropt,msup,24
outres,all,all
harfrq,23.5,24.5
nsubs,10,10,10
kbc,1
nsel,s,loc,x,4
f,all,fy,-1e7,2000
nsel,all
solve
finish

! !  Expansion pass

/solu
expass,on
outres,all,all
numexp,all,,,yes
solve
finish

! ! End of linear perturbation based MSUP harmonic

/post26
n1=node(4,0,0)
nsol,2,n1,u,y
rforce,3,1,f,y,fy1
prcplx,1

/com,*******************************************************************
/com,  Case 1 : Perturbed MSUP harmonic analysis (extracting all the 
/com,            modes for best accuracy)
/com,*******************************************************************
prvar,2,3
finish
/clear,nostart


! !  CASE 2

! !  Linear perturbation full harmonic analysis starts here

/solu                                    ! First phase of linear perturbation
antype,static,restart,1,5,perturb        ! Restart in the middle
perturb,harmonic,,,allkeep
solve,elform

nsel,s,loc,x,4                           ! Second phase of linear perturbation
ddele,all,ux
nsel,all
hropt,full
harfrq,23.5,24.5
nsubs,10,10,10
kbc,1
nsel,s,loc,x,4
f,all,fy,-1e7,2000
nsel,all
solve
finish

/post26
file,,rstp
n1=node(4,0,0)
nsol,2,n1,u,y
rforce,3,1,f,y,fy1
prcplx,1

/com,*******************************************************************
/com,  Case 2: Perturbed FULL harmonic analysis, repeating
/com,          the same restart point from base analysis
/com,*******************************************************************
prvar,2,3
finish

Example 9.8: Linear Perturbation Substructure Generation Pass Followed by Use and Expansion Passes

/title, An example of LP substructure (CMS) generation, use, and expansion pass

/prep7
et,1,185

mp,ex,1,2.0e11            ! Define material
mp,dens,1,7800
mp,nuxy,1,0.3

block,0,4,0,2,0,0.50      ! Create model and mesh it
esize,0.5
vmesh,1
allsel,all

nsel,s,loc,x,4
cm,interface,node
nsel,all

nsel,s,loc,x,0
d,all,all,0
nsel,all
finish


/filname,gen1
/solu
antype,static
nlgeom,on
rescontrol,define,all,1
time,1.0
kbc,0
nsubs,10,100,10
autots,on
nsel,s,loc,x,2
nsel,r,loc,y,2
d,all,uy,-0.1             ! Displacement load
allsel,all
solve
save
finish

/com, LP procedure to create the prestressed CMS

/solu
antype,static,restart,,,perturb
perturb,substructure,,,
solve,elform
seopt,gen1,2
cmsopt,fix,10
cmsel,s,interface,node
m,all,all
allsel,all
solve
save
finish
/clear,nostart

/com, use this prestressed CMS element

/filnam,use
/prep7
et,1,50
se,gen1
finish

/solu
antype,modal
modopt,lanb,10
mxpand,10,,,yes
outres,all,all
solve
save
finish
/clear,nostart

/com,expand this CMS to get result from original structure

/filnam,gen1
resume,,db

/solu
expass,on
seexp,gen1,use
outres,all,all
numexp,all,,,yes
solve
finish

/post1
file,gen1,rst
set,list
set,1,1
prnsol,u,sum       ! Print displacements
prrfor             ! Print total reaction forces
/show,jpeg
plnsol,u,sum       ! Plot displacements
finish


Example 9.9: Linear Perturbation Substructure with Two Generation Passes, Use Pass, and Two Expansion Passes

/title, An example of Linear Perturbation Substructure (CMS) - 2-generation passes, use pass, 2-expansion passes

/filnam,model
/prep7
et,1,182

mp,ex,1,2.0e11
mp,dens,1,7800
mp,nuxy,1,0.3
mp,betd,1,1.0e-5

rect,0,4,0,2
esize,0.25
amesh,1
allsel,all

nsel,s,loc,x,0
cm,comp1,node
nsel,all

nsel,s,loc,x,2
cm,comp2,node
nsel,all

nsel,s,loc,x,4
cm,comp3,node
nsel,all

nsel,s,loc,x,0,2
cm,nodese1,node
nsel,all

nsel,s,loc,x,2,4
cm,nodese2,node
nsel,all

nsel,s,loc,x,4
nsel,r,loc,y,2
cm,load,node
nsel,all

nsel,s,loc,x,0
d,all,all,0
nsel,all
finish

/com,       Nonlinear static solution

/solu
antype,static
nlgeom,on
rescontrol,define,all,1
time,1.0
kbc,0
nsubs,10,10,10
nsel,s,loc,x,4
nsel,r,loc,y,2
d,all,uy,-0.001
allsel,all
solve
save
finish

/com,       LP procedure to create the prestressed CMS - Generation pass 1

/solu
antype,static,restart,1,5,perturb        ! Restart from the middle
perturb,substructure,,,nokeep            ! Perform perturbed substructure analysis
solve,elform

seopt,gen1,3                             ! Generate superelement gen1, K, M and C
cmsopt,free,10                           ! Free interface method
cmsel,s,comp1,node                       ! Define master nodes
cmsel,a,comp2,node
m,all,all
allsel,all
cmsel,s,nodese1,node
esln,s,1
nsle,s
solve                                    ! Solve a portion of the model
save,gen1,db                             ! Save .db as gen1.db
allsel,all
finish

/com,       Manually rename the files to generate the necessary files for expansion pass
!This can be replaced by issuing LPnameKey = ON on SEOPT command. See second generation pass.

/copy,model,esav,,gen1,esav
/copy,model,emat,,gen1,emat
/copy,model,seld,,gen1,seld
/copy,model,cms,,gen1,cms
/copy,model,full,,gen1,full
/copy,model,LN22,,gen1,LN22

/clear,nostart

/com,       LP procedure to create the prestressed CMS - Generation pass 2

/filname,model
resume,,db
finish

/solu
antype,static,restart,1,5,perturb
perturb,substructure,,,nokeep
solve,elform

seopt,gen2,3,2,,,,,on                  ! LPnameKey = ON to avoid copying manually
                                       ! esav, emat, seld, cms, full, LN22 files
                                       ! Jobname in expansion pass must be 'gen2'
                                       
cmsopt,free,10                         ! Free interface method
cmsel,s,comp2,node                     ! Define master nodes
cmsel,a,comp3,node
m,all,all
allsel,all
cmsel,s,nodese2,node
esln,s,1
nsle,s
solve                                   ! Solve a portion of the model
save,gen2,db
allsel,all
finish

/clear,nostart

/com,       Use this prestressed CMS element

/filnam,use
/prep7
et,1,50
se,gen1
se,gen2

nsel,s,loc,x,0
d,all,all,0
allsel,all
save
finish

/solu
antype,modal
modopt,qrdamp,10,,,off
mxpand,10,,,yes

solve
save
finish

/clear,nostart

/com,       Expand this CMS to get result from original structure - Gen1

/filnam,gen1
resume,,db
finish

/solu
expass,on
seexp,gen1,use
outres,all,all
numexp,all,,,yes
solve
save
finish
/clear,nostart

/com,       Expand this CMS to get result from original structure - Gen2

/filnam,gen2
resume,,db
finish

/solu
expass,on
seexp,gen2,use
outres,all,all
numexp,all,,,yes
solve
save
finish
/clear,nostart

/com,       For combination, results of the different portions should be extracted
/com,       from the entire model
 
/com,       Write the results of Gen1 nodes in final_gen1.rst

/post1
resume,gen1,db
file,gen1,rst
cmsel,s,nodese1,node
esln,s,1
*do,i,1,10
    append,1,i
    reswrite,final_gen1
*enddo
finish

/com,       Write the results of Gen2 nodes in final_gen2.rst

/clear,nostart
/post1
resume,gen2,db
file,gen2,rst
cmsel,s,nodese2,node
esln,s,1
*do,i,1,10
    append,1,i
    reswrite,final_gen2
*enddo
finish

/com,       Combine the results of Gen1 and Gen2

/clear,nostart
/filnam,final_gen1_gen2
/post1
cmsfile,add,final_gen1,rst,off
cmsfile,add,final_gen2,rst,off
set,list
set,first
prnsol,u,sum                    ! Print displacements
/show,jpeg
plnsol,u,sum                    ! Plot displacements
fini
/exit,nosave