更新了计算机模拟物理第2周作业代码,第1题和第2题

This commit is contained in:
sunxl18 2022-10-22 21:39:37 +08:00
parent 0156e490d9
commit 5d6837a8b9
48 changed files with 777038 additions and 0 deletions

View File

@ -0,0 +1,20 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{6989167D-11E4-40FE-8C1A-2192A86A7E90}") = "computer-hw2-1", "computer-hw2-1\computer-hw2-1.vfproj", "{E7E149AA-965F-4DBF-AE30-3D403FA464CA}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E7E149AA-965F-4DBF-AE30-3D403FA464CA}.Debug|Win32.ActiveCfg = Debug|Win32
{E7E149AA-965F-4DBF-AE30-3D403FA464CA}.Debug|Win32.Build.0 = Debug|Win32
{E7E149AA-965F-4DBF-AE30-3D403FA464CA}.Release|Win32.ActiveCfg = Release|Win32
{E7E149AA-965F-4DBF-AE30-3D403FA464CA}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

Binary file not shown.

View File

@ -0,0 +1,101 @@
descriptor vx AMPLITUDE PERIOD
1.100000 2.200000 3.141593
1.200000 2.400000 3.141593
1.300000 2.600000 3.141593
1.400000 2.800000 3.141593
1.500000 3.000000 3.141593
1.600000 3.200000 3.141593
1.700000 3.400000 3.141593
1.800000 3.600000 3.141593
1.900000 3.800000 3.141593
2.000000 4.000000 3.141593
2.100000 4.200000 3.141593
2.200000 4.400000 3.141593
2.300000 4.600000 3.141593
2.400000 4.800000 3.141593
2.500000 5.000000 3.141593
2.600000 5.200000 3.141593
2.700000 5.400000 3.141593
2.800000 5.600000 3.141593
2.900000 5.800000 3.141593
3.000000 6.000000 3.141593
3.100000 6.200000 3.141593
3.200000 6.400000 3.141593
3.300000 6.600000 3.141593
3.400000 6.800000 3.141593
3.500000 7.000000 3.141593
3.600000 7.200000 3.141593
3.700000 7.400000 3.141593
3.800000 7.600000 3.141593
3.900000 7.800000 3.141593
4.000000 8.000000 3.141593
4.100000 8.200000 3.141593
4.200000 8.400000 3.141593
4.300000 8.600000 3.141593
4.400000 8.800000 3.141593
4.500000 9.000000 3.141593
4.600000 9.200000 3.141593
4.700000 9.400000 3.141593
4.800000 9.600000 3.141593
4.900000 9.800000 3.141593
5.000000 10.000000 3.141593
5.100000 10.200000 3.141593
5.200000 10.400000 3.141593
5.300000 10.600000 3.141593
5.400000 10.800000 3.141593
5.500000 11.000000 3.141593
5.600000 11.200000 3.141593
5.700000 11.400000 3.141593
5.800000 11.600000 3.141593
5.900000 11.800000 3.141593
6.000000 12.000000 3.141593
6.100000 12.200000 3.141593
6.200000 12.400000 3.141593
6.300000 12.600000 3.141593
6.400000 12.800000 3.141593
6.500000 13.000000 3.141593
6.600000 13.200000 3.141593
6.700000 13.400000 3.141593
6.800000 13.600000 3.141593
6.900000 13.800000 3.141593
7.000000 14.000000 3.141593
7.100000 14.200000 3.141593
7.200000 14.400000 3.141593
7.300000 14.600000 3.141593
7.400000 14.800000 3.141593
7.500000 15.000000 3.141593
7.600000 15.200000 3.141593
7.700000 15.400000 3.141593
7.800000 15.600000 3.141593
7.900000 15.800000 3.141593
8.000000 16.000000 3.141593
8.100000 16.200000 3.141593
8.200000 16.400000 3.141593
8.300000 16.600000 3.141593
8.400000 16.800000 3.141593
8.500000 17.000000 3.141593
8.600000 17.200000 3.141593
8.700000 17.400000 3.141593
8.800000 17.600000 3.141593
8.900000 17.800000 3.141593
9.000000 18.000000 3.141593
9.100000 18.200000 3.141593
9.200000 18.400000 3.141593
9.300000 18.600000 3.141593
9.400000 18.800000 3.141593
9.500000 19.000000 3.141593
9.600000 19.200000 3.141593
9.700000 19.400000 3.141593
9.800000 19.600000 3.141593
9.900000 19.800000 3.141593
10.000000 20.000000 3.141593
10.100000 20.200000 3.141593
10.200000 20.400000 3.141593
10.300000 20.600000 3.141593
10.400000 20.800000 3.141593
10.500000 21.000000 3.141593
10.600000 21.200000 3.141593
10.700000 21.400000 3.141593
10.800000 21.600000 3.141593
10.900000 21.800000 3.141593
11.000000 22.000000 3.141593

View File

@ -0,0 +1,101 @@
descriptor vx AMPLITUDE PERIOD
1.100000 2.494502 2.973058
1.200000 2.605422 2.846486
1.300000 2.711809 2.734816
1.400000 2.814178 2.635334
1.500000 2.912951 2.545975
1.600000 3.008482 2.465129
1.700000 3.101073 2.391527
1.800000 3.190978 2.324146
1.900000 3.278418 2.262158
2.000000 3.363586 2.204879
2.100000 3.446650 2.151741
2.200000 3.527758 2.102269
2.300000 3.607044 2.056060
2.400000 3.684623 2.012770
2.500000 3.760603 1.972104
2.600000 3.835078 1.933807
2.700000 3.908133 1.897658
2.800000 3.979848 1.863463
2.900000 4.050293 1.831052
3.000000 4.119534 1.800276
3.100000 4.187629 1.771001
3.200000 4.254637 1.743110
3.300000 4.320604 1.716496
3.400000 4.385579 1.691065
3.500000 4.449606 1.666732
3.600000 4.512724 1.643420
3.700000 4.574971 1.621059
3.800000 4.636383 1.599587
3.900000 4.696992 1.578947
4.000000 4.756828 1.559085
4.100000 4.815922 1.539954
4.200000 4.874298 1.521511
4.300000 4.931985 1.503715
4.400000 4.989004 1.486529
4.500000 5.045378 1.469919
4.600000 5.101130 1.453854
4.700000 5.156279 1.438304
4.800000 5.210844 1.423243
4.900000 5.264844 1.408645
5.000000 5.318296 1.394488
5.100000 5.371215 1.380749
5.200000 5.423619 1.367408
5.300000 5.475521 1.354446
5.400000 5.526935 1.341847
5.500000 5.577876 1.329592
5.600000 5.628355 1.317667
5.700000 5.678386 1.306057
5.800000 5.727980 1.294749
5.900000 5.777148 1.283730
6.000000 5.825901 1.272987
6.100000 5.874249 1.262510
6.200000 5.922204 1.252287
6.300000 5.969772 1.242308
6.400000 6.016965 1.232565
6.500000 6.063790 1.223047
6.600000 6.110257 1.213746
6.700000 6.156373 1.204654
6.800000 6.202146 1.195763
6.900000 6.247583 1.187067
7.000000 6.292693 1.178557
7.100000 6.337481 1.170228
7.200000 6.381955 1.162073
7.300000 6.426121 1.154086
7.400000 6.469986 1.146262
7.500000 6.513556 1.138595
7.600000 6.556836 1.131079
7.700000 6.599832 1.123710
7.800000 6.642549 1.116484
7.900000 6.684994 1.109395
8.000000 6.727171 1.102439
8.100000 6.769086 1.095613
8.200000 6.810742 1.088912
8.300000 6.852144 1.082332
8.400000 6.893299 1.075871
8.500000 6.934209 1.069523
8.600000 6.974880 1.063287
8.700000 7.015314 1.057158
8.800000 7.055517 1.051135
8.900000 7.095492 1.045213
9.000000 7.135243 1.039390
9.100000 7.174773 1.033663
9.200000 7.214088 1.028030
9.300000 7.253188 1.022488
9.400000 7.292080 1.017035
9.500000 7.330764 1.011668
9.600000 7.369247 1.006385
9.700000 7.407529 1.001184
9.800000 7.445614 0.996063
9.900000 7.483506 0.991019
10.000000 7.521206 0.986052
10.100000 7.558719 0.981158
10.200000 7.596046 0.976337
10.300000 7.633191 0.971586
10.400000 7.670155 0.966903
10.500000 7.706943 0.962288
10.600000 7.743556 0.957738
10.700000 7.779996 0.953252
10.800000 7.816267 0.948829
10.900000 7.852370 0.944466
11.000000 7.888307 0.940163

