| 91 | } |
| 92 | |
| 93 | int |
| 94 | OutCrossingAnalysis::analyze(void) |
| 95 | { |
| 96 | |
| 97 | // Alert the user that the analysis has started |
| 98 | opserr << "Out-Crossing Analysis is running ... " << endln; |
| 99 | |
| 100 | // Declare variables used in this method |
| 101 | int numRV = theReliabilityDomain->getNumberOfRandomVariables(); |
| 102 | static NormalRV aStdNormRV(1,0.0,1.0); |
| 103 | int numVel, i, j, k, kk, nodeNumber, dofNumber; |
| 104 | double dgduValue, accuSum; |
| 105 | Vector uStar2(numRV); |
| 106 | Vector alpha(numRV), alpha2(numRV), alpha_k(numRV), alpha_kk(numRV); |
| 107 | double beta1, beta2; |
| 108 | double pf1, pf2; |
| 109 | // int n_2; |
| 110 | // double a, b, integral, h, fa, fb, sum_fx2j, sum_fx2j_1, Pmn1; |
| 111 | // double a, b, c, integral, fa, fb, fc; |
| 112 | double a, Pmn1; |
| 113 | char string[500]; |
| 114 | |
| 115 | |
| 116 | // Determine number of points |
| 117 | double nsteps = stepsToEnd-stepsToStart; //total integration steps |
| 118 | int numPoints = (int)floor(nsteps/sampleFreq); // how many time points of computation of outcrossingRate |
| 119 | numPoints++; |
| 120 | double dt = theGFunEvaluator->getDt(); // integration time step |
| 121 | double Dt = dt*impulseFreq; // time between impuses. |
| 122 | double T = dt*sampleFreq*numPoints; // total time of last analysis |
| 123 | |
| 124 | |
| 125 | // Allocate reult vectors |
| 126 | Vector nu(numPoints); |
| 127 | Vector ED(numPoints); |
| 128 | Vector pf(numPoints); |
| 129 | Vector beta(numPoints); |
| 130 | Matrix Pmn2(numPoints,numPoints); |
| 131 | Matrix allAlphas(numRV,numPoints); |
| 132 | |
| 133 | |
| 134 | // Open output file and start writing to it |
| 135 | ofstream outputFile( fileName, ios::out ); |
| 136 | |
| 137 | |
| 138 | // Loop over number of limit-state functions and perform analysis |
| 139 | LimitStateFunctionIter lsfIter = theReliabilityDomain->getLimitStateFunctions(); |
| 140 | LimitStateFunction *theLimitStateFunction; |
| 141 | //for (lsf=1; lsf<=numLsf; lsf++ ) { |
| 142 | while ((theLimitStateFunction = lsfIter()) != 0) { |
| 143 | |
| 144 | int lsf = theLimitStateFunction->getTag(); |
| 145 | |
| 146 | // Inform the user which limit-state function is being evaluated |
| 147 | opserr << "Limit-state function number: " << lsf << endln; |
| 148 | |
| 149 | |
| 150 | // Start printing results to the output file |
nothing calls this directly
no test coverage detected