Tải bản đầy đủ (.pdf) (24 trang)

BÁO cáo bài tập lớn PHƯƠNG PHÁP số 2

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (913.36 KB, 24 trang )

ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA


BÁO CÁO
BÀI TẬP LỚN PHƯƠNG PHÁP SỐ
CÁN BỘ GIẢNG DẠY: PGS.TS Vũ Cơng Hịa
NHĨM: 03
LỚP: L07

Thành phố Hồ Chí Minh - 2021

download by :


DANH SÁCH NHÓM 03
ST
T
1

Họ và tên

MSSV

Mai Ngọc Trân

2014820

2

Hà Thanh Anh Khoa



1913801

3

Vòng Đạt Huy

2011299

4

2010333

5

Nguyễn Hà Phúc
Khải
Đại Anh Lộc

6

Mai Quang Phú

2011828

7

2012835

8


Phạm Nhật Phương
Duy
Nguyễn Đăng Khoa

9

Lê Minh Ngọc

2013889

Nguyễn Tuấn Khải

2011405

10

2011570

2013503

Ngành học
Kỹ thuật Cơ
Khí
Kỹ thuật Cơ
Khí
Kỹ thuật Cơ
Khí
Kỹ thuật Cơ
Khí

Kỹ thuật Cơ
Khí
Kỹ thuật Cơ
Khí
Kỹ thuật Cơ
Khí
Kỹ thuật Cơ
Khí
Kỹ thuật Cơ
Khí
Kỹ thuật Cơ
Khí

download by :

Kí tên


MC LC
I. BI 1.............................................................................................1
1. Cơ s l thuy"t.........................................................................1
1.1. Bi ton Cauchy.................................................................1
1.2. Phương php Runge – Kutta.............................................2
1.2.1. Phương php Runge – Kutta bc 2.............................2
1.2.2. Phương php Runge – Kutta bc 4.............................5
2. $p d'ng....................................................................................5
2.1. Bi ton 1............................................................................5
2.1.1. Giải tay...........................................................................6
2.1.2. Kết quả chương trình matlab.....................................7
2.2. Bi ton 2............................................................................8

2.2.1. Giải tay...........................................................................8
2.2.2. Kết quả chương trình Matlab...................................10
2.3. Code chương trình Runge – Kutta Matlab....................11
II.

BI 2........................................................................................12

1. Cơ s l thuy"t.......................................................................12
2. $p d'ng..................................................................................12
2.1. Bi giải tay........................................................................13
2.2. Giải ton b)ng ph*n m+m ABAQUS..............................16
2.3. Code ch0y chương trình ph*n m+m ABAQUS..............17
III.