Binary file not shown.

View File

@ -0,0 +1,10 @@
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level='asInvoker' uiAccess='false' />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,10 @@
--# Initial conditions --
--dddddd.ddd- INITIAL X -----------------------
0.0
--dddddd.ddd- INITIAL VX ----------------------
1.0
--# Other settings --
--#d.dddE#dd-- DT(TIME STEP) ------------------
1.0E-3
--dddddd.ddd- ALPHA ----------------------
3.0

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,233 @@
# Veusz saved document (version 3.4)
# Saved at 2022-10-09T09:28:28.934110
SetCompatLevel(1)
AddImportPath('C:\\Users\\flyingPoint\\Documents\\Visual Studio 2010\\Projects\\computer-hw2-1\\computer-hw2-1')
ImportFile('AMPLITUDE-PERIOD_2-1.dat', '', ignoretext=True, linked=True, suffix='_21')
ImportFile('AMPLITUDE-PERIOD_2-2.dat', '', ignoretext=True, linked=True, suffix='_22')
ImportFile('data_problem_2-1.dat', '', ignoretext=True, linked=True)
ImportFile('data_problem_2-2.dat', '', ignoretext=True, linked=True, suffix='_2')
Set('colorTheme', 'default-latest')
Set('StyleSheet/axis-function/autoRange', 'next-tick')
Add('page', name='P2-1-XT-VT', autoadd=False)
To('P2-1-XT-VT')
Set('width', '14.174cm')
Set('height', '14.28cm')
Add('grid', name='grid1', autoadd=False)
To('grid1')
Set('leftMargin', '0.261cm')
Set('rightMargin', '0.707cm')
Set('topMargin', '0.708cm')
Set('bottomMargin', '0.494cm')
Add('graph', name='graph1', autoadd=False)
To('graph1')
Add('axis', name='x', autoadd=False)
To('x')
Set('label', 'time')
Set('min', 0.0)
Set('max', 32.0)
To('..')
Add('axis', name='y', autoadd=False)
To('y')
Set('label', '\\textit{x} or \\textit{v_x}')
Set('min', -1.45)
Set('max', 1.055)
Set('direction', 'vertical')
To('..')
Add('xy', name='xy1', autoadd=False)
To('xy1')
Set('marker', 'none')
Set('xData', 'time')
Set('yData', 'x')
Set('key', '\\textit{x(t)}')
Set('PlotLine/width', '1.5pt')
To('..')
Add('xy', name='xy2', autoadd=False)
To('xy2')
Set('marker', 'none')
Set('xData', 'time')
Set('yData', 'vx')
Set('key', '\\textit{v(t)}')
Set('PlotLine/width', '1.5pt')
To('..')
Add('key', name='key1', autoadd=False)
To('key1')
Set('Border/hide', True)
Set('horzPosn', 'manual')
Set('vertPosn', 'manual')
Set('horzManual', 0.7160565476190476)
Set('vertManual', 0.03401785714285714)
To('..')
To('..')
To('..')
To('..')
Add('page', name='p2-1-vx-A-T', autoadd=False)
To('p2-1-vx-A-T')
Set('width', '21.307cm')
Set('height', '15.021cm')
Add('grid', name='grid1', autoadd=False)
To('grid1')
Set('leftMargin', '0.418cm')
Set('rightMargin', '11.557cm')
Set('topMargin', '1.935cm')
Set('bottomMargin', '1.32cm')
Add('graph', name='graph1', autoadd=False)
To('graph1')
Add('axis', name='x', autoadd=False)
To('x')
Set('label', '\\textit{v_x}')
To('..')
Add('axis', name='y', autoadd=False)
To('y')
Set('label', 'Amplitude')
Set('direction', 'vertical')
To('..')
Add('xy', name='xy1', autoadd=False)
To('xy1')
Set('marker', 'none')
Set('xData', 'vx_21')
Set('yData', 'AMPLITUDE_21')
Set('PlotLine/width', '1.5pt')
To('..')
To('..')
To('..')
Add('grid', name='grid2', autoadd=False)
To('grid2')
Set('leftMargin', '10.654cm')
Set('rightMargin', '0.834cm')
Set('topMargin', '1.936cm')
Set('bottomMargin', '1.129cm')
Add('graph', name='graph1', autoadd=False)
To('graph1')
Add('axis', name='x', autoadd=False)
To('x')
Set('label', 'Amplitude')
To('..')
Add('axis', name='y', autoadd=False)
To('y')
Set('label', 'Period')
Set('min', 3.0)
Set('max', 3.336)
Set('direction', 'vertical')
To('..')
Add('xy', name='xy1', autoadd=False)
To('xy1')
Set('marker', 'none')
Set('xData', 'AMPLITUDE_21')
Set('yData', 'PERIOD_21')
Set('PlotLine/width', '2.5pt')
To('..')
To('..')
To('..')
To('..')
Add('page', name='p2-2-xt-vt', autoadd=False)
To('p2-2-xt-vt')
Set('width', '14.174cm')
Set('height', '14.28cm')
Add('grid', name='grid1', autoadd=False)
To('grid1')
Set('leftMargin', '0.261cm')
Set('rightMargin', '0.707cm')
Set('topMargin', '0.708cm')
Set('bottomMargin', '0.494cm')
Add('graph', name='graph1', autoadd=False)
To('graph1')
Add('axis', name='x', autoadd=False)
To('x')
Set('label', 'time')
Set('min', 0.0)
Set('max', 63.0)
To('..')
Add('axis', name='y', autoadd=False)
To('y')
Set('label', '\\textit{x} or \\textit{v_x}')
Set('min', -1.718)
Set('max', 1.31)
Set('direction', 'vertical')
To('..')
Add('xy', name='xy1', autoadd=False)
To('xy1')
Set('marker', 'none')
Set('xData', 'time_2')
Set('yData', 'x_2')
Set('key', '\\textit{x(t)}')
Set('PlotLine/width', '1.5pt')
To('..')
Add('xy', name='xy2', autoadd=False)
To('xy2')
Set('marker', 'none')
Set('xData', 'time')
Set('yData', 'vx_2')
Set('key', '\\textit{v(t)}')
Set('PlotLine/width', '1.5pt')
To('..')
Add('key', name='key1', autoadd=False)
To('key1')
Set('Border/hide', True)
Set('horzPosn', 'right')
Set('vertPosn', 'bottom')
Set('horzManual', 0.0)
Set('vertManual', 0.0)
To('..')
To('..')
To('..')
To('..')
Add('page', name='p2-2-vx-A-T', autoadd=False)
To('p2-2-vx-A-T')
Set('width', '21.307cm')
Set('height', '15.021cm')
Add('grid', name='grid1', autoadd=False)
To('grid1')
Set('leftMargin', '0.418cm')
Set('rightMargin', '11.557cm')
Set('topMargin', '1.935cm')
Set('bottomMargin', '1.32cm')
Add('graph', name='graph1', autoadd=False)
To('graph1')
Add('axis', name='x', autoadd=False)
To('x')
Set('label', '\\textit{v_x}')
To('..')
Add('axis', name='y', autoadd=False)
To('y')
Set('label', 'Amplitude')
Set('direction', 'vertical')
To('..')
Add('xy', name='xy1', autoadd=False)
To('xy1')
Set('marker', 'none')
Set('xData', 'vx_22')
Set('yData', 'AMPLITUDE_22')
Set('PlotLine/width', '2.5pt')
To('..')
To('..')
To('..')
Add('grid', name='grid2', autoadd=False)
To('grid2')
Set('leftMargin', '10.654cm')
Set('rightMargin', '0.834cm')
Set('topMargin', '1.936cm')
Set('bottomMargin', '1.129cm')
Add('graph', name='graph1', autoadd=False)
To('graph1')
Add('axis', name='x', autoadd=False)
To('x')
Set('label', 'Amplitude')
To('..')
Add('axis', name='y', autoadd=False)
To('y')
Set('label', 'Period')
Set('min', 'Auto')
Set('max', 'Auto')
Set('direction', 'vertical')
To('..')
Add('xy', name='xy1', autoadd=False)
To('xy1')
Set('marker', 'none')
Set('xData', 'AMPLITUDE_22')
Set('yData', 'PERIOD_22')
Set('PlotLine/width', '2.5pt')
To('..')
To('..')
To('..')
To('..')

