
/PREP7

!NSCALE, ,all,,,1e-3,1e-3,1e-3
ALLSEL
EPLOT

!ESEL,u,MAT,,1 !bone
!ESEL,u,MAT,,16 !dentine
!ESEL,u,MAT,,14 !enamal
!ESEL,u,MAT,,2 !PDL incisor & molar
!ESEL,u,MAT,,12 !pulp
!ESEL,u,MAT,,18  !molar


!!!!!!!!!!!!!!!!!! material properties

!!!!!!!!!!!!!!!  molar
MP,EX,18,30000         
MP,PRXY,18,0.3

!!!!!!!!!!!!!!!  pulp
MP,EX,12,2.03     
MP,PRXY,12,0.45

!!!!!!!!!!!!!!!  dentine
MP,EX,16,18300     
MP,PRXY,16,0.31

!!!!!!!!!!!!!!!  enamal
MP,EX,14,82500 
MP,PRXY,14,0.33

!!!!!!!!!!!!!!!  bone
MP,EX,1,20000    
MP,PRXY,1,0.3

!!!!!!!!!!!!!! PDL_incisor & molar
MP,EX,2,50
MP,PRXY,2,0.4


ALLSEL
ESEL,s,,,all
NSLE
  NUMMRG, node 
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


!!!!!!!!!!!!!!!!!! defining local CS for new joint
CSYS

WPCSYS
WPROTA,-10,,
CSWPLA,100,0


ET,100,MPC184  !!! Define MPC general joint element without creating corresponding elements
KEYOPT,100,1,16
KEYOPT,100,4,0  !General joint with both displacement and rotational degrees of freedom activated


!!! Constraints

NSEL,s,node,,248585
NSEL,a,node,,248978
CM,Node_Selected,NODE

CSYS,100 !!!0 
NROTAT, Node_Selected

D,Node_Selected,UX,0 

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
CSYS,100  !!!0

ALLSEL
!!!! right TMJ nodes
NSEL,s,node,,1163045
NSEL,a,node,,1163056
NSEL,a,node,,1163080
CM,Node_Selected_r,NODE

!!!! left TMJ nodes
NSEL,s,node,,1163586
NSEL,a,node,,1163594
NSEL,a,node,,1163600

CM,Node_Selected_l,NODE

!!!!!!!!!!!!!!!!!!!!!!!
ALLSEL
NROTAT, Node_Selected_l
NROTAT, Node_Selected_r

D,Node_Selected_r,UX,0 
D,Node_Selected_r,UZ,0 

!D,Node_Selected_r,UY,0 

D,Node_Selected_l,UX,0 
D,Node_Selected_l,UY,0 
D,Node_Selected_l,UZ,0 

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



!!!!!!!!!!!!!!!!!!!!!!!!!! Muscle forces  !!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ALLSEL

CSYS
!CSYS,100
WPCSYS

to_skip=1       ! enter number of lines to skip
/INQUIRE,numlines,LINES,RatMuscleForcesCorrected,csv !
to_read=numlines-to_skip


*DEL,mytable,,NOPR
*DIM,mytable,TABLE,to_read,9    

*TREAD,mytable,RatMuscleForcesCorrected,csv,,to_skip

*DEL,Rat_MF,,NOPR
*DIM,Rat_MF,ARRAY,to_read,10    
!
*vfun,Rat_MF(1,1),copy,mytable(0,0)     ! Shift down and right
*vfun,Rat_MF(1,2),copy,mytable(0,1)     ! Shift down and right
*vfun,Rat_MF(1,3),copy,mytable(0,2)     ! Shift down and right
*vfun,Rat_MF(1,4),copy,mytable(0,3)     ! Shift down and right
*vfun,Rat_MF(1,5),copy,mytable(0,4)     ! Shift down and right
*vfun,Rat_MF(1,6),copy,mytable(0,5)     ! Shift down and right
*vfun,Rat_MF(1,7),copy,mytable(0,6)     ! Shift down and right
*vfun,Rat_MF(1,8),copy,mytable(0,7)     ! Shift down and right
*vfun,Rat_MF(1,9),copy,mytable(0,8)     ! Shift down and right
*vfun,Rat_MF(1,10),copy,mytable(0,9)    ! Shift down and right


!!!!!!!!!!!!!!!!!! read node number and muscle force vector components !!!!!!!!!!
to_skip=1       ! enter number of lines to skip
/INQUIRE,numlines,LINES,Rat_MusF,csv !
to_read=numlines-to_skip


*DEL,mytable1,,NOPR
*DIM,mytable1,TABLE,to_read,3

*TREAD,mytable1,Rat_MusF,csv,,to_skip

*DEL,NodeNumFV,,NOPR
*DIM,NodeNumFV,ARRAY,to_read,4
!
*vfun,NodeNumFV(1,1),copy,mytable1(0,0)    ! Shift down and right
*vfun,NodeNumFV(1,2),copy,mytable1(0,1)    ! Shift down and right
*vfun,NodeNumFV(1,3),copy,mytable1(0,2)    ! Shift down and right
*vfun,NodeNumFV(1,4),copy,mytable1(0,3)    ! Shift down and right

num_row=to_read
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! applyng muscle forces


!*DO,kk,2,10

