fcn Subroutine

public pure subroutine fcn(n, m, np, nq, ldn, ldm, ldnp, beta, xplusd, ifixb, ifixx, ldifx, ideval, f, fjacb, fjacd, istop)

User-supplied subroutine for evaluating the model.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n
integer, intent(in) :: m
integer, intent(in) :: np
integer, intent(in) :: nq
integer, intent(in) :: ldn
integer, intent(in) :: ldm
integer, intent(in) :: ldnp
real(kind=wp), intent(in) :: beta(np)
real(kind=wp), intent(in) :: xplusd(ldn,m)
integer, intent(in) :: ifixb(np)
integer, intent(in) :: ifixx(ldifx,m)
integer, intent(in) :: ldifx
integer, intent(in) :: ideval
real(kind=wp), intent(out) :: f(ldn,nq)
real(kind=wp), intent(out) :: fjacb(ldn,ldnp,nq)
real(kind=wp), intent(out) :: fjacd(ldn,ldm,nq)
integer, intent(out) :: istop

Variables

Type Visibility Attributes Name Initial
integer, public :: i

Source Code

   pure subroutine fcn(n, m, np, nq, ldn, ldm, ldnp, beta, xplusd, ifixb, ifixx, &
                       ldifx, ideval, f, fjacb, fjacd, istop)
   !! User-supplied subroutine for evaluating the model.
      integer, intent(in) :: ideval, ldifx, ldm, ldn, ldnp, m, n, np, nq
      integer, intent(in) :: ifixb(np), ifixx(ldifx, m)
      real(kind=wp), intent(in) :: beta(np), xplusd(ldn, m)
      real(kind=wp), intent(out) :: f(ldn, nq), fjacb(ldn, ldnp, nq), fjacd(ldn, ldm, nq)
      integer, intent(out) :: istop

      ! Local variables
      integer :: i

      ! Check for unacceptable values for this problem
      if (beta(1) .gt. zero) then
         istop = 1
         return
      else
         istop = 0
      end if

      ! Compute predicted values
      if (mod(ideval, 10) .ge. 1) then
         do i = 1, nq
            f(:, i) = beta(3)*(xplusd(:, 1) - beta(1))**2 + &
                      2*beta(4)*(xplusd(:, 1) - beta(1))*(xplusd(:, 2) - beta(2)) + &
                      beta(5)*(xplusd(:, 2) - beta(2))**2 - one
         end do
      end if

   end subroutine fcn