sinereha
Civil/Environmental
- Jul 17, 2013
- 1
I am trying to use NCONF for solving a minimization in fortran. the problem is that I want to use a FCN subroutine in which I need to enter some inputs which are the outputs of another FCN! can this be possible?
this is the first subroutine which result is X1:
SUBROUTINE FCN1(M1,ME,N,X1,ACTIVE1,F1,G1)
INTEGER M1,ME,N
REAL F1
REAL:: X1(N),G1(M1)
LOGICAL:: ACTIVE1(M1)
F1=-(0.48*(X1(1)+X1(2))*(10**6)*8000-3594771*(X1(1)))
IF (ACTIVE1(1)) G1(1)=X1(2)+X1(4)+X1(6)+X1(8)-20
IF (ACTIVE1(2)) G1(2)=X1(1)+X1(3)+X1(5)+X1(7)-10
RETURN
END
and I want to use these results as inputs in another subroutine as follows:
SUBROUTINE FCN2(X1,M1,ME,N,X2,ACTIVE2,F2,G2)
INTEGER M1,ME,N
REAL F2
REAL:: X1(N),X2(N),G2(M1)
LOGICAL:: ACTIVE2(M1)
F2=-(0.48*(X2(1)+X2(2))*(10**6)*8000-3579209*(X2(1)))
IF (ACTIVE2(1)) G2(1)=X1(2)+X1(4)+X2(6)+X2(8)-20
IF (ACTIVE2(2)) G2(2)=X1(1)+X1(3)+X2(5)+X2(7)-10
RETURN
END
As you see I have add X1 in the array of inputs of the FCN2 but I receive an error. it seems I can not change the standard format of FCN inputs and outputs! what should I do?
this is the first subroutine which result is X1:
SUBROUTINE FCN1(M1,ME,N,X1,ACTIVE1,F1,G1)
INTEGER M1,ME,N
REAL F1
REAL:: X1(N),G1(M1)
LOGICAL:: ACTIVE1(M1)
F1=-(0.48*(X1(1)+X1(2))*(10**6)*8000-3594771*(X1(1)))
IF (ACTIVE1(1)) G1(1)=X1(2)+X1(4)+X1(6)+X1(8)-20
IF (ACTIVE1(2)) G1(2)=X1(1)+X1(3)+X1(5)+X1(7)-10
RETURN
END
and I want to use these results as inputs in another subroutine as follows:
SUBROUTINE FCN2(X1,M1,ME,N,X2,ACTIVE2,F2,G2)
INTEGER M1,ME,N
REAL F2
REAL:: X1(N),X2(N),G2(M1)
LOGICAL:: ACTIVE2(M1)
F2=-(0.48*(X2(1)+X2(2))*(10**6)*8000-3579209*(X2(1)))
IF (ACTIVE2(1)) G2(1)=X1(2)+X1(4)+X2(6)+X2(8)-20
IF (ACTIVE2(2)) G2(2)=X1(1)+X1(3)+X2(5)+X2(7)-10
RETURN
END
As you see I have add X1 in the array of inputs of the FCN2 but I receive an error. it seems I can not change the standard format of FCN inputs and outputs! what should I do?