Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






Разработка лингвистического обеспечения

 

Для правильного расчета нагрузки на амортизаторы, необходимо определить массу автомобиля и координаты его граней, которые ограничивают длину, ширину и высоту кузова. Начало координат может быть выбрано произвольно, но удобнее всего располагать его в нижнем левом углу автомобиля. Так как масса в автомобиле распределяется неравномерно (двигатель обычно весит больше, чем задняя часть авто, а в той части где располагаются пассажиры массы меньше всего), то для получения более точных результатов машина разбивается на блоки. Например, передняя часть, включающая в себе моторный отсек, блок салона, расположенный между передней и задней осью автомобиля и третий блок отсек багажного отделения. Ничего не мешает разбить кузов на более мелкие части.

Исходные данные, вводимые в консоль:

1. Характеристика амортизаторов

- значение жесткости

-величина перемещения

- номера типов характеристик амортизаторов

2. Чтобы описать кузов автомобиля, нужно ввести параметры.

-длины, ширины и высоты блоков,

-координаты места установки амортизаторов

-массу отдельных блоков автомобиля

3. В описание ударного воздействия на объект входит:

-количество амортизаторов, на которые приходится удар,

- значение перегрузки во временных точках ударного импульса

-шаг с которым будут выводиться временные точки

-коэффициент уменьшения шага по времени

-время точек ударного импульса

-конечное время анализа воздействия

 

Вид консоли ввода начальных данных (рис. 6)

Рис. 6 Пользовательский интерфейс программы

Заключение

В конечном счете, получаем продукт, способный реалистично указать во сколько g превышает нагрузка на амортизаторы от их обычного состояния. Реалистичность обеспечивается алгоритмом, в который заложена система составленная на основе уравнений Лагранжа, качественной оценки параметров для настройки амортизаторов и точного определения габаритов автомобиля.

Список использованных источников:

1. «Основы динамики автомобиля». Демпфирование подвески. URL: http://dmilvdv.narod.ru/Translate/FVD/suspension_damping.html (дата обращения 03.05.2016).

2. Добромиров В.Н., Острецов А.В. Конструкции амортизаторов. М.:МГТУ «МАМИ», 2007. С. 30-32.


Приложение 1

Пример работы программы

В качестве реального прототипа берется автомобиль BMW 3er E90, со следующими техническими характеристиками.

Таблица 1

РАЗМЕРЫ В ММ
Длина
Ширина
Высота
 
МАССА кг
Снаряженная масса
Полная масса

Рис.7

Машина будет представлена в виде трех блоков.

 

 

Таблица 2

  Длина Ширина Высота Масса
1 блок
2 блок
3 блок

В самой программе параметры блоков задаются относительно концов предыдущего блока, поэтому промежуточные точки длины блоков 0-755-3515-4520. Координаты высоты и ширины соответствуют виду, приведенном в таблице.

Результат работы программы полученное значение перегрузки 1.6677 g, которую ощущают пассажиры.


Приложение 2

Листинг программы

Код программы, написанной на языке разработки Java в средстве разработке Eclipse Java EE IDE for Web Developers (Version: Mars Release (4.5.0))

Программы содержит один класс «console», в ней учтены возможные ошибки при неправильном вводе пользователем числовых параметров. В таком случае предоставляется возможность заново напечатать последнее число.

 

 

package yoyo;

 

import java.util.Scanner;

 