Binary file not shown.

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject ProjectCreator="Intel Fortran" Keyword="Console Application" Version="11.0" ProjectIdGuid="{E7E149AA-965F-4DBF-AE30-3D403FA464CA}">
<Platforms>
<Platform Name="Win32"/></Platforms>
<Configurations>
<Configuration Name="Debug|Win32">
<Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" DebugInformationFormat="debugEnabled" Optimization="optimizeDisabled" WarnInterfaces="true" Traceback="true" BoundsCheck="true" RuntimeLibrary="rtMultiThreadedDebug"/>
<Tool Name="VFLinkerTool" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" GenerateDebugInformation="true" SubSystem="subSystemConsole"/>
<Tool Name="VFResourceCompilerTool"/>
<Tool Name="VFMidlTool" SuppressStartupBanner="true"/>
<Tool Name="VFCustomBuildTool"/>
<Tool Name="VFPreLinkEventTool"/>
<Tool Name="VFPreBuildEventTool"/>
<Tool Name="VFPostBuildEventTool"/>
<Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration>
<Configuration Name="Release|Win32">
<Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true"/>
<Tool Name="VFLinkerTool" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" SubSystem="subSystemConsole"/>
<Tool Name="VFResourceCompilerTool"/>
<Tool Name="VFMidlTool" SuppressStartupBanner="true"/>
<Tool Name="VFCustomBuildTool"/>
<Tool Name="VFPreLinkEventTool"/>
<Tool Name="VFPreBuildEventTool"/>
<Tool Name="VFPostBuildEventTool"/>
<Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration></Configurations>
<Files>
<Filter Name="Header Files" Filter="fi;fd"/>
<Filter Name="Resource Files" Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"/>
<Filter Name="Source Files" Filter="f90;for;f;fpp;ftn;def;odl;idl">
<File RelativePath=".\INPUT.dat"/>
<File RelativePath=".\main.f90"/>
<File RelativePath=".\my_methods.f90"/>
<File RelativePath=".\my_parameters.f90"/></Filter></Files>
<Globals/></VisualStudioProject>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,9 @@
PROGRAM MAIN
USE MY_METHODS
IMPLICIT NONE
CALL GET_PROBLEM_21
PRINT*, "-----"
END PROGRAM

View File

@ -0,0 +1,228 @@
MODULE MY_METHODS
IMPLICIT NONE
CONTAINS
!4th RUNGE-KUTTA Method
SUBROUTINE RUNGE(NEQ,X,Y,H)
INTEGER :: NEQ, I
REAL*8 :: X, H
REAL*8 :: Y(NEQ),DELTAY1(NEQ),DELTAY2(NEQ),DELTAY3(NEQ),&
DELTAY4(NEQ),Z(NEQ)
!FIRST STEP
DO I = 1, NEQ
Z(I) = Y(I)
END DO
CALL FUNC_RK(NEQ,X,Z,DELTAY1,H)
!SECOND STEP
DO I = 1, NEQ
Z(I) = Y(I) + DELTAY1(I) / 2.
END DO
X = X + H / 2.
CALL FUNC_RK(NEQ,X,Z,DELTAY2,H)
!THIRD STEP
DO I = 1, NEQ
Z(I) = Y(I) + DELTAY2(I) / 2.
END DO
CALL FUNC_RK(NEQ,X,Z,DELTAY3,H)
!FOURTH STEP
DO I = 1, NEQ
Z(I) = Y(I) + DELTAY3(I)
END DO
X = X + H / 2.
CALL FUNC_RK(NEQ,X,Z,DELTAY4,H)
!SUMMARY
DO I = 1, NEQ
Y(I) = Y(I) + (DELTAY1(I) + 2D0*DELTAY2(I) + 2D0*DELTAY3(I) + &
DELTAY4(I)) / 6D0
END DO
RETURN
END SUBROUTINE RUNGE
SUBROUTINE FUNC_RK(NEQ,X,Y,DELTAY,H)
USE MY_PARAMETERS, ONLY: OMEGA, ALPHA
INTEGER :: NEQ
REAL*8 :: X, H
REAL*8 :: Y(NEQ),DELTAY(NEQ)
DELTAY(1) = (Y(2)) * H
DELTAY(2) = (-OMEGA**2 * Y(1)**ALPHA) * H
END SUBROUTINE
SUBROUTINE GET_INPUT
USE MY_PARAMETERS
IMPLICIT NONE
CHARACTER (77) :: BUF
LOGICAL exist
INQUIRE(FILE="INPUT.dat", EXIST=exist)
OPEN(9, FILE="INPUT.dat")
IF(exist) THEN
READ (9, '(A77)') buf !--# Initial conditions --
READ (9, '(A77)') buf !--dddddd.ddd- INITIAL X ----
READ (9, '(2x,f10.3)') X0
READ (9, '(A77)') buf !--dddddd.ddd- INITIAL VX ----
READ (9, '(2x,f10.3)') VX0
READ (9, '(A77)') buf !--# Other settings --
READ (9, '(A77)') buf !--#d.dddE#dd-- DT(TIME STEP) ----
READ (9, '(2x,e10.3)') DT
READ (9, '(A77)') buf !--dddddd.ddd- ALPHA ----
READ (9, '(2x,f10.3)') ALPHA
ELSE
PRINT*, "Input file NOT FOUND! Defaulted values used."
! # Initial conditions ---
X0 = 0D0
VX0 = 1D0
! # Other settings ---
DT = 1D-3
ALPHA = 1D0
END IF
RETURN
END SUBROUTINE
SUBROUTINE GET_PROBLEM_21
USE MY_PARAMETERS
IMPLICIT NONE
REAL*8 :: TIME, Y(2)
INTEGER :: NEQ
! to calculate the period
INTEGER, PARAMETER :: MAX_PERIODS = 50
REAL*8 :: TIME_OLD, VX_OLD
REAL*8 :: PERIOD(MAX_PERIODS), LOOP(MAX_PERIODS-1)
INTEGER :: INDEX_PERIOD, I
REAL*8 :: PERIOD_AVERAGE
! to calculate the amplitude
REAL*8 :: X_MAX, X_MIN, AMPLITUDE
NEQ = 2
CALL GET_INPUT
Y(1) = X0
Y(2) = VX0
TIME = 0D0
INDEX_PERIOD = 0
OPEN(UNIT=91, FILE="data_problem_2-2.dat")
WRITE(91, 100) "descriptor","time","x","vx"
WRITE(91,200) " ",TIME,Y(1),Y(2)
DO WHILE (INDEX_PERIOD .LT. MAX_PERIODS)
! TO CALCULATE PERIOD
VX_OLD = Y(2)
TIME_OLD = TIME
CALL RUNGE(NEQ,TIME,Y,DT)
WRITE(91,200) " ",TIME,Y(1),Y(2)
! TO CALCULATE PERIOD
IF (Y(2)*VX_OLD .LT. 0) THEN
INDEX_PERIOD = INDEX_PERIOD + 1
! to get the time when the speed get zero
PERIOD(INDEX_PERIOD) = TIME_OLD - &
VX_OLD * (TIME - TIME_OLD)/(Y(2)-VX_OLD)
IF (INDEX_PERIOD .GT. 1) THEN
LOOP(INDEX_PERIOD - 1) = PERIOD(INDEX_PERIOD) - &
PERIOD(INDEX_PERIOD - 1)
END IF
END IF
END DO
CLOSE(91)
PERIOD_AVERAGE = SUM(LOOP) / SIZE(LOOP)
PRINT*, PERIOD_AVERAGE
! change vx0, and see the change of the period
OPEN(UNIT=92, FILE="AMPLITUDE-PERIOD_2-2.dat")
WRITE(92,100) "descriptor","vx","AMPLITUDE","PERIOD"
DO I=1,100
Y(1) = X0
Y(2) = VX0+I/1D1
TIME = 0D0
INDEX_PERIOD = 0
X_MAX = X0
X_MIN = X0
DO WHILE (INDEX_PERIOD .LT. MAX_PERIODS)
! TO CALCULATE PERIOD
VX_OLD = Y(2)
TIME_OLD = TIME
! TO CALCULATE AMPLITUDE
IF (Y(1) .GT. X_MAX) THEN
X_MAX = Y(1)
END IF
IF (Y(1) .LT. X_MIN) THEN
X_MIN = Y(1)
END IF
CALL RUNGE(NEQ,TIME,Y,DT)
WRITE(91,200) " ",TIME,Y(1),Y(2)
! TO CALCULATE PERIOD
IF (Y(2)*VX_OLD .LT. 0) THEN
INDEX_PERIOD = INDEX_PERIOD + 1
! to get the time when the speed gets zero
PERIOD(INDEX_PERIOD) = TIME_OLD - &
VX_OLD * (TIME - TIME_OLD)/(Y(2)-VX_OLD)
IF (INDEX_PERIOD .GT. 1) THEN
LOOP(INDEX_PERIOD - 1) = PERIOD(INDEX_PERIOD) - &
PERIOD(INDEX_PERIOD - 1)
END IF
END IF
END DO
PERIOD_AVERAGE = SUM(LOOP) / SIZE(LOOP)
AMPLITUDE = X_MAX - X_MIN
WRITE(*,'("A = ",F12.6, ", T = ",F12.6)') &
AMPLITUDE, PERIOD_AVERAGE
WRITE(92,200) " ",VX0+I/1D1,AMPLITUDE,PERIOD_AVERAGE
END DO
CLOSE(92)
! FORMATS
100 FORMAT(4(A12,2x))
200 FORMAT(A12, 2x, 3(F12.6,2x))
END SUBROUTINE
END MODULE

