分段函数编程
#pragma once#include <stdio.h>
#include <math.h>
#include "slv_c_utils.h"
double A;
adams_c_Cnfsub Cnfsub;
void Cnfsub(const struct sAdamsContactFriction* cnf, double time, const double* loci, const double* ni,
const double* locj,const double* nj, double gap, double gapdot,double gapdotdot,
double area, int dflag, int iflag, double* force)
{
if(iflag) ;
else
{
double K = *(cnf->PAR+0);
double E = *(cnf->PAR+1);
double C = *(cnf->PAR+2);
double v = *(cnf->PAR+3);
if(gap<=0&&gapdot<=0)
{
force[0]=max(0,K*pow(-gap,E));
if(gapdot==0)
{
A=gap;
}
}
if(gap<=0&&gapdot>0)
{
force[0]=max(0,pow(C,-2*E)*K*pow(-gap+(1-pow(C,2))*A,E));
}
if(gap>0)
{
force[0]=0;
}
}
}
这是一个过程,也就是说会先满足第一个if语句中的条件(gapdot>=0然后<0)我要在gapdot>0时使用gapdot==0时的结果,我程序中是把gapdot=0时的结果赋值给变量A,然后调用,但是好像不行,这是怎么回事,有大神吗?