TI LI(U THAM KH+O............................................................22

download by :


I.

BI 1

1. Cơ s l thuy"t
1.1. Bi ton Cauchy
Một phương tr8nh vi phân cấp 1 c: th; vi<t dư>i dạng giải đư@c y
= f(x, y) mà ta c: th; t8m đư@c hàm y tG đạo hàm cHa n:. TIn tại vô
sL nghiMm thoả mNn phương tr8nh trên. MOi nghiMm phP thuộc vào
một hay nhiQu hRng sL tuS T nào đ:. Đ; xUc đVnh một nghiMm cP th;
cHa phương tr8nh ta phải c: giU trV ban đXu đư@c cho trư>c cHa y là

y0 tại giU trV đXu x0. Bài toUn Cauchy c: dạng như sau:

Ngư\i ta đN ch]ng minh ra bài toUn trên c: 1 nghiMm duy nhất
n
v>i L là một hRng sL dương.
Ngư\i ta c`ng ch]ng minh rRng nf thoả mNn điQu kiMn Lipschitz.
Một cUch tcng quUt hơn, ngư\i ta đVnh nghea hM phương tr8nh
bậc 1:
y1' = f1(x, y1, y2,..., yn)
y2' = f2(x, y1, y2,..., yn)

yn' = fn(x, y1, y2,..., yn)
Ta ph2i t4m nghiê 8m y1, y2,… yn sao cho:

v=i:

1

download by :


Đối v=i phương tr4nh vi phân bâ 8c n, nghiê 8m sC phD thuôc 8 vào n hGng số tuH I.
ĐJ t4m đưLc môt8 nghiê 8m cD thJ, ta ph2i cM n điNu kiê
n đPu.
8
BGng cQch đưa vN phương
tr4nh vi phân cRp 1 ta cM thJ gi2i đưLc phương tr4nh vi phân cRp n.
1.2. Phương php Runge – Kutta

1.2.1. Phương php Runge – Kutta bc 2
Xgt bài toUn Cauchy:

v>i y = y(t) là hàm cXn t8m, khả vi trên đoạn [a, b], y 0 là giU trV ban
đXu cho trư>c cHa y(t) tại t = a.
Đ; t8m nghiMm gXn đúng cHa bài toUn (1), ta chia đoạn [a, b]
thành n đoạn bRng nhau:

Khi đ: cUc đi;m nút t0 = a; tk = t0 + kh; k = 0, 1, 2,… n; tn = b.
Giả sn y(t) là nghiMm duy nhất cHa bài toUn (1) c: đạo hàm đcấp 2 liên tPc trên đoạn [a, b].
Ta xgt khai tri;n Taylor cHa nghiMm đúng y(t):

Thay x = xi+1 = xi+h, ta c::

Trong đ::

Thay vào công th]c Euler cải ti
2

download by :


Đ; trUnh tính trqc ti

như sau:
Đbt:
Trong đ::

Và chọn r1, r2 sao cho khai tri;n luỹ thGa cHa h cHa y k+1 xUc đVnh bti


(4) trung nhau đDung công th]c Tylor cHa hàm hai bi
TG đây suy ra:

Do đ: (4) c: th; vi<t dư>ng dạng:
yk+1=yk + r1hy’k + r2[hy’k + αh2f’t(tk, yk) + βh2y’kf’y(tk, yk)] + O(h3)
= yk + r1hy’k + r2hy’k + αr2h2f’t(tk, yk) + βr2h2y’kf’y(tk, yk) +
O(h3)
= yk + r1hy’k + r2hy’k + αr2h2f’t(tk, yk) + βr2h2y’kf’y(tk, yk) +
O(h3)

(6)

So sUnh cUc hM sL luỹ thGa cHa cHa h trong (3) và (6) ta c::
r1 + r2 = 1

3

download by :


Đây là một hM thLng 3 phương tr8nh 4 zn nên là một hM vô đVnh.
Ta xgt một vài họ nghiMm đơn giản:
. Khi đ: (4) và (5) c: dạng:
đN bi
. Khi đ: (4) và (5) c: dạng:
đN bi

Khi thành lập cUc công th]c (4) và (5) trên đây ta bỏ qua sL
hạng O(h3) trong khai tri;n Taylor. Ta c: th; ch]ng minh đư@c rRng
sai sL tại đi;m tk thỏa mNn: |yk -y(tk)| ≤ Mh2, trong đ: M là hRng sL
dương không phP thuộc h.
1.2.2. Phương php Runge – Kutta bc 4
Hoàn toàn tương tq phương phUp Runge - Kutta, ntri;n Taylor cHa y(tk+1) tại xi ta bỏ qua sL hạng O(h4) th8 sẽ nhận đư@c
công th]c Runge-Kutta c: độ chính xUc cấp ba, nghea là |y k -y(tk)| ≤
Mh3, trong đ: M là hRng sL dương không phP thuộc h.
đN bi
4

download by :


NđN bi
2. $p d'ng
2.1. Bi ton 1
Sn dPng phương phUp Runge – Kutta bậc 2 đ; xấp xỉ nghiMm cHa
bài toUn Cauchy. ĐUnh giU sai sL.

V>i n=4. Tại những đi;m nút chia so sUnh giU trV gXn đung v>i
giU trV chính xUc, bi1)2 - 0,5�� . ĐUnh giU sai sL.
2.1.1.

Giải tay


Theo công th]c Runge – Kutta bậc 2 ta c::

V>i
5

download by :


k
0
1
2
3
4

xk

yk

y(xk)

0.000000

0.500000

0.500000

0.000000


0
0.500000

0
1.406250

0
1.425639

0
0.019389

1.36

0
1.000000

0
2.597656

4
2.640859

4
0.043202

%
1.64

0

1.500000

3
3.939941

1
4.009155

8
0.069214

%
1.73

0
2.000000

4
5.214904

5
5.305472

1
0.090567

%
1.71

0


8

0

2

%

0

2.1.2. Kết quả chương trình matlab

6

download by :


2.2. Bi ton 2
7

download by :


Sn dPng phương phUp Runge – Kutta bậc 4 đ; xấp xỉ nghiMm cHa
bài toUn Cauchy. ĐUnh giU sai sL.

V>i n=4. Tại những đi;m nút chia so sUnh giU trV gXn đung v>i
giU trV chính xUc, bi1)2 - 0,5��.

2.2.1. Giải tay

Theo công th]c Runge – Kutta bậc 4 :

V>i và. Ta c::

download by :


k
0
1
2
3

xk
0.00000

yk
0.50000

y(xk)
0.50000

00
0.50000

00
1.42513


00
1.42563

00
1.00000

02
2.63960

94
2.64085

%
1.2564×10 0.048

00
1.50000

27
4.00681

91
4.00915

%
2.3365×10 0.058

00

90


55

0.0000000
5.092×10-4

0
0.036

-3

-3

%

2.2.2. Kết quả chương trình Matlab

9

download by :


2.3. Code chương trình Runge – Kutta Matlab
10

download by :


Bậc
clear; clc


clear; clc

%Nhập các giá trị

%Nhập các giá trị

t0=input('Nhap gia tri dau x0 = ');

t0=input('Nhap gia tri dau x0 = ');

tn=input('Nhap gia tri cuoi xn = ');

tn=input('Nhap gia tri cuoi xn = ');

y0=input('Nhap gia tri dau y0 = ');

y0=input('Nhap gia tri dau y0 = ');

h=input('Nhap buoc nhay h = ');

h=input('Nhap buoc nhay h = ');

n=(tn-t0)/h;

n=(tn-t0)/h;

t(1)=t0; y(1)=y0;

t(1)=t0; y(1)=y0;


%Phương trình vi phân câần giải

%Phương trình vi phân câần giải

f=@(t,y) y-t^2+1;

f=@(t,y) y-t^2+1;

g=@(t)((t+1)^2)-0.5*(exp(t));

g=@(t)((t+1)^2)-0.5*(exp(t));

for i=1:n

for i=1:n

t(i+1)=t(i)+h;

k1=h*f(t(i),y(i));

y(i+1)=y(i)+h*f(t(i)+h/2,y(i)+(h/2)*f(t(i),y(i)));

k2=h*f(t(i)+h/2,y(i)+k1/2);

fprintf('y%d = %.7f\t',i,y(i+1));

k3=h*f(t(i)+h/2,y(i)+k2/2);

fprintf('y%d chinh xac = %.7f\t',i,g(t(i+1)));


k4=h*f(t(i)+h,y(i)+k3);

fprintf('Sai so = %.7f\n', abs(g(t(i+1))-y(i+1)));

2

y(i+1)=y(i)+(k1+2*k2+2*k3+k4)/6;
t(i+1)=t(i)+h;

end

fprintf('y%d = %.7f\t\t',i,y(i+1));
fprintf('y%d chinh xac = %.7f\t\t',i,g(t(i+1)));
fprintf('Sai so = %.7f\n', abs(g(t(i+1))-y(i+1)));

11

download by :


II.

BI 2

1. Cơ s l thuy"t
Sử dDng kiến thức đã đưLc học trong chương 10: PhPn tử dPm trong không gian
đJ gi2i quyết bài toQn.
Phương tr4nh phPn tử hbu hcn:
vi


θi

vj

θj

Ma trâ 8n đô 8 cứng cfa mô 8 t phPn tử dPm 2D tgng quQt:

2. $p d'ng
Cho dXm như h8nh vẽ. Vật liMu thgp, khLi lư@ng riêng ρ =
7800kg/m3. Bi= 0.25; chiQu dài a = 1000 mm. Lqc phân bL q = const. Chọn mbt
cắt tuy T (h8nh chữ nhật, h8nh vuông, W shape, S shape, C shape …)
sao cho đảm bảo điQu kiMn bQn.

Lấy
I

ti
diMn

h8nh

chữ

nhật

v>i


a=500mm,

a b3
1125.106 mm4
12
11Equation Section (Next)

HNy xUc đVnh:
12

download by :

b=300mm,


a) Phản lqc.
b) Trư\ng ]ng suất.
c) Trư\ng biCư\ng độ q = xxxxx N/m.
12528.3N/m=12.5283N/mm
n: sL sinh viên cHa nh:m
2.1. Bi giải tay

Phần tử 1 và 2:

Phần tử 3: l=2L

Ma trận tổng độ cứng của phần tử:


Tải trọng và điều kiện biên:
13

download by :


 2.54 10  4 rad
 2

3
3  1.009 10  rad

  5.045 10  4 rad
 4

Phản lực:

Ứng suất:

2.2. Giải ton b)ng ph*n m+m ABAQUS
a) Reaction force “RF” (Phản lực liên k"t):

14

download by :


b) Stress “S” (Ứng suất):

c) Ubiety “U” (Chuyển vị):


15

download by :


Tổng Hợp K"t Quả:
GiU
trV
VV trí
A

Phản lqc

Ứng suất

3745.09302

0.26314N/m

N

m2
0.36173N/

B
C
D

22470.5585


mm2
0.60818 N/

9N
91235.2793

mm2
0.01668 N/

0

mm2

Chuy;n vV
0
0.00173rad
0
0.00058rad

2.3. Code ch0y chương trình ph*n m+m ABAQUS
# -*- coding: mbcs -*# Do not delete the following import lines
from abaqus import *
from abaqusConstants import *
import __main__
def Macro1():
import section
import regionToolset
import displayGroupMdbToolset as dgm
16


download by :


import part
import material
import assembly
import step
import interaction
import load
import mesh
import optimization
import job
import sketch
import visualization
import xyPlot
import displayGroupOdbToolset as dgo
import connectorBehavior
s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__',
sheetSize=4500.0)
g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints
s.setPrimaryObject(option=STANDALONE)
session.viewports['Viewport: 1'].view.setValues(nearPlane=3581.82,
farPlane=4903.46, width=5163.03, height=2369.02, cameraPosition=(
101.217, 31.0432, 4242.64), cameraTarget=(101.217, 31.0432, 0))
s.Line(point1=(-2300.0, 0.0), point2=(-1200.0, 0.0))
s.HorizontalConstraint(entity=g[2], addUndoState=False)
s.Line(point1=(-1200.0, 0.0), point2=(-100.0, 0.0))
s.HorizontalConstraint(entity=g[3], addUndoState=False)
s.ParallelConstraint(entity1=g[2], entity2=g[3], addUndoState=False)

s.Line(point1=(-100.0, 0.0), point2=(1800.0, 0.0))
s.HorizontalConstraint(entity=g[4], addUndoState=False)
s.ParallelConstraint(entity1=g[3], entity2=g[4], addUndoState=False)
s.ObliqueDimension(vertex1=v[0], vertex2=v[1], textPoint=(-1638.67651367188,
-108.192199707031), value=1000.0)
s.ObliqueDimension(vertex1=v[1], vertex2=v[2], textPoint=(-740.406066894531,
-112.22808378906), value=1000.0)
s.ObliqueDimension(vertex1=v[2], vertex2=v[3], textPoint=(121.448303222656,
-116.263732910156), value=2000.0)
p = mdb.models['Model-1'].Part(name='dam', dimensionality=TWO_D_PLANAR,
type=DEFORMABLE_BODY)
p = mdb.models['Model-1'].parts['dam']
p.BaseWire(sketch=s)
s.unsetPrimaryObject()
p = mdb.models['Model-1'].parts['dam']
session.viewports['Viewport: 1'].setValues(displayedObject=p)
del mdb.models['Model-1'].sketches['__profile__']
session.viewports['Viewport: 1'].partDisplay.setValues(sectionAssignments=ON,
engineeringFeatures=ON)
session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues(
referenceRepresentation=OFF)
17

download by :


mdb.models['Model-1'].Material(name='Material-1')
mdb.models['Model-1'].materials['Material-1'].Density(table=((7.8e-09, ), ))
mdb.models['Model-1'].materials['Material-1'].Elastic(table=((200000.0, 0.25),
))

mdb.models['Model-1'].RectangularProfile(name='Profile-1', a=500.0, b=300.0)
mdb.models['Model-1'].BeamSection(name='Section-1',
integration=DURING_ANALYSIS, poissonRatio=0.0, profile='Profile-1',
material='Material-1', temperatureVar=LINEAR,
consistentMassMatrix=False)
p = mdb.models['Model-1'].parts['dam']
e = p.edges
edges = e.getSequenceFromMask(mask=('[#7 ]', ), )
region = p.Set(edges=edges, name='Set-1')
p = mdb.models['Model-1'].parts['dam']
p.SectionAssignment(region=region, sectionName='Section-1', offset=0.0,
offsetType=MIDDLE_SURFACE, offsetField='',
thicknessAssignment=FROM_SECTION)
p = mdb.models['Model-1'].parts['dam']
e = p.edges
edges = e.getSequenceFromMask(mask=('[#7 ]', ), )
region=p.Set(edges=edges, name='Set-2')
p = mdb.models['Model-1'].parts['dam']
p.assignBeamSectionOrientation(region=region, method=N1_COSINES, n1=(0.0,
0.0,
-1.0))
a = mdb.models['Model-1'].rootAssembly
session.viewports['Viewport: 1'].setValues(displayedObject=a)
session.viewports['Viewport: 1'].assemblyDisplay.setValues(
optimizationTasks=OFF, geometricRestrictions=OFF, stopConditions=OFF)
a = mdb.models['Model-1'].rootAssembly
a.DatumCsysByDefault(CARTESIAN)
p = mdb.models['Model-1'].parts['dam']
a.Instance(name='dam-1', part=p, dependent=ON)
session.viewports['Viewport: 1'].assemblyDisplay.setValues(

adaptiveMeshConstraints=ON)
mdb.models['Model-1'].StaticStep(name='Step-1', previous='Initial',
description='100')
session.viewports['Viewport: 1'].assemblyDisplay.setValues(step='Step-1')
session.viewports['Viewport: 1'].assemblyDisplay.setValues(loads=ON, bcs=ON,
predefinedFields=ON, connectors=ON, adaptiveMeshConstraints=OFF)
a = mdb.models['Model-1'].rootAssembly
v1 = a.instances['dam-1'].vertices
verts1 = v1.getSequenceFromMask(mask=('[#1 ]', ), )
region = a.Set(vertices=verts1, name='Set-1')
mdb.models['Model-1'].DisplacementBC(name='BC-1', createStepName='Step-1',
region=region, u1=0.0, u2=0.0, ur3=0.0, amplitude=UNSET, fixed=OFF,
distributionType=UNIFORM, fieldName='', localCsys=None)
18

download by :


a = mdb.models['Model-1'].rootAssembly
v1 = a.instances['dam-1'].vertices
verts1 = v1.getSequenceFromMask(mask=('[#4 ]', ), )
region = a.Set(vertices=verts1, name='Set-2')
mdb.models['Model-1'].DisplacementBC(name='BC-2', createStepName='Step-1',
region=region, u1=UNSET, u2=0.0, ur3=UNSET, amplitude=UNSET,
fixed=OFF,
distributionType=UNIFORM, fieldName='', localCsys=None)
a = mdb.models['Model-1'].rootAssembly
v1 = a.instances['dam-1'].vertices
verts1 = v1.getSequenceFromMask(mask=('[#8 ]', ), )
region = a.Set(vertices=verts1, name='Set-3')

mdb.models['Model-1'].DisplacementBC(name='BC-3', createStepName='Step-1',
region=region, u1=UNSET, u2=0.0, ur3=UNSET, amplitude=UNSET,
fixed=OFF,
distributionType=UNIFORM, fieldName='', localCsys=None)
a = mdb.models['Model-1'].rootAssembly
v1 = a.instances['dam-1'].vertices
verts1 = v1.getSequenceFromMask(mask=('[#2 ]', ), )
region = a.Set(vertices=verts1, name='Set-4')
mdb.models['Model-1'].ConcentratedForce(name='Load-1', createStepName='Step1',
region=region, cf2=-12528.3, distributionType=UNIFORM, field='',
localCsys=None)
a = mdb.models['Model-1'].rootAssembly
s1 = a.instances['dam-1'].edges
side1Edges1 = s1.getSequenceFromMask(mask=('[#4 ]', ), )
region = a.Surface(side1Edges=side1Edges1, name='Surf-1')
mdb.models['Model-1'].Pressure(name='Load-2', createStepName='Step-1',
region=region, distributionType=UNIFORM, field='', magnitude=12.5283,
amplitude=UNSET)
session.viewports['Viewport: 1'].assemblyDisplay.setValues(mesh=ON, loads=OFF,
bcs=OFF, predefinedFields=OFF, connectors=OFF)
session.viewports['Viewport: 1'].assemblyDisplay.meshOptions.setValues(
meshTechnique=ON)
p = mdb.models['Model-1'].parts['dam']
session.viewports['Viewport: 1'].setValues(displayedObject=p)
session.viewports['Viewport: 1'].partDisplay.setValues(sectionAssignments=OFF,
engineeringFeatures=OFF, mesh=ON)
session.viewports['Viewport: 1'].partDisplay.meshOptions.setValues(
meshTechnique=ON)
p = mdb.models['Model-1'].parts['dam']
e = p.edges

pickedEdges = e.getSequenceFromMask(mask=('[#7 ]', ), )
p.seedEdgeBySize(edges=pickedEdges, size=50.0, deviationFactor=0.1,
constraint=FINER)
p = mdb.models['Model-1'].parts['dam']
19

download by :


p.generateMesh()
a1 = mdb.models['Model-1'].rootAssembly
a1.regenerate()
a = mdb.models['Model-1'].rootAssembly
session.viewports['Viewport: 1'].setValues(displayedObject=a)
session.viewports['Viewport: 1'].assemblyDisplay.setValues(mesh=OFF)
session.viewports['Viewport: 1'].assemblyDisplay.meshOptions.setValues(
meshTechnique=OFF)
mdb.Job(name='dam', model='Model-1', description='', type=ANALYSIS,
atTime=None, waitMinutes=0, waitHours=0, queue=None, memory=90,
memoryUnits=PERCENTAGE, getMemoryFromAnalysis=True,
explicitPrecision=SINGLE, nodalOutputPrecision=SINGLE, echoPrint=OFF,
modelPrint=OFF, contactPrint=OFF, historyPrint=OFF, userSubroutine='',
scratch='', resultsFormat=ODB)
mdb.jobs['dam'].submit(consistencyChecking=OFF)
session.mdbData.summary()
o3 = session.openOdb(name='A:/code dam/dam.odb')
session.viewports['Viewport: 1'].setValues(displayedObject=o3)
session.viewports['Viewport: 1'].makeCurrent()
session.viewports['Viewport: 1'].odbDisplay.basicOptions.setValues(
renderBeamProfiles=ON, renderShellThickness=ON)

session.viewports['Viewport: 1'].odbDisplay.display.setValues(plotState=(
CONTOURS_ON_DEF, ))
session.viewports['Viewport: 1'].view.setValues(nearPlane=128.8 8,
farPlane=14824, width=5178.28, height=2376.02, viewOffsetX=17.7506,
viewOffsetY=-105.381)
session.viewports['Viewport: 1'].view.setValues(session.views['Iso'])
session.viewports['Viewport: 1'].view.setValues(session.views['Front'])

20

download by :


III.

TI LI(U THAM KH+O

1. Runge-Kutta 2nd order method to solve Differential equations,
/>%20finds,from%20previous%20value%20yn.
2. Phương php Runge – Kutta, />%C6%B0%C6%A1ng_ph%C3%A1p_Runge-Kutta.
3. Runge – Kutta Methhod,
/>4. Runge – Kutta Methods,
/>ode5.html.
5. Fouth orther Runge – Kutta,
/>
21

download by :