!   TITLE:  s314a120.mac (ECLIPSE)
!
!-----------------------------------------------------------------------
!       Rev -   05/14/2002      D. Edwards
!       Rev A   05/20/2002      D. Edwards
!               Added screw & rivet holes in end bracket
!-----------------------------------------------------------------------
!
!   This is a shell model of the Eclispe housing P/N 314A120 used
!   on the Pitch Trim Actuator, P/N CU09670019.
!
!
!   CShsg0:     Cartesian housing Coordinate System
!   CShsg1:     Cylindrical housing Coordinate System
!   CShsg2:     Spherical housing Coordinate System
!
!
!************************** TABLE OF CONTENTS **************************
!
!       Model Assembly Preparation
!
!   1.  Parameter List
!   2.  Model Coordinate System
!   3.  Solid Model
!
!********************* Model Assembly Preparation **********************
!
nomsg

mod_assemb_prep     ! prepare database for assembly
!
!<<<<<<<<<<<<<<<<<<<<<<<< 1.  Parameter List >>>>>>>>>>>>>>>>>>>>>>>>>>
!
tstart

Plink=arg1

s314a120.parm

!
!<<<<<<<<<<<<<<<<<<<< 2.  Model Coordinate System >>>>>>>>>>>>>>>>>>>>>
!
mod_coord_system,acs,xc,yc,zc,rotxyc,rotyzc,rotzxc
!
!<<<<<<<<<<<<<<<<<<<<<<<<<<< 3.  Solid Model >>>>>>>>>>>>>>>>>>>>>>>>>>
!

!
!---------------- Create the bottom profile - Datum A ------------------
!
k,km+1,x1,y1,z1                      ! km + 1
k,km+2,x2,y2,z2                      ! km + 2
k,km+3,x3,y3,z3                      ! km + 3
k,km+4,x4,y4,z4                      ! km + 4
k,km+5,x5,y5,z5                      ! km + 5
k,km+6,x6,y6,z6                      ! km + 6
k,km+7,x7,y7,z7                      ! km + 7
k,km+8,x8,y8,z8                      ! km + 8
k,km+9,x9,y9,z9                      ! km + 9
k,km+10,x10,y10,z10                  ! km + 10
k,km+11,x11,y11,z11                  ! km + 11

L,km+1,km+2                          ! lm + 1
L,km+3,km+2                          ! lm + 2
L,km+4,km+1                          ! lm + 3
L,km+4,km+3                          ! lm + 4
L,km+5,km+6                          ! lm + 5
L,km+7,km+8                          ! lm + 6
L,km+9,km+10                         ! lm + 7
L,km+11,km+9                         ! lm + 8
L,km+7,km+11                         ! lm + 9
L,km+10,km+5                         ! lm + 10
L,km+8,km+6                          ! lm + 11
L,km+5,km+4                          ! lm + 12
L,km+6,km+3                          ! lm + 13

view,'iso'

lfillt,lm+8,lm+7,r1

!
!--------------- Create volumes from the base profile ------------------
!
lsel,s,loc,x,x3,0
al,all

lsel,s,loc,x,x5,x3
al,all

lsel,s,loc,x,x7,x5
al,all

voffst,am+1,h1
voffst,am+2,h2
voffst,am+3,h3

alls

vglue,all

vdele,all

asel,s,loc,x,x5
asel,r,loc,y,0,h3
adele,all

asel,s,loc,x,x3
asel,r,loc,y,0,h2
adele,all

init_entity_num
!
!------------------ Detach the cover from the housing ------------------
!
asel,s,loc,y,0
cm,a_bot,area

!AGEN, ITIME, NA1, NA2, NINC, DX, DY, DZ, KINC, NOELEM, IMOVE
agen,2,all,,,0,0,0,,,0

asel,s,area,,a_bot
adele,all,,,1

init_entity_num

*if,case,ge,3,then
    !
    !------------------ Add left end bracket plate --------------------
    !
    csys,CShsg0
    k,,x7,h3,zp1
    k,,xn1-xp1,h3,zp1
    k,,xn1-xp1,h3,zp2
    k,,x7,h3,z7

    create_lines

    ln_fillet,kp(xn1-xp1,h3,zp2),rp1
    ln_fillet,kp(xn1-xp1,h3,zp1),rp1

    create_area-lines

    asel,s,loc,y,h3
    asel,a,loc,x,x7
    aglue,all

    init_entity_num

