Claude?
GPT5?
Codex?
Claude Code?
Grok (really?)
... anything else?
pls comment - I get lost a bit and think of how to get along with all that stuff..
Computer Simulations in Physics. Numerical modelling of natural phenomena. All written by me in C/C++/HTML5. Most of them are with the code available from me,
Claude?
GPT5?
Codex?
Claude Code?
Grok (really?)
... anything else?
pls comment - I get lost a bit and think of how to get along with all that stuff..
(due to my Universtiy websites maintenance I temporarly moved everything here)
LLMs are taking over. We can't escape from that. So, yes, have you ever got lost in the context, with too long conversation, hours spend on trial and error so that your chat actually corrected something but ate its own tail at some point doing wrong what was good at the beginning.. Yup, this is where my story on Single Prompts.
When LLM's appeared I was struggling with the question about the value of our work. What will be valuable. What we can give to each other in this new era. Although this is now in the middle of change and middle of paradigm shift in programming in general, I think there is something. Prompts. New way of writing programs.
Imagine you want to write a piece of software and instead of starting from scratch you take a prompt at some level of abstraction that gets you to some specific point. It can be a program that you may start developming from. When I've recently came across the idea that Single Prompts will be of some value in the future I immediately thought about modelling, my lovely subject. I've sat down for a few months and yup, there it is, I was lucky to get through three taugh reviews and together with Taylor&Francis we will release the book on prompting just this July!
Computational Modelling with Single Prompts, 236 Pages, 135 images, Series in Computational Physics, CRC Press (Taylor and Francis), 2026 (Release July)
The concept of the book is simple. It covers 65 models from computational physics (from cellular automata, chaos, PDE's, particles, fluids, ants colonies, granular matter modelling of snowflakes, epidemia and even stalagmites growth). Each chapter consists of 1 model, full description (written by myself, no LLM was used here), then algorithm and single, full prompt. The objective of the prompt was, that it creates fully functional implementation in JavaScript for the model. Then, after the code was generated, results are included in the chapter. An exemplary result is on the book cover, in fact it was done using Claude Sonnet chat (I've used several other language models in the book, tested many).
Working on the book was a lot of fun, I've always dreamed of a book on modelling, now I was able to write one (many of the models I've implemented by myself in the past but for many I was not able to find time.. now with LLM's it took much less time!). There are many stories about models in the book, there is a specific reason I've included each of them, there are research ideas associated with many of them.
Ask me questions about the book here if you like, that may help me drive this blog as well as this new subject is getting me more deeper and deeper..
Maciej Matyka, 9-06-2026
maciejmatyka.github.io
My HTML JS implementation of three body problem simulation.
Use Verlet algorithm and initial condition that give interesting stable trajectory in 8 shape.
Used as base for animations rendered for my channel here:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<canvas id="mycanvas" width="1280" height="1280"></canvas>
<script type="text/javascript">
var N = 3;
// F = 1/r^2
var fx = [];
var fy = [];
var x= [],vx= [],y= [],vy= [];
var xp1= [], yp1= [];
var xm1= [], ym1= [];
var W,H;
var dt = 0.015;
var m = 1;
var G = 1;//0.001;
var step;
var d;
// przygotowanie do rysowania
var canvas = document.getElementById('mycanvas');
W=800; H=800;
canvas.width = W;
canvas.height = H;
var ctx = canvas.getContext('2d');
// inicjalizacja
function init()
{
for(var i=0; i<N; i++)
{
// x[i]=xm1[i]=xp1[i]=0.5+(0.5)*(Math.random()-0.5);
// y[i]=ym1[i]=xm1[i]=0.5+(0.5)*(Math.random()-0.5);
vx[i] = vy[i] = 0;
}
x[0] = 0.5-0.2;
y[0] = 0.5-0.2;
x[1] = 0.5+0.2;
y[1] = 0.5-0.2;
x[2] = 0.5;
y[2] = 0.5+0.2;
x[0] = 0.97000436; y[0] = -0.24308753;
x[1] = -0.97000436; y[1] = 0.24308753;
x[2] = 0; y[2] = 0;
vx[0] = 0.93240737/2.0;
vy[0] = 0.86473146/2.0;
vx[1] = 0.93240737 / 2.0;
vy[1] = 0.86473146 / 2.0;
vx[2] = -0.93240737;
vy[2] = -0.86473146;
step = 0;
}
function dist(x1,y1,x2,y2) { return Math.sqrt( (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) ); }
// pętla obliczeniowa i rysująca
loop=function()
{
step++;
//rysowanie punktu
ctx.clearRect(0,0,W,H);
ctx.strokeStyle = "rgb(0,0,0)";
for(var i=0; i<N; i++)
{
fx[i] = 0;
fy[i] = 0;
}
// sum forces
for(var i=0; i<N; i++)
for(var j=i+1; j<N; j++)
{
// dij
d = dist(x[i], y[i], x[j], y[j]);
if(d != 0)
{
var rx = x[i] - x[j];
var ry = y[i] - y[j];
var rx = rx / d; // norm
var ry = ry / d; // norm
var Fx = rx * G * m*m / (d*d);
var Fy = ry * G * m*m / (d*d);
fx[i] -= Fx;
fy[i] -= Fy;
fx[j] += Fx;
fy[j] += Fy;
}
}
// integrate
if(step==1)
{
for(var b=0; b<N; b++)
{
vx[b] = vx[b] + fx[b]/m*dt;
vy[b] = vy[b] + fy[b]/m*dt;
xp1[b] = x[b] + vx[b]*dt;
yp1[b] = y[b] + vy[b]*dt;
}
}
else
{
// VERLET
for(var b=0; b<N; b++)
{
xp1[b] = 2*x[b]-xm1[b]+dt*dt*fx[b]/m;
yp1[b] = 2*y[b]-ym1[b]+dt*dt*fy[b]/m;
}
}
for(var b=0; b<N; b++)
{
xm1[b] = x[b];
ym1[b] = y[b];
x[b] = xp1[b];
y[b] = yp1[b];
vx[b] = (x[b] - xm1[b]) / (2*dt);
vy[b] = (y[b] - ym1[b]) / (2*dt);
}
for(var i=0; i<N; i++)
{
ctx.beginPath();
ctx.arc(98*(x[i])+W/2,98*(y[i])+H/2,6,0,2*Math.PI); // kolko
ctx.fill(); // rysuj
}
ctx.font = '48px serif';
ctx.fillText(step.toString(), 10, 50);
//kontynuuj petle
requestAnimationFrame(loop);
};
// start
init();
loop();
</script>
<style type="text/css">
canvas { border: 1px solid rgb(0,0,0); }
</style>
<br>
</body>
</html>
I just resigned from paying for felp.pl, and thus, the collection of physics apps for kids is now available here: http://panoramx.ift.uni.wroc.pl/~maq/felp.pl/
This is the list of shaders I will live code and present (teach) during the Xenium2022 demo party in Katowice.
Feel free to learn and enjoy.
Xenium01, simple gradient
Code:
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
// Normalized pixel coordinates (from 0 to 1)
vec2 uv = fragCoord/iResolution.xy;
float c = uv.x;
vec3 col = vec3(c, c, c);
// Output to screen
fragColor = vec4(col,1.0);
}
Open it here: https://www.shadertoy.com/view/NtGyDW
Xenium02, light
Code:
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
// Normalized pixel coordinates (from 0 to 1)
vec2 uv = fragCoord/iResolution.xy;
vec2 m= vec2(0.25+0.2*sin(iTime*2.0),0.5+0.2*sin(iTime));
float d=1.0-length(uv-m);
// Time varying pixel color
vec3 col = vec3(d,d,d);
// Output to screen
fragColor = vec4(col,1.0);
}
Open it here: https://www.shadertoy.com/view/NlycWW
Xenium03, texture zoom
Code:
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 uv = fragCoord/iResolution.xy;
uv = (uv-vec2(0.5,0.5))*20.0*(0.5+0.45*sin(sin(0.2*iTime)*0.9));
vec4 col = texture(iChannel0, uv);
fragColor = col;
}
Open it here: https://www.shadertoy.com/view/flGyDW
Xenium04, texture zoom motion blur
Code:
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 uv = fragCoord/iResolution.xy;
vec2 uv1 = (uv-vec2(0.5,0.5))*10.0*(0.5+0.2*sin(3.0*iTime));
vec2 uv2 = (uv-vec2(0.5,0.5))*10.0*(0.5+0.22*sin(3.0*iTime));
vec4 col = texture(iChannel0, uv1);
vec4 col2 = texture(iChannel0, uv2);
fragColor = (col+col2)/2.0;
}
Open it here: https://www.shadertoy.com/view/NlGyDW
Xenium05, planar deformation 1
Code:
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 c = vec2(0.2*sin(iTime),0.23*cos(iTime));
vec2 uv = fragCoord/iResolution.xy-vec2(0.5,0.5);
vec2 uv1 = (uv*uv-c)*(uv*uv-c);
vec4 col = texture(iChannel0, uv1);
fragColor = col;
}
Open it here: https://www.shadertoy.com/view/NlyyDW
Xenium06, planar deformation 2 (star)
Code:
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 c = vec2(0.2*sin(iTime),0.23*cos(iTime));
vec2 uv = fragCoord/iResolution.xy-vec2(0.5,0.5);
float d = length(uv);
vec2 uv1 = (uv)/d;//*uv-c)*(uv*uv-c);
vec4 col = texture(iChannel0, uv1+c);
fragColor = col;
}
Open it here: https://www.shadertoy.com/view/flGcDW
Xenium07, planar deformation 3 (deform)
Code:
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 q = fragCoord.xy / iResolution.xy;
vec2 p = (-1.0+2.0*q)*vec2(iResolution.x/iResolution.y,1.0);
// 0-1 aspect ratio, iq
// deform
vec2 uv;
float d = length(p)+0.5;
uv=vec2(p)/d;
vec3 col = texture(iChannel0, uv+iTime*0.5 ).rgb;
col*=d*0.90;
fragColor = vec4(col, 1.0);
}
Open it here: https://www.shadertoy.com/view/NlGcDW
Xenium08, planar walls
Code:
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 q = fragCoord.xy / iResolution.xy;
vec2 p = (-1.0+2.0*q)*vec2(iResolution.x/iResolution.y,1.0);
// 0-1 aspect ratio, IQ
// deform
p.y-=0.75+0.35*sin(iTime*0.3);
vec2 uv;
float d = abs(p.y+0.8); //+0.2*sin(iTime));
uv=vec2(p)/(d); ///sin(phi);
uv.y-=iTime*0.01;
vec3 col = texture(iChannel0, uv+iTime*0.5 ).rgb;
//vec3 col = texture(iChannel0, uv ).rgb;
col*=d*2.90;
fragColor = vec4(col, 1.0);
}
Open it here: https://www.shadertoy.com/view/NtycDW
Xenium09, ball (deformation)
Code:
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 c = vec2(4.5*sin(iTime*1.0),3.53*cos(iTime*1.0));
vec2 uv = fragCoord/iResolution.xy-vec2(0.5,0.5);
uv += c*0.07;
uv.y*=0.66;
float d = length(uv);
vec2 uv1;
float R=0.17+0.05*sin(iTime*2.2);
if(d>R) uv1 = (uv)/(d*d);
if(d<R) uv1 = (1.5/R)*1.5*(uv)*(1.0+pow(d,0.5));
vec4 col = texture(iChannel0, uv1+c);
if(d<R) col*=(1.0-d/R)*3.0;
if(d>R) col*=(1.0-(2.0-d/R)*1.0);
fragColor = col;
}
Open it here: https://www.shadertoy.com/view/flycDW