myresidual Subroutine

public subroutine myresidual(params, line, residual, n_gauss, dim_v)

Arguments

Type IntentOptional AttributesName
real(kind=xp), intent(in), dimension(3*n_gauss):: params
real(kind=xp), intent(in), dimension(dim_v):: line
real(kind=xp), intent(inout), dimension(:), allocatable:: residual
integer, intent(in) :: n_gauss
integer, intent(in) :: dim_v

Calls

proc~~myresidual~~CallsGraph proc~myresidual myresidual proc~gaussian gaussian proc~myresidual->proc~gaussian

Called by

proc~~myresidual~~CalledByGraph proc~myresidual myresidual proc~minimize_spec minimize_spec proc~minimize_spec->proc~myresidual proc~upgrade upgrade proc~upgrade->proc~minimize_spec proc~init_spectrum init_spectrum proc~init_spectrum->proc~minimize_spec

Contents

Source Code


Source Code

  subroutine myresidual(params, line, residual, n_gauss, dim_v)
    implicit none

    integer, intent(in) :: dim_v, n_gauss
    real(xp), intent(in), dimension(dim_v) :: line
    real(xp), intent(in), dimension(3*n_gauss) :: params
    real(xp), intent(inout), dimension(:), allocatable :: residual

    integer :: i, k
    real(xp) :: g    
    real(xp), dimension(dim_v) :: model

    g = 0._xp
    model = 0._xp
    
    do i=1, n_gauss
       do k=1, dim_v
          g = gaussian(k, params(1+(3*(i-1))), params(2+(3*(i-1))), params(3+(3*(i-1))))
          model(k) = model(k) + g
       enddo
    enddo

    residual = model - line
  end subroutine myresidual