anchor.diff:  !C set boundary force
   !C
     fstrSOLID%QFORCE = 0.0d0
  -  allocate ( id_spc(hecMESH%n_node) )
  +  allocate ( id_spc(3*hecMESH%n_node) )
     id_spc = 0
     do i = 1, fstrSOLID%BOUNDARY_ngrp_tot
       ig = fstrSOLID%BOUNDARY_ngrp_ID(i)
  +    ityp = fstrSOLID%BOUNDARY_ngrp_type(i)
  +    idofS = ityp/10
  +    idofE = ityp - idofS*10
       iS = hecMESH%node_group%grp_index(ig-1) + 1
       iE = hecMESH%node_group%grp_index(ig  )
       do j = iS, iE
  -      id_spc( hecMESH%node_group%grp_item(j) ) = 1
  +      do idof = idofS, idofE
  +        id_spc( 3*(hecMESH%node_group%grp_item(j)-1) + idof ) = 1
  +      enddo
       enddo
     enddo
   
  
positive.code:           END IF
            force(1:nn*3) = MATMUL( stiff(1:nn*3,1:nn*3), edisp(1:nn*3) )
            DO j = 1, nn
              IF( id_spc( nodLOCAL(j) ) == 1 ) THEN
  !$omp atomic
                fstrSOLID%QFORCE( 3*nodLOCAL(j)-2 ) = fstrSOLID%QFORCE( 3*nodLOCAL(j)-2 )+force(3*j-2)
  !$omp atomic
                fstrSOLID%QFORCE( 3*nodLOCAL(j)-1 ) = fstrSOLID%QFORCE( 3*nodLOCAL(j)-1 )+force(3*j-1)
  !$omp atomic
                fstrSOLID%QFORCE( 3*nodLOCAL(j)   ) = fstrSOLID%QFORCE( 3*nodLOCAL(j)   )+force(3*j  )
              END IF
            END DO
          ENDIF
          CYCLE
  
negative.code:   type (fstr_solid)  :: fstrSOLID
  !C** local variables
    integer(kind=kint) :: itype, icel, iS, iE, jS, i, j, ic_type, ig, nn, isect, ihead, iflag, mixflag
    integer(kind=kint) :: nodLOCAL(20), flag_dof, ityp, idofS, idofE, idof, in
    real(kind=kreal)   :: xx(20), yy(20), zz(20), tt(20), tt0(20), edisp(60), force(60)
    real(kind=kreal)   :: ecoord(3, 20), stiff(60, 60)
    real(kind=kreal)   :: thick, coords(3, 3)
  