*endif

*if,case,eq,4,then
    !
    !--------------------- Add screw and rivet holes ------------------
    !

    csys,CShsg0

    wpcsys,-1,0
    wpoffs,xn1,h3,zn1+Cwid/2
    wprota,,-90

    !CYL4, XCENTER, YCENTER, RAD1, THETA1, RAD2, THETA2

    cyl4,0,0,rp4
    asba,am-1,am+1,,delete,delete

    cyl4,0,Cwid,rp4
    asba,am+2,am+1,,delete,delete

    init_entity_num

    *if,rivet,eq,1,then
        xp2=-xp2
    *endif

    cyl4,xp2,-zp3,rp3
    cyl4,xp2,zp3,rp3
    cyl4,xp2,Cwid-zp3,rp3
    cyl4,xp2,Cwid+zp3,rp3

    asel,s,area,,am+1,am+4
    cm,aset,area
    alls,all,area

    asba,am,aset,,delete,delete

    init_entity_num

*endif

!
!-------------- Cut square in cover area for worm screw post -----------
!
csys,CShsg0

k,,xw3,0,zw2
k,,xw2,0,zw2
k,,xw2,0,zw2+zwid
k,,xw3,0,zw2+zwid

create_area

asel,s,loc,y,0
asel,r,loc,x,x5,x3

*get,a1,area,0,num,min
*get,a2,area,0,num,max
asba,a1,a2,,delete,keep

Apost=am                    ! Store area # for later meshing
Abase=am+1

init_entity_num

!
!------------ Cut circle in cover area for shaft bearing boss ----------
!
! TBD

!
!------------------ Define points for shaft & link arm -----------------
!

! Upper shaft bearing location
asel,s,loc,y,h3

*get,a1,area,0,num,min

kps=km+1

hptcreate,area,a1,kps,coord,xs1,h3,zs1

! Lower shaft bearing location
asel,s,loc,y,0
asel,r,loc,x,x7,x5

*get,a2,area,0,num,max

hptcreate,area,a2,kps+1,coord,xs1,0,zs1

! Shaft/link arm joint location
create_cs,0,CSjoint1,1,xs1,h4,zs1,0,0,Aarm+180

k,kps+2

! Link arm end location
k,kps+3,darm

init_entity_num

!
!------------------ Define points for left (nut plate) end -----------------
!

*if,case,eq,2,then
    !
    !--- Define center point for beam element to attach to at left end ---
    !
    csys,CShsg0

    lsel,s,loc,y,h3
    lsel,r,loc,x,x7
    *get,LnumC,line,0,num,max

    kpC=km+1                                ! Center hard point number

    hptcreate,line,LnumC,kpC,coord,x7,h3,zn1

    init_entity_num

*elseif,case,eq,3,then

    !
    !--- Screw hole centers at left end ----------
    !
    csys,CShsg0

    asel,s,loc,y,h3
    asel,r,loc,x,2*x7,x7
    *get,a1,area,0,num,max

    kpN=km+1            ! KP at Nut plate

    hptcreate,area,a1,kpN,coord,xn1,h3,zn1-Cwid/2
    hptcreate,area,a1,kpN+1,coord,xn1,h3,zn1+Cwid/2

    init_entity_num

*endif

!
!---------------------- Define points for worm screw support -----------
!
csys,CShsg0

kpW=km+1

hptcreate,area,Apost,kpW,coord,xw1,0,zw1

nW=nm+1
n,nW,xw1,yw1,zw1

init_entity_num

!
!----------------- Define right end constraints ------------------------
!
csys,CShsg0

kpRE1=km+1          ! Right End KP

*if,Plink,gt,0,then
    lsel,s,loc,x,0
    lsel,r,loc,z,0
    *get,L1,line,0,num,max

    hptcreate,line,L1,kpRE1,coord,0,.65,0

    alls

    kpRE2=kp(0,0,z1)
*else
    lsel,s,loc,x,0
    lsel,r,loc,z,z1
    *get,L1,line,0,num,max

    hptcreate,line,L1,kpRE1,coord,0,.65,z1

    alls

    kpRE2=kp(0,0,0)
*endif

kpRE3=kp(0,h1,z1)

init_entity_num
!
!---------------------- Shell mesh all areas ---------------------------
!
!MSH_AREA, mstyp, mshdens, etpa, elmnl, elmxl, lszmsh, mat, real, ecs
m1=.020
m2=.125
m3=.250
m4=.350