View File

@ -0,0 +1,13 @@
MODULE MY_PARAMETERS
IMPLICIT NONE
REAL*8, PARAMETER :: OMEGA = 1D0
REAL*8 :: X0,VX0
REAL*8 :: DT
REAL*8 :: ALPHA
END MODULE

View File

@ -0,0 +1,20 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{6989167D-11E4-40FE-8C1A-2192A86A7E90}") = "computer-hw2-2", "computer-hw2-2\computer-hw2-2.vfproj", "{D0785D61-C7AE-4628-95B8-6810AFCC8157}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D0785D61-C7AE-4628-95B8-6810AFCC8157}.Debug|Win32.ActiveCfg = Debug|Win32
{D0785D61-C7AE-4628-95B8-6810AFCC8157}.Debug|Win32.Build.0 = Debug|Win32
{D0785D61-C7AE-4628-95B8-6810AFCC8157}.Release|Win32.ActiveCfg = Release|Win32
{D0785D61-C7AE-4628-95B8-6810AFCC8157}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

Binary file not shown.

View File

@ -0,0 +1,101 @@
descriptor vx AMPLITUDE PERIOD
1.100000 1.890373 3.145527
1.200000 2.062225 3.145527
1.300000 2.234077 3.145527
1.400000 2.405929 3.145527
1.500000 2.577781 3.145527
1.600000 2.749633 3.145527
1.700000 2.921485 3.145527
1.800000 3.093337 3.145527
1.900000 3.265189 3.145527
2.000000 3.437041 3.145527
2.100000 3.608893 3.145527
2.200000 3.780745 3.145527
2.300000 3.952597 3.145527
2.400000 4.124449 3.145527
2.500000 4.296301 3.145527
2.600000 4.468153 3.145527
2.700000 4.640005 3.145527
2.800000 4.811857 3.145527
2.900000 4.983710 3.145527
3.000000 5.155562 3.145527
3.100000 5.327414 3.145527
3.200000 5.499266 3.145527
3.300000 5.671118 3.145527
3.400000 5.842970 3.145527
3.500000 6.014822 3.145527
3.600000 6.186674 3.145527
3.700000 6.358526 3.145527
3.800000 6.530378 3.145527
3.900000 6.702230 3.145527
4.000000 6.874082 3.145527
4.100000 7.045934 3.145527
4.200000 7.217786 3.145527
4.300000 7.389638 3.145527
4.400000 7.561490 3.145527
4.500000 7.733342 3.145527
4.600000 7.905194 3.145527
4.700000 8.077047 3.145527
4.800000 8.248899 3.145527
4.900000 8.420751 3.145527
5.000000 8.592603 3.145527
5.100000 8.764455 3.145527
5.200000 8.936307 3.145527
5.300000 9.108159 3.145527
5.400000 9.280011 3.145527
5.500000 9.451863 3.145527
5.600000 9.623715 3.145527
5.700000 9.795567 3.145527
5.800000 9.967419 3.145527
5.900000 10.139271 3.145527
6.000000 10.311123 3.145527
6.100000 10.482975 3.145527
6.200000 10.654827 3.145527
6.300000 10.826679 3.145527
6.400000 10.998531 3.145527
6.500000 11.170383 3.145527
6.600000 11.342236 3.145527
6.700000 11.514088 3.145527
6.800000 11.685940 3.145527
6.900000 11.857792 3.145527
7.000000 12.029644 3.145527
7.100000 12.201496 3.145527
7.200000 12.373348 3.145527
7.300000 12.545200 3.145527
7.400000 12.717052 3.145527
7.500000 12.888904 3.145527
7.600000 13.060756 3.145527
7.700000 13.232608 3.145527
7.800000 13.404460 3.145527
7.900000 13.576312 3.145527
8.000000 13.748164 3.145527
8.100000 13.920016 3.145527
8.200000 14.091868 3.145527
8.300000 14.263720 3.145527
8.400000 14.435572 3.145527
8.500000 14.607425 3.145527
8.600000 14.779277 3.145527
8.700000 14.951129 3.145527
8.800000 15.122981 3.145527
8.900000 15.294833 3.145527
9.000000 15.466685 3.145527
9.100000 15.638537 3.145527
9.200000 15.810389 3.145527
9.300000 15.982241 3.145527
9.400000 16.154093 3.145527
9.500000 16.325945 3.145527
9.600000 16.497797 3.145527
9.700000 16.669649 3.145527
9.800000 16.841501 3.145527
9.900000 17.013353 3.145527
10.000000 17.185205 3.145527
10.100000 17.357057 3.145527
10.200000 17.528909 3.145527
10.300000 17.700762 3.145527
10.400000 17.872614 3.145527
10.500000 18.044466 3.145527
10.600000 18.216318 3.145527
10.700000 18.388170 3.145527
10.800000 18.560022 3.145527
10.900000 18.731874 3.145527
11.000000 18.903726 3.145527

Binary file not shown.

View File

@ -0,0 +1,10 @@
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level='asInvoker' uiAccess='false' />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,16 @@
--# Initial conditions --
--dddddd.ddd- INITIAL X -----------------------
0.0
--dddddd.ddd- INITIAL VX ----------------------
1.0
--# Other settings --
--#d.dddE#dd-- DT(TIME STEP) ------------------
1.0E-3
--dddddd.ddd- ALPHA ----------------------
3.0
--dddddd.ddd- GAMMA ----------------------
0.1
--dddddd.ddd- H (FORCE) ------------------
1.0
--dddddd.ddd- OMEGA (FORCE) --------------
1.0

View File

@ -0,0 +1,151 @@
descriptor OMEGA AMPLITUDE
0.510000 3.305108
0.520000 3.336526
0.530000 3.341346
0.540000 3.251872
0.550000 3.274194
0.560000 3.184650
0.570000 3.228674
0.580000 3.353603
0.590000 3.362552
0.600000 3.310125
0.610000 3.313259
0.620000 3.323300
0.630000 3.352510
0.640000 3.350216
0.650000 3.377983
0.660000 3.396924
0.670000 3.413946
0.680000 3.366656
0.690000 3.322554
0.700000 3.333375
0.710000 3.343784
0.720000 3.353791
0.730000 3.364704
0.740000 3.399799
0.750000 3.420074
0.760000 3.416064
0.770000 3.398094
0.780000 3.405861
0.790000 3.440897
0.800000 3.493484
0.810000 3.544634
0.820000 3.592710
0.830000 3.635622
0.840000 3.670746
0.850000 3.695027
0.860000 3.705443
0.870000 3.699733
0.880000 3.677786
0.890000 3.642866
0.900000 3.604978
0.910000 3.573215
0.920000 3.552358
0.930000 3.564774
0.940000 3.594691
0.950000 3.623527
0.960000 3.651314
0.970000 3.678080
0.980000 3.703850
0.990000 3.728646
1.000000 3.752491
1.010000 3.775400
1.020000 3.797392
1.030000 3.818483
1.040000 3.838685
1.050000 3.858009
1.060000 3.876471
1.070000 3.894078
1.080000 3.910839
1.090000 3.926762
1.100000 3.941854
1.110000 3.956124
1.120000 3.969574
1.130000 3.982209
1.140000 3.994036
1.150000 4.005056
1.160000 4.015271
1.170000 4.024686
1.180000 4.033300
1.190000 4.042319
1.200000 4.052543
1.210000 4.079429
1.220000 4.111731
1.230000 4.142599
1.240000 4.172030
1.250000 4.200021
1.260000 4.226561
1.270000 4.251644
1.280000 4.275254
1.290000 4.297377
1.300000 4.317997
1.310000 4.337096
1.320000 4.354647
1.330000 4.370629
1.340000 4.385017
1.350000 4.397776
1.360000 4.408877
1.370000 4.418283
1.380000 4.425956
1.390000 4.455094
1.400000 4.489389
1.410000 4.521289
1.420000 4.550697
1.430000 4.577499
1.440000 4.601571
1.450000 4.622779
1.460000 4.640964
1.470000 4.655959
1.480000 4.667572
1.490000 4.675590
1.500000 4.684178
1.510000 4.723467
1.520000 4.758113
1.530000 4.787598
1.540000 4.811308
1.550000 4.828522
1.560000 4.838363
1.570000 4.839782
1.580000 4.874657
1.590000 4.911870
1.600000 4.935846
1.610000 4.942905
1.620000 4.952144
1.630000 4.997062
1.640000 5.002942
1.650000 5.034784
1.660000 5.033803
1.670000 5.075859
1.680000 3.447818
1.690000 3.316096
1.700000 3.233659
1.710000 3.186633
1.720000 3.137806
1.730000 3.087113
1.740000 3.034485
1.750000 2.979849
1.760000 2.925641
1.770000 2.929076
1.780000 2.917472
1.790000 2.879450
1.800000 2.863713
1.810000 2.847809
1.820000 2.831740
1.830000 2.815510
1.840000 2.799120
1.850000 2.782574
1.860000 2.765875
1.870000 2.749026
1.880000 2.732029
1.890000 2.723076
1.900000 2.732507
1.910000 2.719822
1.920000 2.681927
1.930000 2.652420
1.940000 2.627199
1.950000 2.609296
1.960000 2.591286
1.970000 2.573174
1.980000 2.554968
1.990000 2.536676
2.000000 2.518306

View File

@ -0,0 +1,101 @@
descriptor OMEGA AMPLITUDE
0.100000 2.825449
0.200000 3.055030
0.300000 3.141017
0.400000 3.278995
0.500000 3.292963
0.600000 3.310125
0.700000 3.333375
0.800000 3.493484
0.900000 3.604978
1.000000 3.752491
1.100000 3.941854
1.200000 4.052543
1.300000 4.317997
1.400000 4.489389
1.500000 4.684178
1.600000 4.935846
1.700000 3.233659
1.800000 2.863713
1.900000 2.732507
2.000000 2.518306
2.100000 2.333192
2.200000 2.299223
2.300000 2.426793
2.400000 2.458688
2.500000 2.415765
2.600000 2.322769
2.700000 2.206070
2.800000 2.087607
2.900000 1.981122
3.000000 2.012777
3.100000 2.067932
3.200000 2.102075
3.300000 2.122883
3.400000 2.134345
3.500000 2.138514
3.600000 2.136506
3.700000 2.129055
3.800000 2.116860
3.900000 2.100855
4.000000 2.082753
4.100000 2.068104
4.200000 2.058189
4.300000 2.047275
4.400000 2.043152
4.500000 2.088086
4.600000 2.127264
4.700000 2.158399
4.800000 2.181132
4.900000 2.195708
5.000000 2.202693
5.100000 2.202844
5.200000 2.197047
5.300000 2.186287
5.400000 2.171670
5.500000 2.154557
5.600000 2.137239
5.700000 2.143487
5.800000 2.161239
5.900000 2.175302
6.000000 2.184881
6.100000 2.189923
6.200000 2.190651
6.300000 2.187422
6.400000 2.180673
6.500000 2.170907
6.600000 2.158709
6.700000 2.144821
6.800000 2.130463
6.900000 2.125749
7.000000 2.134358
7.100000 2.141587
7.200000 2.146471
7.300000 2.148779
7.400000 2.148527
7.500000 2.145860
7.600000 2.141011
7.700000 2.134292
7.800000 2.126120
7.900000 2.117079
8.000000 2.108152
8.100000 2.101597
8.200000 2.110601
8.300000 2.120664
8.400000 2.129563
8.500000 2.136740
8.600000 2.141991
8.700000 2.145271
8.800000 2.146629
8.900000 2.146178
9.000000 2.144092
9.100000 2.140618
9.200000 2.136133
9.300000 2.131408
9.400000 2.133446
9.500000 2.140157
9.600000 2.145981
9.700000 2.150430
9.800000 2.153354
9.900000 2.154726
10.000000 2.154583

View File

@ -0,0 +1,41 @@
descriptor OMEGA AMPLITUDE
0.905000 12.085499
0.910000 12.422363
0.915000 12.740557
0.920000 13.099505
0.925000 13.457396
0.930000 13.859707
0.935000 14.270755
0.940000 14.704798
0.945000 15.167957
0.950000 15.660081
0.955000 16.176160
0.960000 16.714228
0.965000 17.273636
0.970000 17.845065
0.975000 18.415615
0.980000 18.961048
0.985000 19.442496
0.990000 19.804405
0.995000 19.993648
1.000000 19.991937
1.005000 19.797459
1.010000 19.422543
1.015000 18.902529
1.020000 18.299116
1.025000 17.659022
1.030000 17.014179
1.035000 16.381118
1.040000 15.770871
1.045000 15.186660
1.050000 14.634482
1.055000 14.110685
1.060000 13.615959
1.065000 13.146414
1.070000 12.702318
1.075000 12.294442
1.080000 11.890654
1.085000 11.532959
1.090000 11.167810
1.095000 10.851848
1.100000 10.535632

View File

