CNFSUB
ModelingUsed to calculate normal forces for the Force_Contact element.
Use
Implements a custom normal force for contact.
<Force_Contact
     id                  = "301001"
     num_i_graphics      = "1"
     i_graphics_id       = "90000"
     num_j_graphics      = "1"
     j_graphics_id       = "90001"
     cnf_type            = "UserCNF"
     cnf_param_string    = "USER(500.,1.5,0.5,0.01)"
     cnf_fnc_name        = "CNFSUB"
     cnf_dll_name        = "NULL" 
     cff_type            = "Coulomb_On"
     mu_static           = "0.05"
     mu_dynamic          = "0.01"
     stiction_trans_vel  = "0.1"
     friction_trans_vel  = "0.5"
  />Format
- Fortran Calling Syntax
 - 
                        
SUBROUTINE CNFSUB (ID, TIME, PAR, NPAR, LOCI, NI, LOCJ, NJ, GAP, GAPDOT, GAPDOTDOT, AREA, DFLAG, IFLAG, RESULTS) - C/C++ Calling Syntax
 - 
                        
void STDCALL CNFSUB (int *id, double *time, double *par, int *npar, double *loci, double *ni, double *locj, double *nj, double *gap, double *gapdot, double *gapdotdot, int *dflag, int *iflag, double *result) - Python Calling Syntax
 - 
                        
def CNFSUB(id, time, par, npar, loci, ni, locj, nj, gap, gapdot, gapdotdot, dflag, iflag): return result - MATLAB Calling Syntax
 - 
                        
function vector = CNFSUB(id, time, par, npar, loci, ni, locj, nj, gap, gapdot, gapdotdot, dflag, iflag) 
Attributes
- AREA
 - [double precision]
 - DFLAG
 - [logical]
 - GAP
 - [double precision]
 - GAPDOT
 - [double precision]
 - GAPDOTDOT
 - [double precision]
 - ID
 - [integer]
 - IFLAG
 - [logical]
 - LOCI
 - [double precision]
 - LOCJ
 - [double precision]
 - NI
 - [double precision]
 - NJ
 - [double precision]
 - NPAR
 - [integer]
 - PAR
 - [double precision]
 - TIME
 - [double precision]
 
Output
- RESULT
 - [double precision]
 
Example
def CNFSUB(id, time, par, npar, loci, ni, locj, nj, gap, gapdot, gapdotdot, dflag, iflag):
    stiffness = par[0]
    exponent = par[1]
    damping = par[2]   
    dmax = par[3]
    spring_force = stiffness*pow(fabs(gap),exponent)
    [tmp,errflg] = py_step(gap,-dmax,damping,0.0,0.0,0)
    damping_force = -tmp*gapdot
        result =3*[0]
        result[0] = spring_force+damping_force
        if result[0]<0.0:
            result[0] = 0.0
    return result