*if,case,eq,4,then

    lsel,s,loc,x,xn1-rp4-abs(xp2),xn1+abs(xp2)+rp3
    lsel,r,loc,z,zn1-Cwid,zn1+Cwid

    lesize,all,m1

    asel,s,loc,x,2*x7,x7
    asel,r,loc,y,h3
    lsla

    msh_area,0,,1,m2,m2,-1,ala356,1

*endif

! Refined mesh in link arm, left end plate and worm gear post sections
asel,s,loc,x,2*x7,x5
asel,r,loc,y,0,h3
asel,a,area,,Apost
asel,a,area,,Abase
cm,a_end,area

*if,case,eq,4,then
    asel,u,loc,x,2*x7,x7-.01
*endif

msh_area,0,1,1,m2,m2,,ala356,1

cmsel,s,a_end
asel,inve

msh_area,0,1,1,m3,m4,,ala356,1

!
!------------ Couple Cover to Housing at Screw/Pin Locations -----------
!

nsel,s,loc,x,0
nsel,r,loc,y,0
nsel,r,loc,z,0
cp,next,all,all

nsel,s,loc,x,0
nsel,r,loc,y,0
nsel,r,loc,z,z1
cp,next,all,all

nsel,s,loc,x,x5
nsel,r,loc,y,0
nsel,r,loc,z,0
cp,next,all,all

nsel,s,loc,x,x5
nsel,r,loc,y,0
nsel,r,loc,z,z1
cp,next,all,all

nsel,s,loc,x,x7
nsel,r,loc,y,0
nsel,r,loc,z,0
cp,next,all,all

nsel,s,loc,x,x7
nsel,r,loc,y,0
nsel,r,loc,z,z7
cp,next,all,all

! Couple at pin locations
nsel,s,loc,x,x3
nsel,r,loc,y,0
nsel,r,loc,z,0
cp,next,ux,all
cp,next,uz,all
cp,next,rotx,all
cp,next,rotz,all

nsel,s,loc,x,x3
nsel,r,loc,y,0
nsel,r,loc,z,z1
cp,next,ux,all
cp,next,uz,all
cp,next,rotx,all
cp,next,rotz,all

init_entity_num

!
!----------- Couple beam end to area of post shell element -------------
!

asel,s,area,,Apost
nsla,s,1
cp,next,all,all

init_entity_num

!
!------------------- Define beam elements ------------------------------
!
csys,CSjoint1

! Create shaft elements
type,2
real,2
mat,c17_4
e,node(kx(kps),ky(kps),kz(kps)),node(kx(kps+1),ky(kps+1),kz(kps+1))

nkpt,,kps+2     ! Node at joint
nkpt,,kps+3     ! Node at arm end

e,node(kx(kps),ky(kps),kz(kps)),node(kx(kps+2),ky(kps+2),kz(kps+2))

! Create link arm beam element --- DO NOT USE - GIVES UZ=595.63 !!!
!real,3
!nend=node(kx(kps+3),ky(kps+3),kz(kps+3))       ! Apply force here
!e,node(kx(kps+2),ky(kps+2),kz(kps+2)),nend

*if,case,eq,2,then
    ! Beam at left end to get reactions from
    csys,CShsg0
    real,4
    init_entity_num
    n,,xn1,h3,zn1
    e,node(kx(kpC),ky(kpC),kz(kpC)),nm+1
*endif

! Create beam element for worm screw support
csys,CShsg0
real,5
e,node(kx(kpW),ky(kpW),kz(kpW)),nW

init_entity_num

!
!----------------------------- Apply forces ----------------------------
!

*if,gload,eq,0,then
    f,node(kx(kps+2),ky(kps+2),kz(kps+2)),fz,Plink
    f,nW,fx,-sign(Fw,Plink)         ! Transmitted load through worm screw
*else
    /eof
*endif



!
!--------------------- Apply boundary conditions -----------------------
!

!D, NODE, Lab, VALUE, VALUE2, NEND, NINC, Lab2, Lab3, Lab4, Lab5

!
!-------------------- Constrain the Left end -------------------------
!
*if,case,eq,1,then
    ! Fix nodes at nut plate (left) end
    csys,CShsg0

    !nsel,s,loc,x,x7
    !nsel,r,loc,y,h3

    d,node(x7,h3,0),ux,,,,,uy,uz
    d,node(x7,h3,z1),ux,,,,,uy,uz

