void OutputType::LoadOutputData(MeshBlock *pmb) { if (ContainVariable(output_params.variable, "D") || ContainVariable(output_params.variable, "cons")) { pod = new OutputData; pod->type = "SCALARS"; pod->name = "dens"; pod->data.InitWithShallowSlice(phyd->u, 4, IDN, 1); AppendOutputDataNode(pod); num_vars_++; }
if (ContainVariable(output_params.variable, "d") || ContainVariable(output_params.variable, "prim")) { pod = new OutputData; pod->type = "SCALARS"; pod->name = "rho"; pod->data.InitWithShallowSlice(phyd->w, 4, IDN, 1); AppendOutputDataNode(pod); num_vars_++; }
if (NON_BAROTROPIC_EOS) { if (ContainVariable(output_params.variable, "E") || ContainVariable(output_params.variable, "cons")) { pod = new OutputData; pod->type = "SCALARS"; pod->name = "Etot"; if (porb->orbital_advection_defined && !output_params.orbital_system_output) { porb->ConvertOrbitalSystem(phyd->w, phyd->u, OrbitalTransform::cons); pod->data.InitWithShallowSlice(porb->u_orb, 4, IEN, 1); } else { pod->data.InitWithShallowSlice(phyd->u, 4, IEN, 1); } AppendOutputDataNode(pod); num_vars_++; }
if (ContainVariable(output_params.variable, "p") || ContainVariable(output_params.variable, "prim")) { pod = new OutputData; pod->type = "SCALARS"; pod->name = "press"; pod->data.InitWithShallowSlice(phyd->w, 4, IPR, 1); AppendOutputDataNode(pod); num_vars_++; } }
if (ContainVariable(output_params.variable, "m") || ContainVariable(output_params.variable, "cons")) { pod = new OutputData; pod->type = "VECTORS"; pod->name = "mom"; if (porb->orbital_advection_defined && !output_params.orbital_system_output) { porb->ConvertOrbitalSystem(phyd->w, phyd->u, OrbitalTransform::cons); pod->data.InitWithShallowSlice(porb->u_orb, 4, IM1, 3); } else { pod->data.InitWithShallowSlice(phyd->u, 4, IM1, 3); } AppendOutputDataNode(pod); num_vars_ += 3; if (output_params.cartesian_vector) { AthenaArray<Real> src; if (porb->orbital_advection_defined && !output_params.orbital_system_output) { src.InitWithShallowSlice(porb->u_orb, 4, IM1, 3); } else { src.InitWithShallowSlice(phyd->u, 4, IM1, 3); } pod = new OutputData; pod->type = "VECTORS"; pod->name = "mom_xyz"; pod->data.NewAthenaArray(3, phyd->u.GetDim3(), phyd->u.GetDim2(), phyd->u.GetDim1()); CalculateCartesianVector(src, pod->data, pmb->pcoord); AppendOutputDataNode(pod); num_vars_ += 3; } }
if (ContainVariable(output_params.variable, "m1")) { pod = new OutputData; pod->type = "SCALARS"; pod->name = "mom1"; pod->data.InitWithShallowSlice(phyd->u, 4, IM1, 1); AppendOutputDataNode(pod); num_vars_++; } if (ContainVariable(output_params.variable, "m2")) { pod = new OutputData; pod->type = "SCALARS"; pod->name = "mom2"; if (porb->orbital_advection_defined && !output_params.orbital_system_output && porb->orbital_direction == 1) { porb->ConvertOrbitalSystem(phyd->w, phyd->u, OrbitalTransform::cons); pod->data.InitWithShallowSlice(porb->u_orb, 4, IM2, 1); } else { pod->data.InitWithShallowSlice(phyd->u, 4, IM2, 1); } AppendOutputDataNode(pod); num_vars_++; } if (ContainVariable(output_params.variable, "m3")) { pod = new OutputData; pod->type = "SCALARS"; pod->name = "mom3"; if (porb->orbital_advection_defined && !output_params.orbital_system_output && porb->orbital_direction == 2) { porb->ConvertOrbitalSystem(phyd->w, phyd->u, OrbitalTransform::cons); pod->data.InitWithShallowSlice(porb->u_orb, 4, IM3, 1); } else { pod->data.InitWithShallowSlice(phyd->u, 4, IM3, 1); } AppendOutputDataNode(pod); num_vars_++; }
if (ContainVariable(output_params.variable, "v") || ContainVariable(output_params.variable, "prim")) { pod = new OutputData; pod->type = "VECTORS"; pod->name = "vel"; if (porb->orbital_advection_defined && !output_params.orbital_system_output) { porb->ConvertOrbitalSystem(phyd->w, phyd->u, OrbitalTransform::prim); pod->data.InitWithShallowSlice(porb->w_orb, 4, IVX, 3); } else { pod->data.InitWithShallowSlice(phyd->w, 4, IVX, 3); } AppendOutputDataNode(pod); num_vars_ += 3; if (output_params.cartesian_vector) { AthenaArray<Real> src; if (porb->orbital_advection_defined && !output_params.orbital_system_output) { src.InitWithShallowSlice(porb->w_orb, 4, IVX, 3); } else { src.InitWithShallowSlice(phyd->w, 4, IVX, 3); } pod = new OutputData; pod->type = "VECTORS"; pod->name = "vel_xyz"; pod->data.NewAthenaArray(3, phyd->w.GetDim3(), phyd->w.GetDim2(), phyd->w.GetDim1()); CalculateCartesianVector(src, pod->data, pmb->pcoord); AppendOutputDataNode(pod); num_vars_ += 3; } }
if (ContainVariable(output_params.variable, "vx") || ContainVariable(output_params.variable, "v1")) { pod = new OutputData; pod->type = "SCALARS"; pod->name = "vel1"; pod->data.InitWithShallowSlice(phyd->w, 4, IVX, 1); AppendOutputDataNode(pod); num_vars_++; } if (ContainVariable(output_params.variable, "vy") || ContainVariable(output_params.variable, "v2")) { pod = new OutputData; pod->type = "SCALARS"; pod->name = "vel2"; if (porb->orbital_advection_defined && !output_params.orbital_system_output && porb->orbital_direction == 1) { porb->ConvertOrbitalSystem(phyd->w, phyd->u, OrbitalTransform::prim); pod->data.InitWithShallowSlice(porb->w_orb, 4, IVY, 1); } else { pod->data.InitWithShallowSlice(phyd->w, 4, IVY, 1); } AppendOutputDataNode(pod); num_vars_++; } if (ContainVariable(output_params.variable, "vz") || ContainVariable(output_params.variable, "v3")) { pod = new OutputData; pod->type = "SCALARS"; pod->name = "vel3"; if (porb->orbital_advection_defined && !output_params.orbital_system_output && porb->orbital_direction == 2) { porb->ConvertOrbitalSystem(phyd->w, phyd->u, OrbitalTransform::prim); pod->data.InitWithShallowSlice(porb->w_orb, 4, IVZ, 1); } else { pod->data.InitWithShallowSlice(phyd->w, 4, IVZ, 1); } AppendOutputDataNode(pod); num_vars_++; }
if (SELF_GRAVITY_ENABLED) { if (ContainVariable(output_params.variable, "phi") || ContainVariable(output_params.variable, "prim") || ContainVariable(output_params.variable, "cons")) { pod = new OutputData; pod->type = "SCALARS"; pod->name = "phi"; pod->data.InitWithShallowSlice(pgrav->phi, 4, 0, 1); AppendOutputDataNode(pod); num_vars_++; if (pgrav->output_defect) { pod = new OutputData; pod->type = "SCALARS"; pod->name = "defect-phi"; pod->data.InitWithShallowSlice(pgrav->def, 4, 0, 1); AppendOutputDataNode(pod); num_vars_++; } } }
|