!   TITLE:  fan_mesh_algorithm.mac (MESH)
!
!
!   This sub-macro takes a selected set of rotated volumes, all of which

!
!
!                     (1)    (2)    (3)     (4)      (5)     (6)   (7)
! FAN_MESH_ALGORITHM, opt, kp#, mstyp, mshdens, elmszovr, etpa, etpv,
!
!                  elmnl, elmxl, mtrl, rl, ecs, sprat, radrot, varcang
!                   (8)    (9)   (10) (11) (12) (13)    (14)    (15)
!
!
!                    (1)    (2)    (3)     (4)      (5)     (6)   (7)
! FAN_MESH_ALGORITHM, opt, ln#, mstyp, mshdens, elmszovr, etpa, etpv,
!
!                  elmnl, elmxl, mtrl, rl, ecs, sprat, radrot, varcang
!                   (8)    (9)   (10) (11) (12) (13)    (14)    (15)
!
!
*get,prkey_,active,0,prkey
/nopr

!
! option 1 = select by point
!! option 2 = select by line
!
opt_=arg1
!mshdens=arg4
nelm_=arg4
!
!

*go,:skip3      !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

*if,mshdens,eq,1,then
    nelm_1=1
    nelm_2=1
    mshfctr=2.75            ! meshing factor
*elseif,mshdens,eq,0,then
    nelm_1=2
    nelm_2=3
    mshfctr=2.5
*else
    nelm_1=mshdens
    nelm_2=mshdens
    mshfctr=3.0
*endif
!
*do,jj_,1,ecount,1
    !
    *get,lleng,line,lset1_(jj_,1),leng
    !
    *if,lleng,le,2.0*elmnl,then
        nelm=nelm_1
    *elseif,lleng,le,mshfctr*elmnl,then
        nelm=nelm_2
    *else
        nelm=nint(lleng/elmnl)
    *endif
*enddo
!

:skip3          !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

cm,msha_,area
!
lsla,s
cm,lset1_,line
!
*if,opt_,eq,1,then
    !
    ckp_=arg2
    sprat_=arg3
    !
    ksel,s,kp,,ckp_
    lslk,r
    !
    get_max_entity
    l1_=lm
    !
    get_min_entity
    l2_=l_min
    !
    *get,k11_,line,l1_,kp,1          ! retrieve 1st and 2nd kp of line 1
    *get,k12_,line,l1_,kp,2
    !
    *get,k21_,line,l2_,kp,1          ! retrieve 1st and 2nd kp of line 2
    *get,k22_,line,l2_,kp,2
    !
    *if,k11_,eq,k21_,then
        mkp_=k11_
        lesize,l1_,,,nelm_,sprat_,
        lesize,l2_,,,nelm_,sprat_,
    *elseif,k11_,eq,k22_,then
        mkp_=k11_
        lesize,l1_,,,nelm_,sprat_,
        lesize,l2_,,,nelm_,1/sprat_,
    *elseif,k12_,eq,k21_,then
        mkp_=k12_
        lesize,l1_,,,nelm_,1/sprat_,
        lesize,l2_,,,nelm_,sprat_,
    *elseif,k12_,eq,k22_,then
        mkp_=k12_
        lesize,l1_,,,nelm_,1/sprat_,
        lesize,l2_,,,nelm_,1/sprat_,
    *endif
    !


    *go,:skip2      !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    lsel,s,line,,lset1_
    !
    lsel,u,line,,l1_
    lsel,u,line,,l2_
    !



    entity_array,'l',lset1_,'array
    !
    *do,jj_,1,ecount,1
        !
        *get,lleng,line,lset1_(jj_,1),leng
        !
        *if,lleng,le,2.0*elmnl,then
            nelm=nelm_1
        *elseif,lleng,le,mshfctr*elmnl,then
            nelm=nelm_2
        *else
            nelm=nint(lleng/elmnl)
        *endif
        !
        lesize,lset1_(jj_,1),,,nelm,1,
    *enddo
    !
    *set,lset1_(1),



:skip2      !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


*endif
!




*go,:skip       !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^



min_e_dim_array,'l',msha_ln_,'array'
!




:skip       !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

*if,prkey_,eq,1,then
    /go
*endif