-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconvergenceOrder.m
40 lines (25 loc) · 1.09 KB
/
convergenceOrder.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
clear
Mesh = CMesh( 'mesh.msh' );
InitialData = CInitialData( 'initialData.txt', Mesh.nnode, Mesh.ndofpn );
LEProblem = CLinearElasticityProblem( Mesh, InitialData );
StaticSolution = CStaticSolution( Mesh, InitialData, LEProblem.K );
iInitial = 100;
iIncrement = 100;
iFinal = 2000;
error = zeros(1, (iFinal-iInitial)/iIncrement+1);
timeStep = zeros(1, (iFinal-iInitial)/iIncrement+1);
for i=iInitial:iIncrement:iFinal
j = (i - iInitial)/iIncrement + 1;
InitialData.t = linspace(0, 30, i);
ModalSolution = CModalSolution( Mesh, InitialData, LEProblem, StaticSolution );
TemporalSolution = CTemporalSolution( Mesh, InitialData, LEProblem, StaticSolution );
error(j) = max(abs(TemporalSolution.totalEnergy-ModalSolution.totalEnergy)./ModalSolution.totalEnergy);
% error(j) = abs(TemporalSolution.totalEnergy(1)-ModalSolution.totalEnergy(1))/ModalSolution.totalEnergy(1);
timeStep(j) = InitialData.t(2) - InitialData.t(1);
end
figure
plot(log(timeStep),log(error));
title('Error')
xlabel('h[s]')
ylabel('Error')
p = polyfit(log(timeStep),log(error),1);