  chris_rodrigues

Members

1

1

Everything posted by chris_rodrigues

1. Mike & Andrew - I came up with a kludgy, resource-intensive solution, but it works. Let's say \$tau is a continuous signal specifying the reactor residence time in minutes. Create a new formula that calculates the average of \$tau in 10-minute time intervals, and then round it to the nearest 10-minute integer value: \$tenminutes = periods(10min) \$tau_avg = \$tau.aggregate(average(),\$tenminutes,startKey()) round(\$tau_avg/10)*10 Now, create a formula that defines multiple signals that apply the exponential filter to the reaction parameter (in my case, monomer concentration) explicitly for each possible value of \$tau_rounded. Then splice these signals together based on the current value of \$tau_rounded. //conditions \$tau10 = \$tau_rounded == 10 \$tau20 = \$tau_rounded == 20 \$tau30 = \$tau_rounded == 30 //signals \$CC2_T10 = \$CC2SS.exponentialFilter(10min,1min) \$CC2_T20 = \$CC2SS.exponentialFilter(20min,1min) \$CC2_T30 = \$CC2SS.exponentialFilter(30min,1min) //final spliced signal: exponential filter with varying values of tau \$CC2SS //default is the steady state C2 concentration .splice(\$CC2_T10, \$tau10) .splice(\$CC2_T20, \$tau20) .splice(\$CC2_T30, \$tau30) //extend as needed to cover expected range of values of \$tau_rounded edit: of course, this method has some obvious limitations. It is not going to be accurate during time periods when the residence time and concentration are both changing (reactor startup, process upset, etc.). There will be a discontinuity in the signal for each "step" in the residence time, as it jumps between the exponential signals. Perhaps an agileFilter could be applied at the end to smooth it out. It's a decent approximation (better than nothing), and during times when the residence time is constant, the output will match that of the exponentialFilter for the current residence time.
×