public class console {

 

 

static boolean tryParseInt(String value) {

try {

Integer.parseInt(value);

return true;

} catch (NumberFormatException e) {

return false;

}

}

 

static boolean tryParseDouble(String value){

try {

Double.parseDouble(value);

return true;

} catch (NumberFormatException e) {

return false;

}

}

 

 

static int nta=0,nxa=0,km=0,NumberofAbsorber=0;// переменныедляпервыхпятипараметров

static double[] xa = new double[11];static double[] ya = new double[11];static double[] za = new double[11];

static int[][] tx =new int[11][4];//Номератиповхарактеристиквиброизоляторовпоосям X,Y,Z

static double[][] xar =new double[5][20];//Типовыехарактеристикивиброизоляторов

static double[] dx = new double[21];static double[] dy = new double[21];static double[] dz = new double[21];

 

//Силы "сухого" трения в виброизоляторах[Н] пооси

static double[] gx = new double[10];static double[] gy = new double[10];static double[] gz = new double[10];

//Координатыграней [мм],ограничивающих "прямоугольную" массупооси

static double[] mass =new double[10];// Массыблока [кг] (в порядкеномеров)

static int nt=0;//количествоточекударногоимпульса

static double tk,dt/*шагповремени уд.импульса*/;static int kds;

static double[] tt/*времяточекударногоимпульса */ = new double[51];static double[] yy = new double[51];//Введитезначенияперегрузокточекударногоимпульса

 

public static void input(){

 

int km2;

System.out.println("Введите исходные данные");

 

s = new Scanner(System.in);

String s1,s2,s3,s4;

 

do

{

System.out.print("Количество типов характеристик амортизаторов ");

s2 = s.next();

System.out.print("Количество точек характеристики амортизатора ");

s3 = s.next();

System.out.print("Количество блоков на которые будет разделен автомобиль ");

s4 = s.next();

if(tryParseInt(s2) && tryParseInt(s3) && tryParseInt(s4) ){

nta = Integer.parseInt(s2);

nxa = Integer.parseInt(s3);

km = Integer.parseInt(s4);;

}

Else

System.out.println("Повторите ввод ");

}

while(!tryParseInt(s2) || !tryParseInt(s3) || !tryParseInt(s4) );

 

 

do{

System.out.print("Количество амортизаторов ");

s1 = s.next();

if(tryParseInt(s1) )

{

NumberofAbsorber= Integer.parseInt(s1);

if(NumberofAbsorber<1 || NumberofAbsorber>15)

{System.out.println("Такое число не подходит ");

System.out.println("Повторите ввод ");}

}

Else

System.out.println("Так нельзя,Повторите ввод ");

}while(!tryParseInt(s1) || NumberofAbsorber<1 || NumberofAbsorber>15);

km2=km*2;

 

System.out.println("Типовые характеристики амортизаторов");

System.out.println("в порядке номеров характеристик:точки деформация-сила [м/н] построчно");

System.out.print("для каждого типа характеристики ");

 

for(int i=1;i<=nta;i++)

for(int j=1;j<=2*nxa;j++){

do

{

 

s1 = s.next();

if(tryParseDouble(s1))

{xar[i][j] = Double.parseDouble(s1);}

Else

System.out.print("Повторите ввод ");

}

while( !tryParseDouble(s1) );

}

System.out.println("Номера типов характеристик амортизаторов по осям Z-построчно");

 

 

for(int i=1;i<=nxa;i++)

// for(int j=1;j<=3;j++){

{int j=3;

do

{

s1 = s.next();

if(tryParseInt(s1))

{tx[i][j] = Integer.parseInt(s1);}

Else

System.out.print("Повторите ввод ");

}

while( !tryParseInt(s1) );

//}

}

System.out.println("Масса отдельных частей автомобиля (сумма частей должна равняться полной массе авто) ");

 

for(int i=1;i<=km;i++){

do

{

s1 = s.next();

if(tryParseInt(s1))

{mass[i] = Integer.parseInt(s1);}

Else

System.out.print("Повторите ввод ");

}

while( !tryParseInt(s1) );

}

System.out.print(" Длина блоков автомобиля,координата X началa и концa в мм ");

 

for(int i=1;i<=km2;i++){

do

{

s1 = s.next();

if(tryParseInt(s1))

{gx[i] = Integer.parseInt(s1);}

Else

System.out.print("Повторите ввод ");

}

while( !tryParseInt(s1) );

}

System.out.print(" Ширина блоков автомобиля,координата Y началa и концa в мм ");

for(int i=1;i<=km2;i++){

do

{

s1 = s.next();

if(tryParseInt(s1))

{gy[i] = Integer.parseInt(s1);}

Else

System.out.print("Повторите ввод ");

}

while( !tryParseInt(s1) );

}

System.out.print(" Высота блоков автомобиля,координата Z началa и концa в мм ");

for(int i=1;i<=km2;i++){

do

{

s1 = s.next();

if(tryParseInt(s1))

{gz[i] = Integer.parseInt(s1);}

Else

System.out.print("Повторите ввод ");

}

while( !tryParseInt(s1) );

}

double[] dx = new double[21]; double[] dy = new double[21]; double[] dz = new double[21];

System.out.println("Коэффициенты вязкого демпфирования для "+NumberofAbsorber + " амортизаторов ");

for(int i=1;i<=NumberofAbsorber;i++){

do

{

 

System.out.print(i +"-й "); s3 = s.next();

if( tryParseInt(s3) ) //tryParseInt(s1) && tryParseInt(s2) && tryParseInt(s3)

{dx[i] =0;//Integer.parseInt(s1)

dy[i] = 0;

dz[i] = Integer.parseInt(s3);

}

Else

System.out.println("Повторите ввод ");

}

while( !tryParseInt(s3) ); //!tryParseInt(s1) || !tryParseInt(s2) || !tryParseInt(s3)

}

 

 

System.out.print("Координаты установки амортизаторов[мм] по оси ");

for(int i=1;i<=NumberofAbsorber;i++){

do

{

System.out.print("X ");

s1 = s.next();

System.out.print("Y ");

s2 = s.next();

System.out.print("Z ");

s3 = s.next();

if(tryParseInt(s1) && tryParseInt(s2) && tryParseInt(s3) )

{xa[i] = Integer.parseInt(s1);

ya[i] = Integer.parseInt(s2);

za[i] = Integer.parseInt(s3);

}

Else

System.out.print("Повторите ввод ");

}

while( !tryParseInt(s1) || !tryParseInt(s2) || !tryParseInt(s3) );

}

 

System.out.print(" Введите количество точек ударного импульса ");

do

{

s1 = s.next();

if(tryParseInt(s1))

{nt = Integer.parseInt(s1);}

Else

System.out.print("Повторите ввод ");

}

while( !tryParseInt(s1) );

 

for(int i=1;i<=nt;i++){

do

{

System.out.print("Введите время точек ударного импульса [мс] ");

s1 = s.next();

System.out.print("Введите значения перегрузок точек ударного импульса ");

s2 = s.next();

if(tryParseDouble(s1) && tryParseDouble(s2))

{tt[i] = Double.parseDouble(s1)*0.001;

yy[i] = Double.parseDouble(s2)*9.81;

}

Else

System.out.print("Повторите ввод ");

}

while( !tryParseDouble(s1) || !tryParseDouble(s2) );

}

 

 

do

{

System.out.print("Введите конечное время анализа воздействия [мс] ");

s1 = s.next();

System.out.print("Введите шаг по времени уд.импульса [мс] ");

s2 = s.next();

System.out.print("Введите коэффициент уменьшения шага по времени ");

s3 = s.next();

if(tryParseDouble(s1) && tryParseDouble(s2) && tryParseInt(s3) )

{

tk = Double.parseDouble(s1)*0.001;

dt = Double.parseDouble(s2)*0.001;

kds = Integer.parseInt(s3);

}

Else

System.out.print("Повторите ввод ");

}

while( !tryParseDouble(s1) || !tryParseDouble(s2) || !tryParseInt(s3) );

 

System.out.println("Ввод окончен,данные переведены в систему СИ[Н,м,с,кг] ");

 

}

 

static double[][] de = new double[11][4];

static double[] gex = new double[11];static double[] gey = new double[11];static double[] gez = new double[11];

 

public static void stat(double de[][],double gex[],double gey[],double gez[],int NumberofAbsorber){

 

 

//{вычислениенагpузокнаамоpтизатоpы}

double[] px = new double[41]; double[] py = new double[41]; double[] pz = new double[41];

 

for(int i=1;i<=NumberofAbsorber;i++){

px[i]=de[i][1]*gex[i];

py[i]=de[i][2]*gey[i];

pz[i]=de[i][3]*gez[i];

}

System.out.println("Нагpузка на амоpтизатоpы [H] ");

System.out.println(" по x по y по z ");

for(int i=1;i<=NumberofAbsorber;i++){

System.out.println("на"+(i)+"-ый амортизатор"+px[i]+" "+py[i]+" "+pz[i]);

}

}

static double[] y = new double[13];static double[] ff = new double[13];

static double xos=0,yos,zos;

 

 

static double fr=0,cr,ro,ger,br,gr,sm = 0,vx = 0,vy=0,vz=0,jx=0,jy=0,jz=0;

static double ge,cx=0,cy=0,cz=0,a=0,b=0,c=0,d1=0,t=0,rf=0,q1=0,q2=0;

static double i1=0,i2=0,n=0,w1=0,g=0,bx=0,by=0;

static double ss1=0,ss2=0;

 

 

public static void Model(double de[][],double y[],double xa[],double ya[],double za[],double xos,double yos,double zos,double ge,int tx[][],

int nxa,double xar[][],double gex[],double gey[],double gez[],int NumberofAbsorber,double cx,double cy,double cz,double a,double b,

double c,double t,double rf,double d1,double i1,double i2,double q1,double q2,double ss1,double ss2,double n,double g,double w1,

double fr,double cr,double ger,double br,double gr,double ff[])

{

int jjj,nxar;

double L=0,q=0,ss,z,bz,kx,ky,kz,fsx=0,fsy=0,fsz=0,fzy=0,fyz=0,fzx=0,fxz=0,fxy=0,fyx=0;

double[] nx = new double[11];double[] ny = new double[11];double[] nz = new double[11];

 

for(int j=1;j<=NumberofAbsorber;j++){

de[j][1]=y[1]-ya[j]*y[11]+za[j]*y[9]-xos;

de[j][2]=y[3]-za[j]*y[7]+xa[j]*y[11]-yos;

de[j][3]=y[5]-xa[j]*y[9]+ya[j]*y[7]-zos;

for(int k=1;k<=3;k++){

jjj=1;nxar=tx[j][k];

while(jjj<=nxa-1 && de[j][k]<=xar[nxar][2*jjj+1]){

if(xar[nxar][2*jjj-1]>de[j][k]){

ge=(xar[nxar][2*(jjj+1)]-xar[nxar][2*jjj])/(xar[nxar][2*(jjj+1)-1]-xar[nxar][2*jjj-1]);

switch(k){

case 1:gex[j]=ge;

break;

case 2:gey[j]=ge;

break;

case 3:gez[j]=ge;

break;

}

}

jjj++;

}

}

cx+=gex[j];

cy+=gey[j];

cz+=gez[j];

a=a-gex[j]*ya[j];

b=b+gex[j]*za[j];

c=c-gey[j]*za[j];

d1=d1+gey[j]*xa[j];

t=t-gez[j]*xa[j];

rf=rf+gez[j]*ya[j];

i1=i1+gex[j]*za[j]*za[j];

i2=i2+gez[j]*xa[j]*xa[j];

q1=q1+gez[j]*ya[j]*ya[j];

q2=q2+gey[j]*za[j]*za[j];

ss1=ss1+gey[j]*xa[j]*xa[j];

ss2=ss2+gex[j]*ya[j]*ya[j];

n=n-gex[j]*ya[j]*za[j];

g=g+gey[j]*za[j]*xa[j];

w1=w1-gez[j]*xa[j]*ya[j];

}

L=i1+i2; //обозначаетсячерез L маленькое

q=q1+q2;

ss=ss1+ss2; //s заменяетсянаss, s1 и s2 на ss1 ss2 соотвественно

bx=0;fsx=0;by=0;fsy=0;bz=0;fsz=0;kx=0;fzy=0;fyx=0;ky=0;fyz=0;fzx=0;kz=0;fxz=0;fxy=0;

for(int j=1;j<=NumberofAbsorber;j++){

fr=0;

cr=0;

ger=dz[j];

br=xa[j];

gr=ya[j];

z=za[j];

bz+=ger;

kx+=ger*gr;

ky+=ger*br;

 

fsx+=nx[j];

fsy+=ny[j];

fsz+=nz[j];

fzy+=nz[j]*gr;

fyz+=ny[j]*z;

fzx+=nz[j]*br;

fxz+=nx[j]*z;

fxy+=nx[j]*gr;

fyx+=ny[j]*br;

}

 

ff[1]=y[2];

ff[2]=(cx*(xos-y[1])-a*y[11]-b*y[9]+bx*(vx-y[2])-fsx)/sm;

ff[3]=y[4];

ff[4]=(cy*(yos-y[3])-c*y[7]-d1*y[11]+by*(vy-y[4])-fsy)/sm;

ff[5]=y[6];

ff[6]=(cz*(zos-y[5])-t*y[9]-rf*y[7]+bz*(vz-y[6])-fsz)/sm;

ff[7]=y[8];

ff[8]=(-c*y[3]-rf*y[5]-q*y[7]-g*y[11]-w1*y[9]-kx*y[8]+c*yos+rf*zos-fzy-fyz)/jx;

ff[9]=y[10];

ff[10]=(-b*y[1]-t*y[5]-L*y[9]-w1*y[7]-n*y[11]-ky*y[10]+b*xos+t*zos-fzx-fxz)/jy;

ff[11]=y[12];

ff[12]=(-a*y[1]-d1*y[3]-ss*y[11]-n*y[9]-c*y[7]-kz*y[12]+a*xos+d1*yos-fxy-fyx)/jz;

 

}

 

static double ctx=0,cty=0,ctz=0,ctx1=0,cty1=0,ctz1=0,dt1;

static int nt1,nr;

private static Scanner s;

static double[] vv = new double[52];static double[] pp = new double[52];

static double[] yy1 = new double[52];static double[] tt1 = new double[52];static double[] sss = new double[52];// ssзаменaнаsss, s наss

static double[] ww= new double[13];static double[] v = new double[52];static double[] kr = new double[13];

 

public static void main(String[] args){

 

input();

sm=0; ctx=0; cty=0; ctz=0; jx=0; jy=0; jz=0;

cx=0; cy=0; cz=0; a=0; b=0; c=0; t=0;rf=0;

i1=0; i2=0; q1=0; q2=0; ss1=0; ss2=0; n=0; g=0;

w1=0; d1=0;

System.out.println("Идет расчет");

int ir;

 

 

ir=2*km;

//вычислениекооpдинат ц.т.

for(int j=1;j<=ir;j++){

gx[j]=gx[j]*0.001;

gy[j]=gy[j]*0.001;

gz[j]=gz[j]*0.001;

}

for(int j=1;j<=km;j++){

sm+=mass[j];

ctx+=(gx[2*j]+gx[2*j-1])/2*mass[j];

cty+=(gy[2*j]+gy[2*j-1])/2*mass[j];

ctz+=(gz[2*j]+gz[2*j-1])/2*mass[j];

}

ctx=ctx/sm;

cty=cty/sm;

ctz=ctz/sm;

ctx1=ctx*1000;

cty1=cty*1000;

ctz1=ctz*1000;

 

System.out.println(" кооpдинаты ц.м.[мм] X "+ctx1+" Y "+cty1+" Z "+ctz1);

String s1=null;

s1=" кооpдинаты ц.м.[мм] X "+ctx1+" Y "+cty1+" Z "+ctz1;

 

int ish;double dr,w,rr,ur,ar,er,yr;

//pасчетмоментовинеpцииблокаотносительно ц.т.

for(int j=1;j<=km;j++){

int i;

i=2*j;

ish=i-1;

br=gx[i];

gr=gy[i];

dr=gz[i];

ger=gx[ish];

cr=gy[ish];

w=gz[ish];

rr=(br+ger)/2;

fr=(dr+w)/2;

ur=(gr+cr)/2;

ar=Math.abs(br-ger);

er=Math.abs(dr-w);

yr=Math.abs(gr-cr);

ro=mass[j]/ar/er/yr;

jx+=((ar*Math.pow(yr,3)/12+Math.pow((ur-cty),2)*ar*yr)*er+(ar*Math.pow(er,3)/12+Math.pow((fr-ctz),2)*er*ar)*yr)*ro;

jy+=((yr*Math.pow(ar,3)/12+Math.pow((rr-ctx),2)*yr*ar)*er+(yr*Math.pow(er,3)/12+Math.pow((fr-ctz),2)*er*yr)*ar)*ro;

jz+=((er*Math.pow(ar,3)/12+Math.pow((fr-ctx),2)*er*ar)*yr+(er*Math.pow(yr,3)/12+Math.pow((ur-ctz),2)*er*yr)*ar)*ro;

}

//{вычислениекооpдинатточеккpепленияамоpтизатоpов в системе с началомотсчета в ц.m.}

for(int j=1;j<=NumberofAbsorber;j++){

xa[j]=xa[j]*0.001-ctx;

ya[j]=ya[j]*0.001-cty;

za[j]=za[j]*0.001-ctz;

}

vv[1]=0;pp[1]=0;nr=1;nt1=nt;dt1=dt;

for(int i=1;i<=nt;i++){

yy1[i]=yy[i];

tt1[i]=tt[i];

}

if(nr==1){

nt=9;dt=1;

 

for(int i=2;i<=nt;i++){

tt[i]=i;yy[i]=9.81;

}}

for(int i=1;i<=NumberofAbsorber;i++)

for(int j=1;j<=3;j++){ de[i][j]=0;}

 

 

if(nr==2){

nt=nt1;dt=dt1;

for(int i=1;i<=nt1;i++){

tt[i]=tt1[i];yy[i]=yy1[i];

}

}

 

for(int i=2;i<=nt;i++){

vv[i]=vv[i-1]+(yy[i]+yy[i-1])*(tt[i]-tt[i-1])/2;

pp[i]=pp[i-1]+(vv[i]+vv[i-1])*(tt[i]-tt[i-1])/2;

}

cx=0; cy=0; cz=0; a=0; b=0; c=0; t=0;rf=0;

i1=0; i2=0; q1=0; q2=0; ss1=0; ss2=0; n=0; g=0;

w1=0; d1=0;

//{началоRunge-Kutta}

int ii=1,jj=1;

xos=0;yos=0;zos=0;

vx=0;vy=0;vz=0;dt=dt/kds;

 

for(int i=1;i<=12;i++) {ww[i]=0;}

do{

jj=1;

do{

for(int j=1;j<=12;j++) { y[j]=ww[j];}

 

zos=pp[ii]+(pp[ii+1]-pp[ii])*(jj-1)/kds;

vz=vv[ii]+(vv[ii+1]-vv[ii])*(jj-1)/kds;

 

 

Model( de, y, xa, ya, za, xos, yos, zos, ge, tx,nxa, xar, gex, gey, gez,

NumberofAbsorber, cx, cy, cz, a, b, c, t, rf, d1, i1, i2, q1, q2, ss1, ss2, n, g, w1,fr, cr, ger,

br, gr, ff);

for(int j=1;j<=12;j++){v[j]=dt*ff[j];kr[j]=v[j];y[j]=ww[j]+v[j]/2;}

 

zos=pp[ii]+(pp[ii+1]-pp[ii])*(jj-1)/kds/2;

vz=vv[ii]+(vv[ii+1]-vv[ii])*(jj-1)/kds/2;

 

for(int i=1;i<=2;i++){

Model(de, y, xa, ya, za, xos, yos, zos, ge, tx,nxa, xar, gex, gey, gez,

NumberofAbsorber, cx, cy, cz, a, b, c, t, rf, d1, i1, i2, q1, q2, ss1, ss2, n, g, w1,fr, cr, ger,

br, gr, ff);

for(int j=1;j<=12;j++){

v[j]=dt*ff[j];kr[j]=kr[j]+2*v[j];y[j]=ww[j]+v[j]/2;

}

}

for(int j=1;j<=12;j++) y[j]=ww[j]+v[j];

zos=pp[ii]+(pp[ii+1]-pp[ii])*(jj-1)/kds;

vz=vv[ii]+(vv[ii+1]-vv[ii])*(jj-1)/kds;

 

Model(de, y, xa, ya, za, xos, yos, zos, ge, tx,nxa, xar, gex, gey, gez,

NumberofAbsorber, cx, cy, cz, a, b, c, t, rf, d1, i1, i2, q1, q2, ss1, ss2, n, g, w1,fr, cr, ger,

br, gr, ff);

for(int j=1;j<=12;j++){

y[j]=ww[j]+(kr[j]+dt*ff[j])/6;ww[j]=y[j];

}

jj++;

}while( jj<kds);

sss[ii+1]=y[5];

ii++;

}while( ii<nt-1 );

 

if(nr==1){ //M1 goto в конце

nr=2;

 

 

nt=nt1;dt=dt1;

for(int i=1;i<=nt1;i++){

tt[i]=tt1[i];yy[i]=yy1[i];

}

 

 

for(int i=2;i<=nt;i++){

vv[i]=vv[i-1]+(yy[i]+yy[i-1])*(tt[i]-tt[i-1])/2;

pp[i]=pp[i-1]+(vv[i]+vv[i-1])*(tt[i]-tt[i-1])/2;

}

cx=0; cy=0; cz=0; a=0; b=0; c=0; t=0;rf=0;

i1=0; i2=0; q1=0; q2=0; ss1=0; ss2=0; n=0; g=0;

w1=0; d1=0;

//{началоRunge-Kutta}

xos=0;yos=0;zos=0;

vx=0;vy=0;vz=0;dt=dt/kds;

ii=1;

for(int i=1;i<=12;i++) {ww[i]=0;}

do{

jj=1;

do{

for(int j=1;j<=12;j++) { y[j]=ww[j];}

zos=pp[ii]+(pp[ii+1]-pp[ii])*(jj-1)/kds;

vz=vv[ii]+(vv[ii+1]-vv[ii])*(jj-1)/kds;

 

Model(de, y, xa, ya, za, xos, yos, zos, ge, tx,nxa, xar, gex, gey, gez,

NumberofAbsorber, cx, cy, cz, a, b, c, t, rf, d1, i1, i2, q1, q2, ss1, ss2, n, g, w1,fr, cr, ger,

br, gr, ff);

for(int j=1;j<=12;j++){v[j]=dt*ff[j];kr[j]=v[j];y[j]=ww[j]+v[j]/2;}

zos=pp[ii]+(pp[ii+1]-pp[ii])*(jj-1)/kds/2;

vz=vv[ii]+(vv[ii+1]-vv[ii])*(jj-1)/kds/2;

 

for(int i=1;i<=2;i++){

Model(de, y, xa, ya, za, xos, yos, zos, ge, tx,nxa, xar, gex, gey, gez,

NumberofAbsorber, cx, cy, cz, a, b, c, t, rf, d1, i1, i2, q1, q2, ss1, ss2, n, g, w1,fr, cr, ger,

br, gr, ff);

for(int j=1;j<=12;j++){

v[j]=dt*ff[j];kr[j]=kr[j]+2*v[j];y[j]=ww[j]+v[j]/2;

}

}

for(int j=1;j<=12;j++) {y[j]=ww[j]+v[j];}

zos=pp[ii]+(pp[ii+1]-pp[ii])*(jj-1)/kds;

vz=vv[ii]+(vv[ii+1]-vv[ii])*(jj-1)/kds;

 

Model(de, y, xa, ya, za, xos, yos, zos, ge, tx,nxa, xar, gex, gey, gez,

NumberofAbsorber, cx, cy, cz, a, b, c, t, rf, d1, i1, i2, q1, q2, ss1, ss2, n, g, w1,fr, cr, ger,

br, gr, ff);

for(int j=1;j<=12;j++){

y[j]=ww[j]+(kr[j]+dt*ff[j])/6;

ww[j]=y[j];

}

jj++;

}while( jj<kds);

sss[ii+1]=y[5];

ii++;

}while( ii<nt-1 );

}

 

 

sss[1]=0; // sss == ss, ss == s

for(int i=2;i<=nt;i++){

vv[i]=(sss[i]-sss[i-1])/(tt[i]-tt[i-1]);

yy[i]=(vv[i]-vv[i-1])/(tt[i]-tt[i-1])/9.81;

}

 

//for(int i=1;i<=NumberofAbsorber;i++)

//{

// System.out.println("деформацияамортизатора № "+i);

// System.out.println("деформацияамортизаторапо X "+de[i][1]);

// System.out.println("деформацияамортизаторапо Y "+de[i][2]);

// System.out.println("деформацияамортизаторапо Z "+de[i][3]);

//}

for(int i=1;i<=NumberofAbsorber;i++){System.out.println("Перемещение штока амортизатора № "+i+" равно "+pp[i]);}

 

System.out.println(" Временные точки ударного импульса [мс] Перегрузка[g] \n");

s1+=" Временные точки ударного импульса [мс] Перегрузка[g] \n";

 

 

for(int i=1;i<=nt;i++){

tt[i]=tt[i]*1000;

 

System.out.println(" "+ tt[i]+ " "+yy[i]/10+" \n");

s1+=" "+ tt[i]+ " "+yy[i]+" \n";

 

}

//stat(de, gex, gey, gez, NumberofAbsorber);

}

 

 

}

 

Последнее изменение этой страницы: 2016-06-10

lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда...