Changes between Version 3 and Version 4 of fortran


Ignore:
Timestamp:
Oct 17, 2016, 8:59:10 PM (8 years ago)
Author:
Leon Kos
Comment:

Reposition and page outline

Legend:

Unmodified
Added
Removed
Modified
  • fortran

    v3 v4  
     1[[PageOutline]]
    12= FORTRAN 95 examples =
    23
     
    3334end
    3435}}}
     36
     37== Console2/Console2/Console2.f90 ==
     38{{{
     39#!fortran
     40real x,dx,s
     41!open(1,file='y1.dat', status='unknown')
     42a=0
     43b=1.57
     44n=100
     45dx=(b-a)/n
     46S=0
     47do i=0,n
     48    if(mod(i,2)==0) then
     49       S=S+dx/3*2*f(i*dx+a)
     50   else
     51       S=S+dx/3*4*f(i*dx+a)
     52   end if
     53end do
     54 
     55print *, 'Sim = ', S
     56pause
     57
     58contains
     59
     60function f(x)
     61f=sin(x)*sin(2*x)*sin(3*x)
     62end function f
     63end
     64}}}
     65
     66== Console3/Console3/Console3.f90 ==
     67{{{
     68#!fortran
     69real x,dx, a, b
     70open(1,file='y2.dat', status='unknown')
     71a=-0.5
     72b=0.5
     73n=100
     74dx=(b-a)/n
     75do i=1,n
     76    write(1,*) i*dx + a, 1/sqrt(1-(i*dx+a)**2)
     77end do
     78end
     79}}}
     80
     81== Console4/Console4/Console4.f90 ==
     82{{{
     83#!fortran
     84real x,dx, a, b
     85open(1,file='y2.dat', status='unknown')
     86a=0
     87b=1.14
     88n=100
     89dx=(b-a)/n
     90do i=1,n
     91    write(1,*) i*dx + a, sin(i*dx+a)*sin(2*i*dx+a)*sin(3*i*dx+a)
     92end do
     93end
     94}}}
     95
     96== Console5/Console5/Console5.f90 ==
     97{{{
     98#!fortran
     99program Simp
     100
     101integer n
     102real y1, y2, y3, x, h, a, s
     103n=100
     104h=2/n
     105do i=1,n
     106   
     107        x(i)=-1+h(i-1)
     108
     109        y1(i)=f1(x(i))
     110        y2(i)=f2(x(i),h)
     111        y3(i)=f3(x(i),h)
     112       
     113         a=h/6*(y1+4*y2+y3)
     114         s=sum(a)
     115end do
     116
     117contains
     118real function f1(x)
     119    real x
     120    f1=x*(5-4*x)**(-0.5)
     121  end function
     122real function f2(x,h)
     123    real x, h
     124    f2=(x+h/2)*(5-4*(x+h/2))**(-0.5)
     125  end function
     126real function f3(x,h)
     127    real x, h
     128    f3=(x+h)*(5-4*(x+h))**(-0.5)
     129
     130 end function
     131print *, s
     132end program
     133}}}
     134
     135== Console6/Console6/Console6.f90 ==
     136{{{
     137#!fortran
     138program kolco
     139
     140integer :: n=1000
     141real :: r1=1.0, r2=2.0, q=3.0, d=5.0, eq=-4.8e-10, m=9.1e-28 ! ������� ��������� � ���-�������
     142real ::  dt, t, x, vx
     143
     144t=1.0e-9
     145dt=t/float(n)
     146vx=0
     147x=2.5
     148
     149
     150open (1,file='kolco',status='unknown')
     151
     152do i=1,n
     153   E=q*x/(x**2+r1**2)**(1.5)- q*(5-x)/((5-x)**2+r2**2)**(1.5)
     154   vx=vx+(eq*E/m)*dt
     155   x=x+vx*dt
     156   write(1,*) vx, x, i*dt
     157end do
     158
     159end program
     160}}}
     161
     162== Console7/Console7/Console7.f90 ==
     163{{{
     164#!fortran
     165program kolco
     166
     167integer :: n=10000
     168real(8) :: r1=1.0, r2=2.0, q=3.0, d=5.0, eq=4.8e-10, m=9.1e-28 ! ������� ��������� � ���-�������
     169real(8) ::  dt, t, x, vx
     170
     171t=1.0e-6
     172dt=t/float(n)
     173vx=0
     174x=2.5
     175
     176
     177open (1,file='kolco',status='unknown')
     178
     179do i=1,n
     180   E=q*x/sqrt((x**2+r1**2)**3)- q*(5-x)/sqrt(((5-x)**2+r2**2)**3)
     181   vx=vx+(eq*E/m)*dt
     182   x=x+vx*dt
     183   write(1,*) x, i*dt, vx
     184end do
     185
     186end program
     187}}}
     188
     189== Console8/Console8/Console8.f90 ==
     190{{{
     191#!fortran
     192external fct, out
     193real aux(8,2)
     194common /a/ dt, k, n, A, Vm, om
     195real :: pr(5) = (/0.,2*3.14159*10., 2*3.14159/50, .0001, .0/)
     196real :: du(2) = (/0.5, 0.5/)
     197integer :: nd = 2
     198real :: dt=2*3.14159265
     199real :: t
     200A = 2.0
     201om = 1.0
     202Vm = A*om
     203u(1) = Vm/Vm
     204u(2) = 0
     205k = 1
     206n=1
     207
     208open (unit=2, file = 'osc_rk0.dat' ,status='unknown')
     209write(*,*) 'x=' , u(1), 'v=', u(2)
     210pause
     211call rkgs(pr, u, du, nd, ih, fct, out, aux)
     212write(2,*) 'ih=', ih
     213stop
     214end
     215!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     216
     217subroutine fct (t, u, du)
     218real u(2), du(2)
     219common /a/ dt, k, n, A, Vm, om
     220du(1) = -u(2)/(1+0.1*sin(om*dt))
     221du(2) = u(1)
     222return
     223end
     224
     225
     226subroutine out (t, u, du, ih, nd, pr)
     227real u(2), du(2), pr(5)
     228common /a/ dt, k, n, A, Vm, om
     229
     230if(t.ge.k*(dt/50.)) then
     231write (2,1) t/om, u(1)*Vm, u(2)*A
     232k=k+1
     233else
     234end if
     235
     2361 format (f8.3, f8.3, f8.3)
     237return
     238end
     239
     240
     241
     242}}}
     243
     244== Console9/Console9/Console9.f90 ==
     245{{{
     246#!fortran
     247!  Console9.f90
     248!
     249!  FUNCTIONS:
     250!  Console9 - Entry point of console application.
     251!
     252
     253!****************************************************************************
     254!
     255!  PROGRAM: Console9
     256!
     257!  PURPOSE:  Entry point for the console application.
     258!
     259!****************************************************************************
     260
     261    program Console9
     262
     263    implicit none
     264
     265    ! Variables
     266
     267    ! Body of Console9
     268    print *, 'Hello World'
     269
     270    end program Console9
     271
     272}}}
     273
    35274
    36275== Console10/Console10/Console10.f90 ==
     
    9191158}}}
    9201159
    921 == Console2/Console2/Console2.f90 ==
    922 {{{
    923 #!fortran
    924 real x,dx,s
    925 !open(1,file='y1.dat', status='unknown')
    926 a=0
    927 b=1.57
    928 n=100
    929 dx=(b-a)/n
    930 S=0
    931 do i=0,n
    932     if(mod(i,2)==0) then
    933        S=S+dx/3*2*f(i*dx+a)
    934    else
    935        S=S+dx/3*4*f(i*dx+a)
    936    end if
    937 end do
    938  
    939 print *, 'Sim = ', S
    940 pause
    941 
    942 contains
    943 
    944 function f(x)
    945 f=sin(x)*sin(2*x)*sin(3*x)
    946 end function f
    947 end
    948 }}}
    9491160
    9501161== Console20/Console20/Console20.f90 ==
     
    17311942}}}
    17321943
    1733 == Console3/Console3/Console3.f90 ==
    1734 {{{
    1735 #!fortran
    1736 real x,dx, a, b
    1737 open(1,file='y2.dat', status='unknown')
    1738 a=-0.5
    1739 b=0.5
    1740 n=100
    1741 dx=(b-a)/n
    1742 do i=1,n
    1743     write(1,*) i*dx + a, 1/sqrt(1-(i*dx+a)**2)
    1744 end do
    1745 end
    1746 }}}
    17471944
    17481945== Console30/Console30/Console30.f90 ==
     
    25532750}}}
    25542751
    2555 == Console4/Console4/Console4.f90 ==
    2556 {{{
    2557 #!fortran
    2558 real x,dx, a, b
    2559 open(1,file='y2.dat', status='unknown')
    2560 a=0
    2561 b=1.14
    2562 n=100
    2563 dx=(b-a)/n
    2564 do i=1,n
    2565     write(1,*) i*dx + a, sin(i*dx+a)*sin(2*i*dx+a)*sin(3*i*dx+a)
    2566 end do
    2567 end
    2568 }}}
    2569 
    2570 == Console5/Console5/Console5.f90 ==
    2571 {{{
    2572 #!fortran
    2573 program Simp
    2574 
    2575 integer n
    2576 real y1, y2, y3, x, h, a, s
    2577 n=100
    2578 h=2/n
    2579 do i=1,n
    2580    
    2581         x(i)=-1+h(i-1)
    2582 
    2583         y1(i)=f1(x(i))
    2584         y2(i)=f2(x(i),h)
    2585         y3(i)=f3(x(i),h)
    2586        
    2587          a=h/6*(y1+4*y2+y3)
    2588          s=sum(a)
    2589 end do
    2590 
    2591 contains
    2592 real function f1(x)
    2593     real x
    2594     f1=x*(5-4*x)**(-0.5)
    2595   end function
    2596 real function f2(x,h)
    2597     real x, h
    2598     f2=(x+h/2)*(5-4*(x+h/2))**(-0.5)
    2599   end function
    2600 real function f3(x,h)
    2601     real x, h
    2602     f3=(x+h)*(5-4*(x+h))**(-0.5)
    2603 
    2604  end function
    2605 print *, s
    2606 end program
    2607 }}}
    2608 
    2609 == Console6/Console6/Console6.f90 ==
    2610 {{{
    2611 #!fortran
    2612 program kolco
    2613 
    2614 integer :: n=1000
    2615 real :: r1=1.0, r2=2.0, q=3.0, d=5.0, eq=-4.8e-10, m=9.1e-28 ! ������� ��������� � ���-�������
    2616 real ::  dt, t, x, vx
    2617 
    2618 t=1.0e-9
    2619 dt=t/float(n)
    2620 vx=0
    2621 x=2.5
    2622 
    2623 
    2624 open (1,file='kolco',status='unknown')
    2625 
    2626 do i=1,n
    2627    E=q*x/(x**2+r1**2)**(1.5)- q*(5-x)/((5-x)**2+r2**2)**(1.5)
    2628    vx=vx+(eq*E/m)*dt
    2629    x=x+vx*dt
    2630    write(1,*) vx, x, i*dt
    2631 end do
    2632 
    2633 end program
    2634 }}}
    2635 
    2636 == Console7/Console7/Console7.f90 ==
    2637 {{{
    2638 #!fortran
    2639 program kolco
    2640 
    2641 integer :: n=10000
    2642 real(8) :: r1=1.0, r2=2.0, q=3.0, d=5.0, eq=4.8e-10, m=9.1e-28 ! ������� ��������� � ���-�������
    2643 real(8) ::  dt, t, x, vx
    2644 
    2645 t=1.0e-6
    2646 dt=t/float(n)
    2647 vx=0
    2648 x=2.5
    2649 
    2650 
    2651 open (1,file='kolco',status='unknown')
    2652 
    2653 do i=1,n
    2654    E=q*x/sqrt((x**2+r1**2)**3)- q*(5-x)/sqrt(((5-x)**2+r2**2)**3)
    2655    vx=vx+(eq*E/m)*dt
    2656    x=x+vx*dt
    2657    write(1,*) x, i*dt, vx
    2658 end do
    2659 
    2660 end program
    2661 }}}
    2662 
    2663 == Console8/Console8/Console8.f90 ==
    2664 {{{
    2665 #!fortran
    2666 external fct, out
    2667 real aux(8,2)
    2668 common /a/ dt, k, n, A, Vm, om
    2669 real :: pr(5) = (/0.,2*3.14159*10., 2*3.14159/50, .0001, .0/)
    2670 real :: du(2) = (/0.5, 0.5/)
    2671 integer :: nd = 2
    2672 real :: dt=2*3.14159265
    2673 real :: t
    2674 A = 2.0
    2675 om = 1.0
    2676 Vm = A*om
    2677 u(1) = Vm/Vm
    2678 u(2) = 0
    2679 k = 1
    2680 n=1
    2681 
    2682 open (unit=2, file = 'osc_rk0.dat' ,status='unknown')
    2683 write(*,*) 'x=' , u(1), 'v=', u(2)
    2684 pause
    2685 call rkgs(pr, u, du, nd, ih, fct, out, aux)
    2686 write(2,*) 'ih=', ih
    2687 stop
    2688 end
    2689 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    2690 
    2691 subroutine fct (t, u, du)
    2692 real u(2), du(2)
    2693 common /a/ dt, k, n, A, Vm, om
    2694 du(1) = -u(2)/(1+0.1*sin(om*dt))
    2695 du(2) = u(1)
    2696 return
    2697 end
    2698 
    2699 
    2700 subroutine out (t, u, du, ih, nd, pr)
    2701 real u(2), du(2), pr(5)
    2702 common /a/ dt, k, n, A, Vm, om
    2703 
    2704 if(t.ge.k*(dt/50.)) then
    2705 write (2,1) t/om, u(1)*Vm, u(2)*A
    2706 k=k+1
    2707 else
    2708 end if
    2709 
    2710 1 format (f8.3, f8.3, f8.3)
    2711 return
    2712 end
    2713 
    2714 
    2715 
    2716 }}}
    2717 
    2718 == Console9/Console9/Console9.f90 ==
    2719 {{{
    2720 #!fortran
    2721 !  Console9.f90
    2722 !
    2723 !  FUNCTIONS:
    2724 !  Console9 - Entry point of console application.
    2725 !
    2726 
    2727 !****************************************************************************
    2728 !
    2729 !  PROGRAM: Console9
    2730 !
    2731 !  PURPOSE:  Entry point for the console application.
    2732 !
    2733 !****************************************************************************
    2734 
    2735     program Console9
    2736 
    2737     implicit none
    2738 
    2739     ! Variables
    2740 
    2741     ! Body of Console9
    2742     print *, 'Hello World'
    2743 
    2744     end program Console9
    2745 
    2746 }}}
    2747 
    2748 == Eyler/Eyler/Eyler.f90 ==
    2749 {{{
    2750 #!fortran
    2751 real v,x,dt,t,dv,Fm
    2752 open(2,file='y2.dat', status='unknown')
    2753 q1=1.0e-9
    2754 q2=1.0e-9
    2755 r1=0.1
    2756 r2=0.2
    2757 d=0.5
    2758 t0=d/v0
    2759 n=100
    2760 pi=3.141593
    2761 E0=0.0
    2762 v0=0.0
    2763 dt=t0/n
    2764 x=x/d
    2765 write(*,*) dt
    2766 open(1,file='xv.dat', status='unknown')
    2767 Fm=q1/me/(vo**2)
    2768 print*, Fm
    2769 do k=1,n
    2770     t=k*dt
    2771     v=v+Fm*sin(2.0*pi*x)*dt
    2772     x=x+v*dt
    2773    
    2774 write(1,*) t*t0/1.0e-9, v*v0, x*d, sin(2.0*pi*x)
    2775 if(x.ge.1.0) then
    2776 write(1,*) t*t0/1.0e-9, v*vo, x*d
    2777 stop
    2778 else
    2779 end if
    2780 end do
    2781 end
    2782 }}}
    27832752
    27842753== uskarenie-protona/Console36/Console36.f90 ==
     
    30563025
    30573026}}}
     3027
     3028== Eyler/Eyler/Eyler.f90 ==
     3029{{{
     3030#!fortran
     3031real v,x,dt,t,dv,Fm
     3032open(2,file='y2.dat', status='unknown')
     3033q1=1.0e-9
     3034q2=1.0e-9
     3035r1=0.1
     3036r2=0.2
     3037d=0.5
     3038t0=d/v0
     3039n=100
     3040pi=3.141593
     3041E0=0.0
     3042v0=0.0
     3043dt=t0/n
     3044x=x/d
     3045write(*,*) dt
     3046open(1,file='xv.dat', status='unknown')
     3047Fm=q1/me/(vo**2)
     3048print*, Fm
     3049do k=1,n
     3050    t=k*dt
     3051    v=v+Fm*sin(2.0*pi*x)*dt
     3052    x=x+v*dt
     3053   
     3054write(1,*) t*t0/1.0e-9, v*v0, x*d, sin(2.0*pi*x)
     3055if(x.ge.1.0) then
     3056write(1,*) t*t0/1.0e-9, v*vo, x*d
     3057stop
     3058else
     3059end if
     3060end do
     3061end
     3062}}}
     3063
     3064