@ -0,0 +1,286 @@
# Veusz saved document (version 3.4)
# Saved at 2022-10-14T15:52:01.836444
SetCompatLevel(1)
AddImportPath('C:\\Users\\flyingPoint\\Documents\\visual studio 2010\\Projects\\computer-hw2-2\\computer-hw2-2')
ImportFile('../../../../Visual Studio 2010/Projects/computer-hw2-2/computer-hw2-2/AMPLITUDE-PERIOD_22-2.dat', '', ignoretext=True, linked=True, suffix='_21')
ImportFile('../../../../Visual Studio 2010/Projects/computer-hw2-2/computer-hw2-2/OMEGA-AMPLITUDE_22-2_withForce.dat', '', ignoretext=True, linked=True, suffix='_ALPHA1')
ImportFile('../../../../Visual Studio 2010/Projects/computer-hw2-2/computer-hw2-2/OMEGA-AMPLITUDE_22-2_withForce-alpha3-fine.dat', '', ignoretext=True, linked=True, suffix='_ALPHA3_fine')
ImportFile('../../../../Visual Studio 2010/Projects/computer-hw2-2/computer-hw2-2/OMEGA-AMPLITUDE_22-2_withForce-alpha3.dat', '', ignoretext=True, linked=True, suffix='_ALPHA3_rough')
ImportFile('../../../../Visual Studio 2010/Projects/computer-hw2-2/computer-hw2-2/data_problem_22.dat', '', ignoretext=True, linked=True)
ImportFile('../../../../Visual Studio 2010/Projects/computer-hw2-2/computer-hw2-2/data_problem_22_withForce.dat', '', ignoretext=True, linked=True, suffix='_WITH_FORCE')
Set('colorTheme', 'default-latest')
Set('StyleSheet/axis-function/autoRange', 'next-tick')
Add('page', name='P2-2-XT-VT-NOFORCE-ALPHA1', autoadd=False)
To('P2-2-XT-VT-NOFORCE-ALPHA1')
Set('width', '14.174cm')
Set('height', '14.28cm')
Add('grid', name='grid1', autoadd=False)
To('grid1')
Set('leftMargin', '0.261cm')
Set('rightMargin', '0.707cm')
Set('topMargin', '0.708cm')
Set('bottomMargin', '0.494cm')
Add('graph', name='graph1', autoadd=False)
To('graph1')
Add('axis', name='x', autoadd=False)
To('x')
Set('label', 'time')
Set('min', 0.0)
Set('max', 32.0)
To('..')
Add('axis', name='y', autoadd=False)
To('y')
Set('label', '\\textit{x} or \\textit{v_x}')
Set('min', -1.45)
Set('max', 1.055)
Set('direction', 'vertical')
To('..')
Add('xy', name='xy1', autoadd=False)
To('xy1')
Set('marker', 'none')
Set('xData', 'time')
Set('yData', 'x')
Set('key', '\\textit{x(t)}')
Set('PlotLine/width', '1.5pt')
To('..')
Add('xy', name='xy2', autoadd=False)
To('xy2')
Set('marker', 'none')
Set('xData', 'time')
Set('yData', 'vx')
Set('key', '\\textit{v(t)}')
Set('PlotLine/color', '#0055ff')
Set('PlotLine/width', '1.5pt')
To('..')
Add('key', name='key1', autoadd=False)
To('key1')
Set('Border/hide', True)
Set('horzPosn', 'manual')
Set('vertPosn', 'manual')
Set('horzManual', 0.7160565476190476)
Set('vertManual', 0.03401785714285714)
To('..')
To('..')
To('..')
To('..')
Add('page', name='P2-2-NOFORCE-ALPHA1-vx-A-T', autoadd=False)
To('P2-2-NOFORCE-ALPHA1-vx-A-T')
Set('width', '21.307cm')
Set('height', '15.021cm')
Add('grid', name='grid1', autoadd=False)
To('grid1')
Set('leftMargin', '0.418cm')
Set('rightMargin', '11.557cm')
Set('topMargin', '1.935cm')
Set('bottomMargin', '1.32cm')
Add('graph', name='graph1', autoadd=False)
To('graph1')
Add('axis', name='x', autoadd=False)
To('x')
Set('label', '\\textit{v_x}')
To('..')
Add('axis', name='y', autoadd=False)
To('y')
Set('label', 'Amplitude')
Set('direction', 'vertical')
To('..')
Add('xy', name='xy1', autoadd=False)
To('xy1')
Set('marker', 'none')
Set('xData', 'vx_21')
Set('yData', 'AMPLITUDE_21')
Set('PlotLine/width', '1.5pt')
To('..')
To('..')
To('..')
Add('grid', name='grid2', autoadd=False)
To('grid2')
Set('leftMargin', '10.654cm')
Set('rightMargin', '0.834cm')
Set('topMargin', '1.936cm')
Set('bottomMargin', '1.129cm')
Add('graph', name='graph1', autoadd=False)
To('graph1')
Add('axis', name='x', autoadd=False)
To('x')
Set('label', 'Amplitude')
To('..')
Add('axis', name='y', autoadd=False)
To('y')
Set('label', 'Period')
Set('min', 3.0)
Set('max', 3.336)
Set('direction', 'vertical')
To('..')
Add('xy', name='xy1', autoadd=False)
To('xy1')
Set('marker', 'none')
Set('xData', 'AMPLITUDE_21')
Set('yData', 'PERIOD_21')
Set('PlotLine/width', '2.5pt')
To('..')
To('..')
To('..')
To('..')
Add('page', name='p2-2-xt-vt-FORCE-ALPHA1', autoadd=False)
To('p2-2-xt-vt-FORCE-ALPHA1')
Set('width', '14.174cm')
Set('height', '14.28cm')
Add('grid', name='grid1', autoadd=False)
To('grid1')
Set('leftMargin', '0.261cm')
Set('rightMargin', '0.707cm')
Set('topMargin', '0.708cm')
Set('bottomMargin', '0.494cm')
Add('graph', name='graph1', autoadd=False)
To('graph1')
Add('axis', name='x', autoadd=False)
To('x')
Set('label', 'time')
Set('min', -2.220446049250313e-16)
Set('max', 166.7)
To('..')
Add('axis', name='y', autoadd=False)
To('y')
Set('label', '\\textit{x} or \\textit{v_x}')
Set('min', -14.15)
Set('max', 10.49)
Set('direction', 'vertical')
To('..')
Add('xy', name='xy1', autoadd=False)
To('xy1')
Set('marker', 'none')
Set('xData', 'time_WITH_FORCE')
Set('yData', 'x_WITH_FORCE')
Set('key', '\\textit{x(t)}')
Set('PlotLine/width', '1.5pt')
To('..')
Add('xy', name='xy2', autoadd=False)
To('xy2')
Set('marker', 'none')
Set('xData', 'time_WITH_FORCE')
Set('yData', 'vx_WITH_FORCE')
Set('key', '\\textit{v(t)}')
Set('PlotLine/color', '#00aaff')
Set('PlotLine/width', '1.5pt')
To('..')
Add('key', name='key1', autoadd=False)
To('key1')
Set('Border/hide', True)
Set('horzPosn', 'manual')
Set('vertPosn', 'manual')
Set('horzManual', 0.7318238103661775)
Set('vertManual', 0.03597840997196875)
To('..')
To('..')
To('..')
To('..')
Add('page', name='P2-2-OMEGA-A-FORCE-ALPHA1-rough-fine', autoadd=False)
To('P2-2-OMEGA-A-FORCE-ALPHA1-rough-fine')
Set('width', '14.174cm')
Set('height', '14.28cm')
Add('grid', name='grid1', autoadd=False)
To('grid1')
Set('leftMargin', '0.261cm')
Set('rightMargin', '0.707cm')
Set('topMargin', '0.708cm')
Set('bottomMargin', '0.494cm')
Add('graph', name='graph1', autoadd=False)
To('graph1')
Add('axis', name='x', autoadd=False)
To('x')
Set('label', '\\textit{\\omega}')
Set('min', 'Auto')
Set('max', 'Auto')
To('..')
Add('axis', name='y', autoadd=False)
To('y')
Set('label', 'Amplitude')
Set('min', 10.0)
Set('max', 20.17)
Set('direction', 'vertical')
To('..')
Add('xy', name='xy1', autoadd=False)
To('xy1')
Set('marker', 'none')
Set('xData', 'OMEGA_ALPHA1')
Set('yData', 'AMPLITUDE_ALPHA1')
Set('key', '\\textit{x(t)}')
Set('PlotLine/width', '1.5pt')
To('..')
To('..')
To('..')
To('..')
Add('page', name='p2-2-omega-A-alpha3-rough', autoadd=False)
To('p2-2-omega-A-alpha3-rough')
Set('width', '14.174cm')
Set('height', '14.28cm')
Add('grid', name='grid1', autoadd=False)
To('grid1')
Set('leftMargin', '0.261cm')
Set('rightMargin', '0.707cm')
Set('topMargin', '0.708cm')
Set('bottomMargin', '0.494cm')
Add('graph', name='graph1', autoadd=False)
To('graph1')
Add('axis', name='x', autoadd=False)
To('x')
Set('label', '\\textit{\\omega}')
Set('min', 'Auto')
Set('max', 'Auto')
To('..')
Add('axis', name='y', autoadd=False)
To('y')
Set('label', 'Amplitude')
Set('min', 'Auto')
Set('max', 'Auto')
Set('direction', 'vertical')
To('..')
Add('xy', name='xy1', autoadd=False)
To('xy1')
Set('marker', 'none')
Set('xData', 'OMEGA_ALPHA3_rough')
Set('yData', 'AMPLITUDE_ALPHA3_rough')
Set('key', '\\textit{x(t)}')
Set('PlotLine/width', '1.5pt')
To('..')
To('..')
To('..')
To('..')
Add('page', name='p2-2-omega-A-alpha3-fine', autoadd=False)
To('p2-2-omega-A-alpha3-fine')
Set('width', '14.174cm')
Set('height', '14.28cm')
Add('grid', name='grid1', autoadd=False)
To('grid1')
Set('leftMargin', '0.261cm')
Set('rightMargin', '0.707cm')
Set('topMargin', '0.708cm')
Set('bottomMargin', '0.494cm')
Add('graph', name='graph1', autoadd=False)
To('graph1')
Add('axis', name='x', autoadd=False)
To('x')
Set('label', '\\textit{\\omega}')
Set('min', 'Auto')
Set('max', 'Auto')
To('..')
Add('axis', name='y', autoadd=False)
To('y')
Set('label', 'Amplitude')
Set('min', 2.5)
Set('max', 5.14)
Set('direction', 'vertical')
To('..')
Add('xy', name='xy1', autoadd=False)
To('xy1')
Set('marker', 'none')
Set('xData', 'OMEGA_ALPHA3_fine')
Set('yData', 'AMPLITUDE_ALPHA3_fine')
Set('key', '\\textit{x(t)}')
Set('PlotLine/width', '1.5pt')
To('..')
To('..')
To('..')
To('..')

