It is quite possible to use an ordered simplex if you do
data {
int<lower=1> K;
vector<lower=0>[K] alpha;
}
parameters {
positive_ordered[K] lambda;
}
transformed parameters {
simplex[K] pi = lambda / sum(lambda);
}
model {
// implies pi ~ dirichlet(alpha)
target += gamma_lpdf(lambda | alpha, 1);
// use pi in your likelihood
}
Opinions differ as to whether this is a disaster or works perfectly fine.