*elseif,case,eq,2,then
    ! Fix beam at left end
    csys,CShsg0
    d,node(xn1,h3,zn1),all

*elseif,case,eq,3,then

    !
    ! Fix left end bracket plate at screw holes
    !
    csys,CShsg0

    n1=node(xn1,h3,zn1-Cwid/2)
    n2=node(xn1,h3,zn1+Cwid/2)
    nsel,s,node,,n1
    nsel,a,node,,n2

    d,all,all

*elseif,case,eq,4,then

    !
    ! Fix screw hole edges
    !
    lsel,s,loc,x,xn1-rp4,xn1+rp4
    lsel,r,loc,z,zn1-Cwid,zn1+Cwid

    nsll,s,1
    cm,nset1,node

    esln,s
    nsle,s,corner
    cmsel,r,nset1

    d,all,ux,,,,,uy,uz

*endif

alls

!
!-------------------- Constrain the right end -------------------------
!
! Fix the entire right end
!
csys,CShsg0
d,node(kx(kpRE1),ky(kpRE1),kz(kpRE1)),ux,,,,,uy,uz
d,node(kx(kpRE2),ky(kpRE2),kz(kpRE2)),ux,,,,,uy,uz
d,node(kx(kpRE3),ky(kpRE3),kz(kpRE3)),ux,,,,,uy,uz


!-------------- Add contact element boundaries ----------------
*if,contact,eq,1,then

csys,CShsg0
asel,s,loc,x,2*x7,x7-.005

nsel,s,loc,x,xn1-rp4-abs(xp2),xn1+abs(xp2)+rp3
nsel,r,loc,z,zn1-Cwid,zn1+Cwid
nsla,a,0                        ! interior nodes
cm,Ninner,node

esla
nsle,s,corner                   ! All corner nodes on plate bracket
cmsel,u,Ninner
cm,Nouter,node

ngen,2,nm+1,all,,,,-.1          ! Copy nodes down y=-.1

nsel,r,loc,y,h3-.1
cm,Nbase,node                   ! Lower set of fixed nodes

!
!------------- Create edge elements -------------------------
!
type,3
real,30

cmsel,s,Nouter
nsel,u,loc,x,x7-.1,x7           ! Unselect nodes to acccount for fillet

*get,numE,node,0,count
*get,j,node,0,num,min

cmsel,a,Nbase

skip=1
*do,i,1,numE/skip
    *if,j,ne,0,then

        jj=node(nx(j),ny(j)-.1,nz(j))
        e,j,jj
        d,jj,ux,,,,,uy,uz

        *do,k,1,skip
            j=ndnext(j)
        *enddo
    *endif
*enddo

init_entity_num

!------------- Create interior elements -------------------------

!nsla,s,0                       ! Interior nodes
!nsel,u,node,,Nfixed
!cm,Ninner,node

!*get,numE,node,0,count
!*get,j,node,0,num,min

!nsel,a,node,,Nbase
!skip=10
!*do,i,1,numE/skip
!   *if,j,ne,0,then

!       jj=node(nx(j),ny(j)-.1,nz(j))
!       e,j,jj
!       d,jj,all

!       *do,k,1,skip
!           j=ndnext(j)
!       *enddo
!   *endif
!*enddo

!:skip
*endif

alls

fini
!
!--------------------------- Solve -------------------------------------
!
/solu

*if,contact,eq,1,then
    nsubst,50
*endif

solv

fini

/post1

asel,s,area,,Apost
nsla,s,1
cm,Npost,node
alls

esel,s,type,,1
nsel,u,node,,Npost
!asel,u,loc,y,0
!esla

!/PBC, Item, --, KEY, MIN, MAX, ABS
/pbc,all,,0
/pbc,f,,1

/dscale,,100
plnsol,s,eqv,2

*if,case,eq,1,then
    !nsel,s,node,,node(x7,h3,0)
    !nsel,a,node,,node(x7,h3,z1)
    nsel,s,loc,x,2*x7,x7
    nsel,r,loc,y,h3
*elseif,case,eq,2,then
    nsel,s,node,,node(xn1,h3,zn1)
!*elseif,case,ge,3,then
    !nsel,u,loc,x,0,1
*endif

/out,s314a120,out
prrsol
!prnld,,,all
!presol,elem
/out

*uilist,s314a120,out

tstop