commit 590ebe6cb5f9993507b4a5f87f8b425b6303ff6a
parent 029cf15cc67fcdcc807fa2071db7557b1076f96f
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Mon, 27 Jul 2020 17:18:27 +0200
Rewind the time on solid reinjection
Diffstat:
1 file changed, 15 insertions(+), 0 deletions(-)
diff --git a/src/sdis_heat_path_boundary_Xd.h b/src/sdis_heat_path_boundary_Xd.h
@@ -600,6 +600,11 @@ XD(solid_solid_boundary_path)
}
}
+ /* Time rewind */
+ res = XD(time_rewind)(mdm, rng, reinject_dst, fp_to_meter, ctx, rwalk, T);
+ if(res != RES_OK) goto error;
+ if(T->done) goto exit; /* Limit condition was reached */
+
/* Perform reinjection. */
XD(move_pos)(rwalk->vtx.P, dir, (float)reinject_dst);
if(hit->distance == reinject_dst) {
@@ -764,6 +769,11 @@ XD(solid_fluid_boundary_path)
}
}
+ /* Time rewind */
+ res = XD(time_rewind)(solid, rng, reinject_dst, fp_to_meter, ctx, rwalk, T);
+ if(res != RES_OK) goto error;
+ if(T->done) goto exit; /* Limit condition was reached */
+
/* Perform solid reinjection */
XD(move_pos)(rwalk->vtx.P, dir0, reinject_dst);
if(hit.distance == reinject_dst) {
@@ -898,6 +908,11 @@ XD(solid_boundary_with_flux_path)
}
}
+ /* Time rewind */
+ res = XD(time_rewind)(mdm, rng, reinject_dst, fp_to_meter, ctx, rwalk, T);
+ if(res != RES_OK) goto error;
+ if(T->done) goto exit; /* Limit condition was reached */
+
/* Reinject. If the reinjection move the point too close of a boundary,
* assume that the zone is isotherm and move to the boundary. */
XD(move_pos)(rwalk->vtx.P, dir0, reinject_dst);