FEDEM Solver  R8.0
Source code of the dynamics solver
Functions/Subroutines
curvetypemodule Module Reference

Module with subroutines for contact surface point calculations. More...

Functions/Subroutines

subroutine getposoncurve (jointId, interpolationOrder, curvePts, slideVar, loopLength, isExtended, isLooping, PosOnCurveG, tanVec, coeff, rotGrad, ierr)
 Computes position variables along a contact curve. More...
 
subroutine getposoncircsection (Pos, DefPrev, CP1, CP2, thickness, width, radius, isInDomain, PosOnCurveG, Xsi, Def)
 Checks if a given point Pos is on a circular curve segment. More...
 
subroutine getposcornersection (Pos, DefPrev, CP1, thickness, width, radius, isInDomain, PosOnCurveG, Def)
 Checks if Pos is in a corner section of a curve. More...
 
subroutine rotateaboutz (PosMat, theta)
 Transforms the given position matrix by rotating it the given angle theta about its local Z-axis. More...
 
subroutine, private adjusttheta (oldTheta, newTheta)
 Adjust an angular quantity such that it is within the range [-2π,2π]. More...
 
subroutine, private cubic3d (PNod, S, PPt, tanVec, ShapeFunc, dirVec)
 Finds the position of a point on a cubic curve in space. More...
 

Detailed Description

Module with subroutines for contact surface point calculations.

Function/Subroutine Documentation

◆ adjusttheta()

subroutine, private curvetypemodule::adjusttheta ( real(dp), intent(in)  oldTheta,
real(dp), intent(inout)  newTheta 
)
private

Adjust an angular quantity such that it is within the range [-2π,2π].

Author
Knut Morten Okstad
Date
Oct 2005

◆ cubic3d()

subroutine, private curvetypemodule::cubic3d ( real(dp), dimension(:,:), intent(in)  PNod,
real(dp), intent(inout)  S,
real(dp), dimension(3), intent(inout)  PPt,
real(dp), dimension(3), intent(out)  tanVec,
real(dp), dimension(:), intent(out)  ShapeFunc,
real(dp), dimension(3), intent(in), optional  dirVec 
)
private

Finds the position of a point on a cubic curve in space.

Author
Knut Morten Okstad
Date
4 Nov 2016

◆ getposcornersection()

subroutine curvetypemodule::getposcornersection ( real(dp), dimension(:,:), intent(in)  Pos,
real(dp), dimension(3), intent(in)  DefPrev,
type(curvepointtype), intent(in)  CP1,
real(dp), intent(in)  thickness,
real(dp), intent(in)  width,
real(dp), intent(in)  radius,
logical, intent(out)  isInDomain,
real(dp), dimension(:,:), intent(out)  PosOnCurveG,
real(dp), dimension(:), intent(out)  Def 
)

Checks if Pos is in a corner section of a curve.

Compute position data if the point is in a corner.

Author
Bjorn Haugen
Date
2001

◆ getposoncircsection()

subroutine curvetypemodule::getposoncircsection ( real(dp), dimension(:,:), intent(in)  Pos,
real(dp), dimension(3), intent(in)  DefPrev,
type(curvepointtype), intent(inout)  CP1,
type(curvepointtype), intent(inout)  CP2,
real(dp), intent(in)  thickness,
real(dp), intent(in)  width,
real(dp), intent(in)  radius,
logical, intent(out)  isInDomain,
real(dp), dimension(:,:), intent(out)  PosOnCurveG,
real(dp), intent(out)  Xsi,
real(dp), dimension(:), intent(out)  Def 
)

Checks if a given point Pos is on a circular curve segment.

The curve segment is defined from two points CP1 and CP2. If the point is found to be on the segment, compute the local position and orientation (Xsi and Def) of the point w.r.t. to the curve segment. The curve tangent vectors at the curve points are also updated based on current triad configuration (for use in the subsequent corner test).

Author
Bjorn Haugen
Date
2001

◆ getposoncurve()

subroutine curvetypemodule::getposoncurve ( character(len=*), intent(in)  jointId,
integer, intent(in)  interpolationOrder,
type(curvepointtype), dimension(:), intent(in)  curvePts,
real(dp), intent(in)  slideVar,
real(dp), intent(in)  loopLength,
logical, intent(in)  isExtended,
logical, intent(in)  isLooping,
real(dp), dimension(3,4), intent(out)  PosOnCurveG,
real(dp), dimension(3), intent(out)  tanVec,
real(dp), dimension(:), intent(out)  coeff,
real(dp), dimension(3), intent(out), optional  rotGrad,
integer, intent(out)  ierr 
)

Computes position variables along a contact curve.

Author
Knut Morten Okstad
Date
4 Nov 2016

◆ rotateaboutz()

subroutine curvetypemodule::rotateaboutz ( real(dp), dimension(:,:), intent(inout)  PosMat,
real(dp), intent(in)  theta 
)

Transforms the given position matrix by rotating it the given angle theta about its local Z-axis.

Author
Knut Morten Okstad
Date
Sep 2005