jj=1
NumOFNode=8   !the number of node in each muscle group (medial or lateral side)
kk=10          !the column number corresponding muscle loading scenario 




*DO,ii,1,num_row


VFX=NodeNumFV(ii,2)/sqrt(NodeNumFV(ii,2)**2+NodeNumFV(ii,3)**2+NodeNumFV(ii,4)**2)
VFY=NodeNumFV(ii,3)/sqrt(NodeNumFV(ii,2)**2+NodeNumFV(ii,3)**2+NodeNumFV(ii,4)**2)
VFZ=NodeNumFV(ii,4)/sqrt(NodeNumFV(ii,2)**2+NodeNumFV(ii,3)**2+NodeNumFV(ii,4)**2)

F,NodeNumFV(ii,1),FX,VFX*Rat_MF(jj,kk)/NumOFNode
F,NodeNumFV(ii,1),FY,VFY*Rat_MF(jj,kk)/NumOFNode
F,NodeNumFV(ii,1),FZ,VFZ*Rat_MF(jj,kk)/NumOFNode

*IF,NodeNumFV(ii,1),EQ,1123193,THEN
test_nodenum1=NodeNumFV(ii,1)
test_force1=Rat_MF(jj,kk)*sqrt(VFX**2+VFY**2+VFZ**2)

jj=jj+2
NumOFNode=30


*ELSEIF,NodeNumFV(ii,1),EQ,1128367
test_nodenum2=NodeNumFV(ii,1)
test_force2=Rat_MF(jj,kk)*sqrt(VFX**2+VFY**2+VFZ**2)

jj=jj+2
NumOFNode=23

*ELSEIF,NodeNumFV(ii,1),EQ,1155237
test_nodenum3=NodeNumFV(ii,1)
test_force3=Rat_MF(jj,kk)*sqrt(VFX**2+VFY**2+VFZ**2)

NumOFNode=24

*ELSEIF,NodeNumFV(ii,1),EQ,1154667
test_nodenum4=NodeNumFV(ii,1)
test_force4=Rat_MF(jj,kk)*sqrt(VFX**2+VFY**2+VFZ**2)

jj=jj+2
NumOFNode=19

*ELSEIF,NodeNumFV(ii,1),EQ,1152215
test_nodenum5=NodeNumFV(ii,1)
test_force5=Rat_MF(jj,kk)*sqrt(VFX**2+VFY**2+VFZ**2)

NumOFNode=24

*ELSEIF,NodeNumFV(ii,1),EQ,1152839
test_nodenum6=NodeNumFV(ii,1)
test_force6=Rat_MF(jj,kk)*sqrt(VFX**2+VFY**2+VFZ**2)

jj=jj+2
NumOFNode=14

*ELSEIF,NodeNumFV(ii,1),EQ,1209642
test_nodenum7=NodeNumFV(ii,1)
test_force7=Rat_MF(jj,kk)*sqrt(VFX**2+VFY**2+VFZ**2)

NumOFNode=15

*ELSEIF,NodeNumFV(ii,1),EQ,1210573
test_nodenum8=NodeNumFV(ii,1)
test_force8=Rat_MF(jj,kk)*sqrt(VFX**2+VFY**2+VFZ**2)

jj=jj+2
NumOFNode=14

*ELSEIF,NodeNumFV(ii,1),EQ,1156116
test_nodenum9=NodeNumFV(ii,1)
test_force9=Rat_MF(jj,kk)*sqrt(VFX**2+VFY**2+VFZ**2)

jj=jj+2
NumOFNode=12

*ELSEIF,NodeNumFV(ii,1),EQ,1155484
test_nodenum10=NodeNumFV(ii,1)
test_force10=Rat_MF(jj,kk)*sqrt(VFX**2+VFY**2+VFZ**2)

jj=jj+2
NumOFNode=32

*ELSEIF,NodeNumFV(ii,1),EQ,1189210
test_nodenum11=NodeNumFV(ii,1)
test_force11=Rat_MF(jj,kk)*sqrt(VFX**2+VFY**2+VFZ**2)

NumOFNode=34

*ELSEIF,NodeNumFV(ii,1),EQ,1188675
test_nodenum12=NodeNumFV(ii,1)
test_force12=Rat_MF(jj,kk)*sqrt(VFX**2+VFY**2+VFZ**2)

jj=jj+2
NumOFNode=20

*ELSEIF,NodeNumFV(ii,1),EQ,1117913
test_nodenum13=NodeNumFV(ii,1)
test_force13=Rat_MF(jj,kk)*sqrt(VFX**2+VFY**2+VFZ**2)

NumOFNode=23


*ELSE


*ENDIF


*ENDDO

!/NERR,,,-1 !switch off error checking

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Solve !!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ALLSEL
CSYS
WPCSYS

/SOLU
ANTYPE,STATIC

SOLVE

ALLSEL

/POST1
SET,1,LAST
PLNSOL, S, EQV
/CONTOUR,,9,0,7/9 !30/9

/plopts,LEG1,0
/plopts,LEG2,0
/plopts,Date,0
/plopts,TITLE,0

/plopts,FRAMES,off

/triad,off

ALLSEL
CSYS
WPCSYS



!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

! delete all forces on nodes
!/PREP7
!FDELE,all,all 


