rho = 0 for l in range(len(layers)): m = wherePositive(z - z_bottom) * whereNonPositive(z - (z_bottom + layers[l])) v_p = v_p * (1 - m) + v_Ps[l] * m v_s = v_s * (1 - m) + v_Ss[l] * m rho = rho * (1 - m) + rhos[l] * m vareps = vareps * (1 - m) + epss[l] * m gamma = gamma * (1 - m) + gammas[l] * m delta = delta * (1 - m) + deltas[l] * m z_bottom += layers[l] wl = Ricker(frq) dt = min((1. / 5.) * min(inf(domain.getSize() / v_p), inf(domain.getSize() / v_s)), wl.getTimeScale()) sw = HTIWave(domain, v_p, v_s, wl, src_tags[0], source_vector=src_dir, eps=vareps, gamma=gamma, delta=delta, rho=rho, absorption_zone=None, absorption_cut=1e-2, lumping=True,