Binary file not shown.

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject ProjectCreator="Intel Fortran" Keyword="Console Application" Version="11.0" ProjectIdGuid="{D0785D61-C7AE-4628-95B8-6810AFCC8157}">
<Platforms>
<Platform Name="Win32"/></Platforms>
<Configurations>
<Configuration Name="Debug|Win32">
<Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" DebugInformationFormat="debugEnabled" Optimization="optimizeDisabled" WarnInterfaces="true" Traceback="true" BoundsCheck="true" RuntimeLibrary="rtMultiThreadedDebug"/>
<Tool Name="VFLinkerTool" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" GenerateDebugInformation="true" SubSystem="subSystemConsole"/>
<Tool Name="VFResourceCompilerTool"/>
<Tool Name="VFMidlTool" SuppressStartupBanner="true"/>
<Tool Name="VFCustomBuildTool"/>
<Tool Name="VFPreLinkEventTool"/>
<Tool Name="VFPreBuildEventTool"/>
<Tool Name="VFPostBuildEventTool"/>
<Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration>
<Configuration Name="Release|Win32">
<Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true"/>
<Tool Name="VFLinkerTool" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" SubSystem="subSystemConsole"/>
<Tool Name="VFResourceCompilerTool"/>
<Tool Name="VFMidlTool" SuppressStartupBanner="true"/>
<Tool Name="VFCustomBuildTool"/>
<Tool Name="VFPreLinkEventTool"/>
<Tool Name="VFPreBuildEventTool"/>
<Tool Name="VFPostBuildEventTool"/>
<Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration></Configurations>
<Files>
<Filter Name="Header Files" Filter="fi;fd"/>
<Filter Name="Resource Files" Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"/>
<Filter Name="Source Files" Filter="f90;for;f;fpp;ftn;def;odl;idl">
<File RelativePath=".\INPUT.dat"/>
<File RelativePath=".\main.f90"/>
<File RelativePath=".\my_methods.f90"/>
<File RelativePath=".\my_parameters.f90"/></Filter></Files>
<Globals/></VisualStudioProject>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,9 @@
PROGRAM MAIN
USE MY_METHODS
IMPLICIT NONE
CALL GET_PROBLEM_22_WITH_FORCE
PRINT*, "-----"
END PROGRAM

View File

