How to fix unused argument in a function

Im writing a code calibration to calculate the partial safety factors. The Error here is **DS unused argument.** I cant discover the error here,

Codecal <- function(S,DS,CM,Beta,X){
  # COMPUTE PARTIAL SAFETY FACTORS FOR CODE CALIBRATION
  #
  # INPUT
  #
  # X     = [n x 1] Ratios of Design points according to the given mean ratio
  # S     = [n x 1] Standard Deviation OF DISTRIBUTION OF X
  # DS    = [n x 1] DISTRIBUTION TYPE [1 = Normal, 2 = Lognorm, 3 = Gumbel TypeI]
  # CM    = [n X n] CORRELATION MATRIX IF ANY CORRELATION EXISTS
  # Beta  = [1 x 1] RELIABILITY INDEX TARGET
  #
  # OUTPUT
  #gaa  = [n x 1] DESIGN FACTORS
  #==========================================================================
  #
  M <- X
  nMax = 100  # NUMBER OF ITERATIONS
  tol= 1e-3 # TOLERANCE ON GAMMA
  CHK <- F # STOPPING CONDITION
  nVr <- length(X) # NUMBER OF RANDOM VARIABLES
  Sz = S; # INITIALIZE VECTOR OF STANDARD DEVIATION
  Mz = M; # INITIALIZE VECTOR OF MEAN
  ga= Inf
  #  TRANSFORM Z = (X - M)/S => X = M + S*Z
  itr <- 0
  while(!CHK){
    # COMPUTE
    #This additional part OF Rakwitz-Fiessler if the distribution is NOT normal
    for(i1 in seq(1:nVr)){ # NORM
      # IF NORM VARIABLE Mz AND Sz REMAIN THE SAME
      if(DS[i1] == 2){ # LOGNORM
        S0 <- sqrt(log(1 + (S[i1]/M[i1])^2))
        M0 <- log(M[i1]) - 0.5*S0^2
        Sz[i1] <- (1/dlnorm(x = X[i1],meanlog = M0,sdlog = S0)) * dnorm(x = qnorm(p = plnorm(q = X[i1],meanlog = M0, sdlog = S0),mean = 0,sd = 1),mean = 0,sd = 1)
        Mz[i1] <- X[i1] - Sz[i1]*qnorm(p = plnorm(q = X[i1],meanlog = M0, sdlog = S0),mean = 0,sd = 1)
      }else if(DS[i1] == 3){ # GUMBEL TYPE I
        S0 = sqrt(pi^2 / (6*S[i1]^2))
        M0 = M[i1] - 0.5772/S0
        Fx <- exp(-exp(-S0*(X[i1]-M0)))
        fx <- S0 * (exp(-S0*(X[i1]-M0)))*Fx
        Sz[i1] <- (1/fx) * dnorm(x = qnorm(p = Fx))
        Mz[i1] <- X[i1] - Sz[i1]*qnorm(p = Fx)
      }
    }
    Dummy <- LimitStateFun(X,Sz) 
    Z = (Dummy$Xp - Mz)/Sz
    ga0 <-ga*Dummy$Gr / as.numeric(sqrt(Dummy$Gr %*% Dummy$Gr))
    if(abs(ga0-ga) <= tol || itr == nMax){
      CHK <- T
    }
    itr <- itr + 1
   ga <- ga0
    Z <- Beta * Dummy$Gr 
    X <- Mz + Z * Sz
    ga=X/Mz
  }
  Out <- list(ga=ga)

#
#' Limit State Function  
#
LimitStateFun <- function(X,S){
  # COMPUTE X(n) FROM LIMITE STATE FUNCTION OF X[1]...X(n-1)
  # INPUT
  #
  # X      = INITIAL DESIGN POINT
  # S      = STANDARD DEVIATION OF NORMALIZED VARIATES OF Z
  # P      = VECTOR OF PARAMETERS
  #
  Grd <- rep(0,length(X)) 
  # GRADIENT VECTOR
  Grd = P*S; Grd[1] = -Grd[1];
# G(Z) = P[1]*X[1] - P[1]*X[2] - P[2]*X[3] =0
X[1] = X[2]+X[3]
# GRADIENT VECTOR
Grd[1] = -S[1]
Grd[2] = S[2]
Grd[3] = S[3]
}
Out <- data.frame(Gr = Grd)
Out
}

Should this be

LimitStateFun <- function(X,S,P){

instead?

Hi,
I tried to put this coefficient P, and it didn't work tho

Then check

    Dummy <- LimitStateFun(X,Sz) 

Same error

DS unused argument

It’s being called with only two arguments, it expects three

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.