program porte_vecteur implicit none !integer :: N, k !real :: L, gama, pi real :: L,C0,C1,xd,xf !real :: x integer :: N, k real :: H, C_init real, dimension(100) :: x_reg, C call recup_donnees(N,L,C0,C1,xd,xf) call mesh(N,L,x_reg) call init_c(N,L,C0,C1,xd,xf,x_reg,C) do k=1,N print*,"Au point numero k= ",k," x= ",x_reg(k),", C= ",C(k) end do end program porte_vecteur !------------ 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(N,L,C0,C1,xd,xf) implicit none integer, intent(out) :: N real, intent(out) :: L,C0,C1,xd,xf print*, "Donner la valeur de N (N<=100):" read*, N 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 !------------------------- subroutine mesh(N,L,x_reg) implicit none ! Variables en arguments integer, intent(in) :: N real, intent(in) :: L real, dimension(100), intent(out) :: x_reg ! Variables locales integer :: k do k=1,N x_reg(k) = L / real(N-1) * real(k-1) end do end subroutine mesh !----------------------------------------- subroutine init_c(N,L,C0,C1,xd,xf,x_reg,C) implicit none ! Variables en arguments integer, intent(in) :: N real, intent(in) :: L,C0,C1,xd,xf real, dimension(100), intent(in) :: x_reg real, dimension(100), intent(out) :: C ! Variables locales integer :: k real :: C_init do k=1,N C(k) = C_init(x_reg(k),L,C0,C1,xd,xf) end do end subroutine init_c