@ -0,0 +1,376 @@
MODULE MY_METHODS
IMPLICIT NONE
CONTAINS
!4th RUNGE-KUTTA Method
SUBROUTINE RUNGE(NEQ,X,Y,H)
INTEGER :: NEQ, I
REAL*8 :: X, H
REAL*8 :: Y(NEQ),DELTAY1(NEQ),DELTAY2(NEQ),DELTAY3(NEQ),&
DELTAY4(NEQ),Z(NEQ)
!FIRST STEP
DO I = 1, NEQ
Z(I) = Y(I)
END DO
CALL FUNC_RK(NEQ,X,Z,DELTAY1,H)
!SECOND STEP
DO I = 1, NEQ
Z(I) = Y(I) + DELTAY1(I) / 2.
END DO
X = X + H / 2.
CALL FUNC_RK(NEQ,X,Z,DELTAY2,H)
!THIRD STEP
DO I = 1, NEQ
Z(I) = Y(I) + DELTAY2(I) / 2.
END DO
CALL FUNC_RK(NEQ,X,Z,DELTAY3,H)
!FOURTH STEP
DO I = 1, NEQ
Z(I) = Y(I) + DELTAY3(I)
END DO
X = X + H / 2.
CALL FUNC_RK(NEQ,X,Z,DELTAY4,H)
!SUMMARY
DO I = 1, NEQ
Y(I) = Y(I) + (DELTAY1(I) + 2D0*DELTAY2(I) + 2D0*DELTAY3(I) + &
DELTAY4(I)) / 6D0
END DO
RETURN
END SUBROUTINE RUNGE
SUBROUTINE FUNC_RK(NEQ,X,Y,DELTAY,H)
USE MY_PARAMETERS, ONLY: OMEGA_0,ALPHA,GAMMA &
,H_FORCE,OMEGA
INTEGER :: NEQ
REAL*8 :: X, H
REAL*8 :: Y(NEQ),DELTAY(NEQ)
DELTAY(1) = (Y(2)) * H
! WITHOUT FORCE:
! -OMEGA_0**2 * Y(1)**ALPHA - GAMMA*Y(2)
! WIHT FORCE:
! -OMEGA_0**2 * Y(1)**ALPHA - GAMMA*Y(2) + H_FORCE*DCOS(OMEGA*X)
DELTAY(2) = (-OMEGA_0**2 * Y(1)**ALPHA - GAMMA*Y(2) &
+ H_FORCE*DCOS(OMEGA*X) &
) * H
END SUBROUTINE
SUBROUTINE GET_INPUT
USE MY_PARAMETERS
IMPLICIT NONE
CHARACTER (77) :: BUF
LOGICAL exist
INQUIRE(FILE="INPUT.dat", EXIST=exist)
OPEN(9, FILE="INPUT.dat")
IF(exist) THEN
READ (9, '(A77)') buf !--# Initial conditions --
READ (9, '(A77)') buf !--dddddd.ddd- INITIAL X ----
READ (9, '(2x,f10.3)') X0
READ (9, '(A77)') buf !--dddddd.ddd- INITIAL VX ----
READ (9, '(2x,f10.3)') VX0
READ (9, '(A77)') buf !--# Other settings --
READ (9, '(A77)') buf !--#d.dddE#dd-- DT(TIME STEP) ----
READ (9, '(2x,e10.3)') DT
READ (9, '(A77)') buf !--dddddd.ddd- ALPHA ----
READ (9, '(2x,f10.3)') ALPHA
READ (9, '(A77)') buf !--dddddd.ddd- GAMMA ----
READ (9, '(2x,f10.3)') GAMMA
READ (9, '(A77)') buf !--dddddd.ddd- H (FORCE) ----
READ (9, '(2x,f10.3)') H_FORCE
READ (9, '(A77)') buf !--dddddd.ddd- OMEGA (FORCE) ----
READ (9, '(2x,f10.3)') OMEGA
ELSE
PRINT*, "Input file NOT FOUND! Defaulted values used."
! # Initial conditions ---
X0 = 0D0
VX0 = 1D0
! # Other settings ---
DT = 1D-3
ALPHA = 1D0
GAMMA = 1D-1
H_FORCE = 1D0
OMEGA = 1D0
END IF
RETURN
END SUBROUTINE
SUBROUTINE GET_PROBLEM_22
USE MY_PARAMETERS
IMPLICIT NONE
REAL*8 :: TIME, Y(2)
INTEGER :: NEQ
! to calculate the period
INTEGER, PARAMETER :: MAX_PERIODS = 50
REAL*8 :: TIME_OLD, VX_OLD
REAL*8 :: PERIOD(MAX_PERIODS), LOOP(MAX_PERIODS-1)
INTEGER :: INDEX_PERIOD, I
REAL*8 :: PERIOD_AVERAGE
! to calculate the amplitude
REAL*8 :: X_MAX, X_MIN, AMPLITUDE
NEQ = 2
CALL GET_INPUT
Y(1) = X0
Y(2) = VX0
TIME = 0D0
INDEX_PERIOD = 0
OPEN(UNIT=91, FILE="data_problem_22.dat")
WRITE(91, 100) "descriptor","time","x","vx"
WRITE(91,200) " ",TIME,Y(1),Y(2)
DO WHILE ((INDEX_PERIOD .LT. MAX_PERIODS) .AND. TIME < 1000)
! TO CALCULATE PERIOD
VX_OLD = Y(2)
TIME_OLD = TIME
CALL RUNGE(NEQ,TIME,Y,DT)
WRITE(91,200) " ",TIME,Y(1),Y(2)
! TO CALCULATE PERIOD
IF (Y(2)*VX_OLD .LT. 0) THEN
INDEX_PERIOD = INDEX_PERIOD + 1
! to get the time when the speed get zero
PERIOD(INDEX_PERIOD) = TIME_OLD - &
VX_OLD * (TIME - TIME_OLD)/(Y(2)-VX_OLD)
IF (INDEX_PERIOD .GT. 1) THEN
LOOP(INDEX_PERIOD - 1) = PERIOD(INDEX_PERIOD) - &
PERIOD(INDEX_PERIOD - 1)
END IF
END IF
END DO
CLOSE(91)
PERIOD_AVERAGE = SUM(LOOP) / SIZE(LOOP)
PRINT*, PERIOD_AVERAGE
! change vx0, and see the change of the period
OPEN(UNIT=92, FILE="AMPLITUDE-PERIOD_22-2.dat")
WRITE(92,100) "descriptor","vx","AMPLITUDE","PERIOD"
DO I=1,100
Y(1) = X0
Y(2) = VX0+I/1D1
TIME = 0D0
INDEX_PERIOD = 0
X_MAX = X0
X_MIN = X0
DO WHILE ((INDEX_PERIOD .LT. MAX_PERIODS) .AND. TIME < 1000)
! TO CALCULATE PERIOD
VX_OLD = Y(2)
TIME_OLD = TIME
! TO CALCULATE AMPLITUDE
IF (Y(1) .GT. X_MAX) THEN
X_MAX = Y(1)
END IF
IF (Y(1) .LT. X_MIN) THEN
X_MIN = Y(1)
END IF
CALL RUNGE(NEQ,TIME,Y,DT)
WRITE(91,200) " ",TIME,Y(1),Y(2)
! TO CALCULATE PERIOD
IF (Y(2)*VX_OLD .LT. 0) THEN
INDEX_PERIOD = INDEX_PERIOD + 1
! to get the time when the speed gets zero
PERIOD(INDEX_PERIOD) = TIME_OLD - &
VX_OLD * (TIME - TIME_OLD)/(Y(2)-VX_OLD)
IF (INDEX_PERIOD .GT. 1) THEN
LOOP(INDEX_PERIOD - 1) = PERIOD(INDEX_PERIOD) - &
PERIOD(INDEX_PERIOD - 1)
END IF
END IF
END DO
PERIOD_AVERAGE = SUM(LOOP) / SIZE(LOOP)
AMPLITUDE = X_MAX - X_MIN
WRITE(*,'("A = ",F12.6, ", T = ",F12.6)') &
AMPLITUDE, PERIOD_AVERAGE
WRITE(92,200) " ",VX0+I/1D1,AMPLITUDE,PERIOD_AVERAGE
END DO
CLOSE(92)
! FORMATS
100 FORMAT(4(A12,2x))
200 FORMAT(A12, 2x, 3(F12.6,2x))
END SUBROUTINE
SUBROUTINE GET_PROBLEM_22_WITH_FORCE
USE MY_PARAMETERS
IMPLICIT NONE
REAL*8 :: TIME, Y(2)
INTEGER :: NEQ
! to calculate the period
INTEGER, PARAMETER :: MAX_PERIODS = 50
REAL*8 :: TIME_OLD, VX_OLD
REAL*8 :: PERIOD(MAX_PERIODS), LOOP(MAX_PERIODS-1)
INTEGER :: INDEX_PERIOD, I
REAL*8 :: PERIOD_AVERAGE
! to calculate the amplitude
REAL*8 :: X_MAX, X_MIN, AMPLITUDE
NEQ = 2
CALL GET_INPUT
Y(1) = X0
Y(2) = VX0
TIME = 0D0
INDEX_PERIOD = 0
OPEN(UNIT=91, FILE="data_problem_22_withForce-alpha3.dat")
WRITE(91,100) "descriptor","time","x","vx"
WRITE(91,200) " ",TIME,Y(1),Y(2)
DO WHILE ((INDEX_PERIOD .LT. MAX_PERIODS) .AND. TIME < 1000)
! TO CALCULATE PERIOD
VX_OLD = Y(2)
TIME_OLD = TIME
CALL RUNGE(NEQ,TIME,Y,DT)
WRITE(91,200) " ",TIME,Y(1),Y(2)
! TO CALCULATE PERIOD
IF (Y(2)*VX_OLD .LT. 0) THEN
INDEX_PERIOD = INDEX_PERIOD + 1
! to get the time when the speed get zero
PERIOD(INDEX_PERIOD) = TIME_OLD - &
VX_OLD * (TIME - TIME_OLD)/(Y(2)-VX_OLD)
IF (INDEX_PERIOD .GT. 1) THEN
LOOP(INDEX_PERIOD - 1) = PERIOD(INDEX_PERIOD) - &
PERIOD(INDEX_PERIOD - 1)
END IF
END IF
END DO
CLOSE(91)
PERIOD_AVERAGE = SUM(LOOP) / SIZE(LOOP)
PRINT*, PERIOD_AVERAGE
! change OMEGA, and see the change of the AMPLITUDE
! rough scan
! fine scan
OPEN(UNIT=92, FILE="OMEGA-AMPLITUDE_22-2_withForce-alpha3-fine.dat")
WRITE(92,101) "descriptor","OMEGA","AMPLITUDE"
DO I=1,150
Y(1) = X0
Y(2) = VX0
OMEGA = 5D-1 + I/1D2
TIME = 0D0
INDEX_PERIOD = 0
X_MAX = X0
X_MIN = X0
DO WHILE ((INDEX_PERIOD .LT. MAX_PERIODS) .AND. TIME < 1000)
! TO CALCULATE PERIOD
VX_OLD = Y(2)
TIME_OLD = TIME
! TO CALCULATE AMPLITUDE
IF (Y(1) .GT. X_MAX) THEN
X_MAX = Y(1)
END IF
IF (Y(1) .LT. X_MIN) THEN
X_MIN = Y(1)
END IF
CALL RUNGE(NEQ,TIME,Y,DT)
WRITE(91,200) " ",TIME,Y(1),Y(2)
! TO CALCULATE PERIOD
IF (Y(2)*VX_OLD .LT. 0) THEN
INDEX_PERIOD = INDEX_PERIOD + 1
!! to get the time when the speed gets zero
!PERIOD(INDEX_PERIOD) = TIME_OLD - &
! VX_OLD * (TIME - TIME_OLD)/(Y(2)-VX_OLD)
!IF (INDEX_PERIOD .GT. 1) THEN
! LOOP(INDEX_PERIOD - 1) = PERIOD(INDEX_PERIOD) - &
! PERIOD(INDEX_PERIOD - 1)
!END IF
END IF
END DO
!PERIOD_AVERAGE = SUM(LOOP) / SIZE(LOOP)
AMPLITUDE = X_MAX - X_MIN
WRITE(*,'("OMEGA = ",F12.6, ", AMPLITUDE = ",F12.6)') &
OMEGA,AMPLITUDE
WRITE(92,201) " ",OMEGA,AMPLITUDE
END DO
CLOSE(92)
! FORMATS
100 FORMAT(4(A12,2x))
200 FORMAT(A12, 2x, 3(F12.6,2x))
101 FORMAT(3(A12,2x))
201 FORMAT(A12, 2x, 2(F12.6,2x))
END SUBROUTINE
END MODULE

View File

@ -0,0 +1,19 @@
MODULE MY_PARAMETERS
IMPLICIT NONE
REAL*8, PARAMETER :: OMEGA_0 = 1D0
REAL*8 :: X0,VX0
REAL*8 :: DT
REAL*8 :: ALPHA
REAL*8 :: GAMMA
! THE DAMPING FACTOR
REAL*8 :: OMEGA, H_FORCE
! THE FORCE, H_FORCE MEANS H/m
END MODULE