program porte implicit none real :: x,L,C0,C1,xd,xf real :: H real :: C_init call recup_donnees(L,C0,C1,xd,xf) x = 0. print*, "x, C_init= ",x,C_init(x,L,C0,C1,xd,xf) x = (xd+xf)/2. print*, "x, C_init= ",x,C_init(x,L,C0,C1,xd,xf) x = L print*, "x, C_init= ",x,C_init(x,L,C0,C1,xd,xf) end program porte !------------ function H(x) implicit none real, intent(in) :: x real :: H if (x<0) then H = 0. else H = 1. end if end function H !------------------------------- function C_init(x,L,C0,C1,xd,xf) implicit none real, intent(in) :: x,L,C0,C1,xd,xf real :: H real :: C_init C_init = C0 + (C1-C0)*(H(x-xd)-H(x-xf)) end function C_init !-------------------------------------- subroutine recup_donnees(L,C0,C1,xd,xf) implicit none real, intent(out) :: L,C0,C1,xd,xf print*, "Donner la valeur de L:" read*, L print*, "Donner la valeur de C0:" read*, C0 print*, "Donner la valeur de C1:" read*, C1 print*, "Donner la valeur de xd:" read*, xd print*, "Donner la valeur de xf:" read*, xf end subroutine recup_donnees