Esempio n. 1
0
LOCAL	int delete_phys_curves_at_old_node(
	NODE  *oldn,
	int   status)
{
	boolean untrack = NO;
	CURVE   **c;
	int     wtype = FIRST_VECTOR_PHYSICS_WAVE_TYPE;

	for (c = oldn->in_curves; c && *c; ++c)
	{
	    if (wave_type(*c) < wtype)
		continue;
	    untracked_hyper_surf(*c) = YES;
	    untrack = YES;
	    status = REPEAT_TIME_STEP;
	}
	for (c = oldn->out_curves; c && *c; ++c)
	{
	    if (wave_type(*c) < wtype)
		continue;
	    untracked_hyper_surf(*c) = YES;
	    untrack = YES;
	    status = REPEAT_TIME_STEP;
	}
	if (untrack == YES)
	{
	    (void) printf("WARNING in delete_phys_curves_at_old_node(), "
			  "turning off tracking of vector curves at node\n");
	    print_node(oldn);
	}
	return status;
}		/*end delete_phys_curves_at_old_node*/
Esempio n. 2
0
EXPORT	int reg_to_mach_diff_reconfigure(
	O_CURVE		**newc,
	O_CURVE		**oldc,
	NODE		*oldn)
{
	int		i;

	debug_print("mach_diff","Entering reg_to_mach_diff_reconfigure()\n");
	if (debugging("mach_diff"))
	{
	    (void) printf("WARNING in diffraction_node_propagate(), "
	                  "bifurcation from regular diffraction "
	                  "to mach difraction.\n");
	}

	if (newc[5]->orient == POSITIVE_ORIENTATION)
	{
	    start_status(oldc[5]->curve) = INCIDENT;
	    start_status(newc[5]->curve) = INCIDENT;
	}
	else
	{
	    end_status(oldc[5]->curve) = INCIDENT;
	    end_status(newc[5]->curve) = INCIDENT;
	}
	if (newc[0]->orient == POSITIVE_ORIENTATION)
	{
	    start_status(oldc[0]->curve) = TRANSMITTED;
	    start_status(newc[0]->curve) = TRANSMITTED;
	}
	else
	{
	    end_status(oldc[0]->curve) = TRANSMITTED;
	    end_status(newc[0]->curve) = TRANSMITTED;
	}

		/* untrack any reflected waves */

	for (i = 1; i < 4; i++)
	    if (newc[i]->curve != NULL)
	    	untracked_hyper_surf(newc[i]->curve) = YES;

	node_type(oldn) = TRANSMISSION_NODE;

	debug_print("mach_diff","Leaving reg_to_mach_diff_reconfigure()\n");
	return REPEAT_TIME_STEP_NODE;
}		/*end reg_to_mach_diff_reconfigure*/