Hi Sara,
I did not check the code in much detail, just used your formulas to do:
-
define dissolution rate outside of the deriv statement
-
limit the drate to 0-+Inf
-
added bioavailability (F_p) to the absorption
-
defined the static value Aadose as total dose amount
Here is the code:
test()
{
GI compartment
deriv(Aa = - drate * F_p * Aadose)
Central compartment
deriv(A1_p = drate *F_p * Aa - (Cl_p * C_p)- (Q_p * (C_p - C2_p)) - (VMax_p_m * C_p / (C_p + Km_p_m)))
Peripheral compartment
deriv(A2_p = (Q_p * (C_p - C2_p)))
Define Weibull for dissolution rate
drate=max(0,((Fmax*(BetascB)(t^((BetascB)-1))exp(-(t^((BetascB)))/(AlphascA)))/(Alpha*scA)))
Define Dosepoint
dosepoint(Aa, idosevar=Aadose)
Concentrations definition
C_p = A1_p / V_p
C2_p = A2_p / V2_p
Model erro
error(CEps_p = 0.1)
observe(Parent = C_p * exp(CEps_p))
Initial estimates
Dissolution (Weibull)
fixef(Fmax(freeze) = c(, 1, ))
fixef(Alpha(freeze) = c(, 7, ))
fixef(Beta(freeze) = c(, 1.5, ))
fixef(scA = c(, 80, ))
fixef(scB = c(, 2, ))
Central compartment
fixef(V_p = c(0, 88, 400))
fixef(Cl_p = c(0, 28, 60))
fixef(F_p = c(0, 0.05, 0.4))
Peripheral compartment
fixef(V2_p = c(0, 181, 3000))
fixef(Q_p = c(0, 22, 300))
Metabolite conversion
fixef(VMax_p_m = c(0, 329, 6000))
fixef(Km_p_m = c(0, 700, 5000))
}
An here are some plots:
[attachment=3740:drate.png]
[attachment=3742:compartments.png]
Let me know if this does not work for you.
Bernd