# mean B br_m = a.vals[:, :, a.lut[801], j].reshape((1, nt, nr)) bt_m = a.vals[:, :, a.lut[802], j].reshape((1, nt, nr)) bp_m = a.vals[:, :, a.lut[803], j].reshape((1, nt, nr)) # mean poloidal vort. and current (for phi-derivatives) omr_m = a.vals[:, :, a.lut[301], j].reshape((1, nt, nr)) omt_m = a.vals[:, :, a.lut[302], j].reshape((1, nt, nr)) jr_m = a.vals[:, :, a.lut[1001], j].reshape((1, nt, nr)) if not bad_jt: jt_m = a.vals[:, :, a.lut[1004], j].reshape((1, nt, nr)) else: jt_m = np.zeros_like(jr_m) # full (poloidal) derivatives v dvrdr = drad(vr, rr) dvtdr = drad(vt, rr) dvpdr = drad(vp, rr) dvrdt = dth(vr, tt) / rr_3d dvtdt = dth(vt, tt) / rr_3d dvpdt = dth(vp, tt) / rr_3d # full (toroidal) derivatives v dvrdp = dvpdr + (1. / rr_3d) * vp + omt dvtdp = dvpdt + (cott_3d / rr_3d) * vp - omr dvpdp = -dlnrho*vr - dvrdr - (2./rr_3d)*vr - dvtdt -\ (cott_3d/rr_3d)*vt # full (poloidal) derivatives B dbrdr = drad(br, rr)
bt_m = a.vals[:, :, a.lut[802], j].reshape((1, nt, nr)) # calculate flux terms Bp_meanshear = (br*dOmdr + bt*dOmdt) Bp_meanshear_m = (br_m*dOmdr + bt_m*dOmdt) # still needs to be multiplied by a time scale... # these are angular momentum fluxes from magnetic tension # they include the factor of 4pi (in geofactor) flux_r = np.mean(geofactor*Bp_meanshear*br, axis=0)*my_weight flux_t = np.mean(geofactor*Bp_meanshear*bt, axis=0)*my_weight flux_r_m = np.mean(geofactor*Bp_meanshear_m*br_m, axis=0)*my_weight flux_t_m = np.mean(geofactor*Bp_meanshear_m*bt_m, axis=0)*my_weight torque_r = drad(flux_r, rr) + (2/rr_2d)*flux_r torque_t = (1/rr_2d)*(dth(flux_t, tt) + cott_2d*flux_t) torque = torque_r + torque_t torque_r_m = drad(flux_r_m, rr) + (2/rr_2d)*flux_r_m torque_t_m = (1/rr_2d)*(dth(flux_t_m, tt) + cott_2d*flux_t_m) torque_m = torque_r_m + torque_t_m # add to my_vals array # first the full terms indstart = 0 my_vals[:, :, indstart + 0] += flux_r my_vals[:, :, indstart + 1] += flux_t my_vals[:, :, indstart + 2] += torque_r my_vals[:, :, indstart + 3] += torque_t my_vals[:, :, indstart + 4] += torque
for i in range(my_nfiles): a = reading_func1(radatadir1 + str(my_files[i]).zfill(8), '') mer = reading_func2(radatadir2 + str(my_files[i]).zfill(8), '') niter = min(a.niter, mer.niter) my_weight = 1.0 / (nfiles * niter) for j in range(niter - 1, -1, -1): # go last to first in case "niters" # don't agree # mean fields br_m = a.vals[:, :, a.lut[801], 0].reshape((1, nt, nr)) bt_m = a.vals[:, :, a.lut[802], 0].reshape((1, nt, nr)) bp_m = a.vals[:, :, a.lut[803], 0].reshape((1, nt, nr)) # mean derivs dbrdr_m = drad(br_m, rr) dbtdt_m = dth(bt_m, tt) dbpdr_m = drad(bp_m, rr) dbpdt_m = dth(bp_m, tt) # full fields br = mer.vals[:, :, :, mer.lut[801], 0] bt = mer.vals[:, :, :, mer.lut[802], 0] bp = mer.vals[:, :, :, mer.lut[803], 0] # full derivs dbrdr = drad(br, rr) dbtdt = dth(bt, tt) dbpdr = drad(bp, rr) dbpdt = dth(bp, tt)