Категории: ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника |
Разработка лингвистического обеспечения
Для правильного расчета нагрузки на амортизаторы, необходимо определить массу автомобиля и координаты его граней, которые ограничивают длину, ширину и высоту кузова. Начало координат может быть выбрано произвольно, но удобнее всего располагать его в нижнем левом углу автомобиля. Так как масса в автомобиле распределяется неравномерно (двигатель обычно весит больше, чем задняя часть авто, а в той части где располагаются пассажиры массы меньше всего), то для получения более точных результатов машина разбивается на блоки. Например, передняя часть, включающая в себе моторный отсек, блок салона, расположенный между передней и задней осью автомобиля и третий блок отсек багажного отделения. Ничего не мешает разбить кузов на более мелкие части. Исходные данные, вводимые в консоль: 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
В самой программе параметры блоков задаются относительно концов предыдущего блока, поэтому промежуточные точки длины блоков 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); }
}
12 |
||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-06-10 lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда... |