AddImpulse does not work all the time

helle everyone, i work with UE5.the project is simulate the car physics,gravity and aero force.it works nice when just gravity, when i add the aero force,it also works nice ,but some time the car will stop .when i change the position of rotation ,or something else it will work again! i do not know why. the aero force is a normal force,not NAN in debugmode.

the code is like this.

FVector UFCarComponent::CalcAeroForce(float airDensity, float deltaTime)
{
//把车的移动速度拆分成相对坐标系各方向的速度,再根据各方向的风阻系数求 最终的风阻系数
//力学公式 风阻系数=正面风阻力× 2÷(空气密度x车头正面投影面积x车速平方),得到 正面风阻力 = 风阻系数 *(空气密度x车头正面投影面积x车速平方)/2
//注意unreal单位是厘米,需要换算成米
FVector force = FVector::Zero();
FVector speedUp = vehicleBody->GetPhysicsLinearVelocity().ProjectOnTo(vehicleBody->GetUpVector()) * 0.01f;
FVector speedRight = vehicleBody->GetPhysicsLinearVelocity().ProjectOnTo(vehicleBody->GetRightVector()) * 0.01f;
FVector speedForward = vehicleBody->GetPhysicsLinearVelocity().ProjectOnTo(vehicleBody->GetForwardVector()) * 0.01f;
//计算各方向面积
float areaMeasureUp = FMathf::Abs(carProperty->carBody->size.X * carProperty->carBody->size.Y) * 0.0001f;
float areaMeasureRight = FMathf::Abs(carProperty->carBody->size.X * carProperty->carBody->size.Z) * 0.0001f;
float areaMeasureForward = FMathf::Abs(carProperty->carBody->size.Y * carProperty->carBody->size.Z) * 0.0001f;
//计算各方向所受的风阻力
float forwardForeceValue = ((speedForward.GetSafeNormal() == vehicleBody->GetForwardVector()) ? carProperty->carAero->forwardResistenceCoef : carProperty->carAero->reverseResistenceCoef) * airDensity * areaMeasureForward * speedForward.Length() * speedForward.Length() / 2;
float rightForeceValue = ((speedRight.GetSafeNormal() == vehicleBody->GetRightVector()) ? carProperty->carAero->rightResistenceCoef : carProperty->carAero->leftResistenceCoef) * airDensity * areaMeasureRight * speedRight.Length() * speedRight.Length() / 2;
float upForeceValue = ((speedUp.GetSafeNormal() == vehicleBody->GetUpVector()) ? carProperty->carAero->upResistenceCoef : carProperty->carAero->downResistenceCoef) * airDensity * areaMeasureUp * speedUp.Length() * speedUp.Length() / 2;
//计算合力,最后扣除车辆外壳中的缝隙,只计算80%
force = (-speedForward.GetSafeNormal() * forwardForeceValue - speedRight.GetSafeNormal() * rightForeceValue - speedUp.GetSafeNormal() * upForeceValue) * 0.8f;
if (force.ContainsNaN())
force = force;
force *= 100.0f;
return force;
}

void UFCarComponent::UpdateSimulate(float deltaTime)
{
final_force = FVector::ZeroVector;
final_force += CalcGravity(global_gravity, deltaTime);
FVector aeroForce = CalcAeroForce(global_airDensity, deltaTime);
final_force += aeroForce;
}

void UFCarComponent::PostSimulation()
{
if (IsValid(vehicleBody))
{
//meshComponent->BodyInstance.AddImpulse(final_force, false);
//meshComponent->BodyInstance.AddTorqueInRadians(final_torque, false);
vehicleBody->AddImpulse(final_force,NAME_None,false);
//meshComponent->AddAngularImpulseInDegrees(final_torque);
}
}