我的悬臂静态程序

时间:2016-05-18 20:34:08

标签: fortran

我正在尝试制作关于悬臂的程序。

program statik

    implicit none 
    integer :: i;
    real :: x, stuetzlaenge, belastung, einzellastlaenge, einzellast, auflagerkraft, querkraft, moment;
    logical :: debugging

    debugging = .false. 

    if (debugging) then
        stuetzlaenge = 1.0
        belastung = 1.0
    else
        print *, 'Statik: Kragarm unter Gleichlast mit Einzellast an beliebiger Stelle'
        print *, 'Bitte geben Sie die Geometrie und die Belastungen ein: '
        write(*,100) '- Stuetzlaenge  l [m] = '
        read(*,*) stuetzlaenge
        write(*,100) '- Gleichlast q [kN/m] = '
        read(*,*) belastung
        write(*,100) '- Lage der Einzellast a [m] = '
        read(*,*) einzellastlaenge
        write(*,100) '- Einzellast F [kN] = ' 
        read(*,*) einzellast
    end if

    print *, 'Eingaben:'
    print *, '- Stuetzlaenge  l [m] = ', stuetzlaenge
    print *, '- Gleichlast q [kN/m] = ', belastung
    print *, '- Lage der Einzellast a [m] = ', einzellastlaenge
    print *, '- Einzellast F [kN] = ', einzellast

    print *, 'Ergebnisse:'
    auflagerkraft = belastung*stuetzlaenge + einzellast;
    print *, '- Auflagerkraft: A = ', auflagerkraft , ' kN'
    print *, '- Querkraefte:'
    do i = 0, 10
        x = stuetzlaenge*i/10 [m];
        querkraft = auflagerkraft - belastung*x - if(einzellastlaenge == x) then write(*,*) "einzellast" else if(einzellastlaenge > x)then write(*,*)"0";
        print *, '  Q(x=',x,') = ', querkraft, 'kN'
    end do    
    print *, '- Momente:'
    do i = 0, 10
        x = stuetzlaenge*i/10;
        moment = belastung*stuetzlaenge*stuetzlaenge/2 - belastung*x*x/2 - if(einzellastlaenge == x) then write(*,*) "einzellast*einzellastlaenge";
        print *, '  M(x=',x,') = ', moment, 'kNm'
    end do

100 format(1X,A)

end program statik

错误:

  

1错误:在(1)处截断的行   [-Werror =线路截短]
  main.f95:49:97:

     moment = belastung*stuetzlaenge*stuetzlaenge/2 - belastung*x*x/2 - if(einzellastlaenge == x) then write(*,*) "einzellast*einzellastlaenge";           
                    1                                                              
     

错误:       名称中的字符无效(1)
      main.f95:50:1:

1 个答案:

答案 0 :(得分:1)

除了这些语法在语法上不正确之外,它们也太长了。使用行继续(&)分解它们,或者扩展每行所考虑的列数。 假设您正在使用gfortran(来自错误消息),则使用-ffree-line-length-0 or -ffree-line-length-none完成此操作。