-
Notifications
You must be signed in to change notification settings - Fork 60
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adding an example of coupling heat with history and wave.
- Loading branch information
Showing
1 changed file
with
250 additions
and
0 deletions.
There are no files selected for viewing
250 changes: 250 additions & 0 deletions
250
Patterns/Experiments/DanWills/heat-equation-boiling-history-wave_glidersUnstable.vti
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,250 @@ | ||
<?xml version="1.0"?> | ||
<VTKFile type="ImageData" version="0.1" byte_order="LittleEndian" compressor="vtkZLibDataCompressor"> | ||
<RD format_version="3"> | ||
<description> | ||
The <a href="http://en.wikipedia.org/wiki/Heat_equation">heat equation</a>, also known as the diffusion equation, describes multiple phenomena including the spreading-out of heat in a solid body and the diffusion of chemicals in a liquid. | ||
|
||
This formula adds additional reagents to the Heat Equation that model something akin to 'Boil History' in B and 'Boil Wave/Wake' in C and D. When the boil threshold is exceeded, the boil-event emits value into history and wave, allowing it to leave a diffusing history behind it, as well as a rippling wake. | ||
|
||
In this pattern (using the boiling heat formula as described above), moving glider-like wavefronts form against a background of chaotic boil-events. Constant creation and annihlation usually ends up with a particular flow-direction winning out overall, and wider wavefronts can form once this direction is established, which tend to dominate the individual smaller wavefronts. | ||
|
||
Written by Dan Wills, (as a bit of an homage-to-CAPOW by Rudy Rucker) based on earlier code in the Ready repo. | ||
</description> | ||
<rule name="Heat Equation with History And Wave" type="formula" wrap="1" neighborhood_type="vertex" neighborhood_range="1" neighborhood_weight="laplacian"> | ||
<param name="timestep"> | ||
0.01 | ||
</param> | ||
<param name="a_diffusion_rate"> | ||
15 | ||
</param> | ||
<param name="a_boil_rate"> | ||
0.01 | ||
</param> | ||
<param name="a_from_b"> | ||
0 | ||
</param> | ||
<param name="a_boil_history_rate"> | ||
0.124 | ||
</param> | ||
<param name="a_clamp_min"> | ||
0 | ||
</param> | ||
<param name="a_clamp_max"> | ||
100 | ||
</param> | ||
<param name="a_power"> | ||
0.97 | ||
</param> | ||
<param name="boil_diffusion"> | ||
-0.05 | ||
</param> | ||
<param name="boil_threshold"> | ||
0.98 | ||
</param> | ||
<param name="boil_heat_loss"> | ||
0.5 | ||
</param> | ||
<param name="boil_power"> | ||
0.25 | ||
</param> | ||
<param name="b_from_a"> | ||
0 | ||
</param> | ||
<param name="b_from_boil"> | ||
222 | ||
</param> | ||
<param name="b_damp"> | ||
0.395 | ||
</param> | ||
<param name="b_diffusion"> | ||
16 | ||
</param> | ||
<param name="b_pow"> | ||
0.999 | ||
</param> | ||
<param name="b_pow_norm"> | ||
1 | ||
</param> | ||
<param name="b_clamp_min"> | ||
0 | ||
</param> | ||
<param name="b_clamp_max"> | ||
1 | ||
</param> | ||
<param name="wave_from_a"> | ||
0 | ||
</param> | ||
<param name="wave_from_b"> | ||
0 | ||
</param> | ||
<param name="wave_from_boil"> | ||
155 | ||
</param> | ||
<param name="wave_diffusion"> | ||
0.2 | ||
</param> | ||
<param name="wave_damp"> | ||
0.9999 | ||
</param> | ||
<param name="wave_power"> | ||
1.0008 | ||
</param> | ||
<param name="wave_pow_norm"> | ||
1.5 | ||
</param> | ||
<param name="wave_DC_value"> | ||
0.5 | ||
</param> | ||
<param name="wave_clamp"> | ||
2.5 | ||
</param> | ||
<param name="wave_to_a"> | ||
0.013 | ||
</param> | ||
<param name="wave_to_b"> | ||
0 | ||
</param> | ||
<param name="wave_to_Da"> | ||
0 | ||
</param> | ||
<param name="wave_to_Db"> | ||
0 | ||
</param> | ||
<param name="wave_to_b_damp"> | ||
0 | ||
</param> | ||
<formula number_of_chemicals="4"> | ||
a = clamp( sign(a) * pow( fabs( a + a_boil_rate ), (float4) a_power ) + (c-wave_DC_value)*wave_to_a, (float4) a_clamp_min, (float4) a_clamp_max); | ||
float4 boil = pow( clamp( (float4) ( ((a+laplacian_a * boil_diffusion) - boil_threshold ) * boil_heat_loss ), (float4) 0.0, (float4) 1.0 ), (float4)boil_power ); | ||
a = a + ( -a * boil + b * -a * a_boil_history_rate ); | ||
delta_a = laplacian_a * (a_diffusion_rate + (c-wave_DC_value)*wave_to_Da) + (c-wave_DC_value)*wave_to_a + b*a_from_b; | ||
delta_b = -b*(b_damp + c*wave_to_b_damp) + a*b_from_a + boil*b_from_boil + (b_diffusion + (c-wave_DC_value)*wave_to_Db) * laplacian_b + (c-wave_DC_value)*wave_to_b; | ||
b = clamp( sign(b) * pow( (float4)( fabs(b)/b_pow_norm ), (float4)b_pow )*b_pow_norm, b_clamp_min, b_clamp_max ); | ||
c = wave_DC_value + clamp( sign(c-wave_DC_value) * pow( (float4)( fabs(c-wave_DC_value)/wave_pow_norm * wave_damp ), (float4)wave_power )*wave_pow_norm, -wave_clamp, wave_clamp); | ||
delta_d = (laplacian_c) * wave_diffusion; | ||
delta_c = d + delta_d + a * wave_from_a + b * wave_from_b + boil*wave_from_boil; | ||
</formula> | ||
|
||
</rule> | ||
<initial_pattern_generator apply_when_loading="true"> | ||
<overlay chemical="a"> | ||
<overwrite> | ||
|
||
</overwrite> | ||
<white_noise low="0" high="1"> | ||
|
||
</white_noise> | ||
<rectangle> | ||
<point3D x="0" y="0" z="0"> | ||
|
||
</point3D> | ||
<point3D x="1" y="1" z="1"> | ||
|
||
</point3D> | ||
|
||
</rectangle> | ||
|
||
</overlay> | ||
<overlay chemical="b"> | ||
<overwrite> | ||
|
||
</overwrite> | ||
<constant value="0"> | ||
|
||
</constant> | ||
<everywhere> | ||
|
||
</everywhere> | ||
|
||
</overlay> | ||
|
||
</initial_pattern_generator> | ||
<render_settings> | ||
<surface_color r="1" g="1" b="1"> | ||
|
||
</surface_color> | ||
<color_low r="0" g="0" b="0"> | ||
|
||
</color_low> | ||
<color_high r="1" g="1" b="1"> | ||
|
||
</color_high> | ||
<show_color_scale value="false"> | ||
|
||
</show_color_scale> | ||
<show_multiple_chemicals value="false"> | ||
|
||
</show_multiple_chemicals> | ||
<active_chemical value="c"> | ||
|
||
</active_chemical> | ||
<low value="0"> | ||
|
||
</low> | ||
<high value="1"> | ||
|
||
</high> | ||
<vertical_scale_1D value="1"> | ||
|
||
</vertical_scale_1D> | ||
<vertical_scale_2D value="40"> | ||
|
||
</vertical_scale_2D> | ||
<contour_level value="0.25"> | ||
|
||
</contour_level> | ||
<use_wireframe value="false"> | ||
|
||
</use_wireframe> | ||
<show_cell_edges value="false"> | ||
|
||
</show_cell_edges> | ||
<show_bounding_box value="true"> | ||
|
||
</show_bounding_box> | ||
<slice_3D value="true"> | ||
|
||
</slice_3D> | ||
<slice_3D_axis value="z"> | ||
|
||
</slice_3D_axis> | ||
<slice_3D_position value="0.5"> | ||
|
||
</slice_3D_position> | ||
<show_displacement_mapped_surface value="false"> | ||
|
||
</show_displacement_mapped_surface> | ||
<color_displacement_mapped_surface value="true"> | ||
|
||
</color_displacement_mapped_surface> | ||
<use_image_interpolation value="true"> | ||
|
||
</use_image_interpolation> | ||
<timesteps_per_render value="128"> | ||
|
||
</timesteps_per_render> | ||
|
||
</render_settings> | ||
|
||
</RD> | ||
<ImageData WholeExtent="0 255 0 255 0 0" Origin="0 0 0" Spacing="1 1 1"> | ||
<Piece Extent="0 255 0 255 0 0"> | ||
<PointData> | ||
<DataArray type="Float32" Name="a" format="binary" RangeMin="0.70942783356" RangeMax="0.96719479561"> | ||
CAAAAACAAAAAAAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA=eJztwQEBAAAAgJD+r+4ICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAAXic7cEBAQAAAICQ/q/uCAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGIAAAAF4nO3BAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiAAAABeJztwQEBAAAAgJD+r+4ICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAAXic7cEBAQAAAICQ/q/uCAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGIAAAAF4nO3BAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiAAAABeJztwQEBAAAAgJD+r+4ICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAAXic7cEBAQAAAICQ/q/uCAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGIAAAAE= | ||
</DataArray> | ||
<DataArray type="Float32" Name="b" format="binary" RangeMin="0.076563090086" RangeMax="0.68640810251"> | ||
CAAAAACAAAAAAAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA=eJztwQEBAAAAgJD+r+4ICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAAXic7cEBAQAAAICQ/q/uCAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGIAAAAF4nO3BAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiAAAABeJztwQEBAAAAgJD+r+4ICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAAXic7cEBAQAAAICQ/q/uCAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGIAAAAF4nO3BAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiAAAABeJztwQEBAAAAgJD+r+4ICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAAXic7cEBAQAAAICQ/q/uCAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGIAAAAE= | ||
</DataArray> | ||
<DataArray type="Float32" Name="c" format="binary" RangeMin="-1.1533857584" RangeMax="3.239613533"> | ||
CAAAAACAAAAAAAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA=eJztwQEBAAAAgJD+r+4ICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAAXic7cEBAQAAAICQ/q/uCAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGIAAAAF4nO3BAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiAAAABeJztwQEBAAAAgJD+r+4ICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAAXic7cEBAQAAAICQ/q/uCAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGIAAAAF4nO3BAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiAAAABeJztwQEBAAAAgJD+r+4ICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAAXic7cEBAQAAAICQ/q/uCAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGIAAAAE= | ||
</DataArray> | ||
<DataArray type="Float32" Name="d" format="binary" RangeMin="-2.813505888" RangeMax="0.32402923703"> | ||
CAAAAACAAAAAAAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA=eJztwQEBAAAAgJD+r+4ICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAAXic7cEBAQAAAICQ/q/uCAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGIAAAAF4nO3BAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiAAAABeJztwQEBAAAAgJD+r+4ICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAAXic7cEBAQAAAICQ/q/uCAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGIAAAAF4nO3BAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiAAAABeJztwQEBAAAAgJD+r+4ICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAAXic7cEBAQAAAICQ/q/uCAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGIAAAAE= | ||
</DataArray> | ||
</PointData> | ||
<CellData> | ||
</CellData> | ||
</Piece> | ||
</ImageData> | ||
</VTKFile> |