feat: a LOT of stuff (final report, examples, simulation of a single assert, move from node instances to node definitions, etc.)
This commit is contained in:
parent
ba5db5bd99
commit
f2c545ce2c
49 changed files with 12377 additions and 1898 deletions
172
exm/zelus/ballcos/tmp/ball.ml
Normal file
172
exm/zelus/ballcos/tmp/ball.ml
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
(* The Zelus compiler, version 2.2-dev
|
||||
(2025-08-14-22:1) *)
|
||||
open Ztypes
|
||||
let g = 9.81
|
||||
|
||||
let mu = 0.5
|
||||
|
||||
type ('d , 'c , 'b , 'a) _ball =
|
||||
{ mutable major_68 : 'd ;
|
||||
mutable i_72 : 'c ; mutable x_71 : 'b ; mutable v_70 : 'a }
|
||||
|
||||
let ball (cstate_97:Ztypes.cstate) =
|
||||
|
||||
let ball_alloc _ =
|
||||
cstate_97.cmax <- (+) cstate_97.cmax 2;
|
||||
{ major_68 = false ;
|
||||
i_72 = (false:bool) ;
|
||||
x_71 = { pos = 42.; der = 0. } ; v_70 = { pos = 42.; der = 0. } } in
|
||||
let ball_step self ((time_67:float) , (v0_66:float)) =
|
||||
((let (cindex_98:int) = cstate_97.cindex in
|
||||
let cpos_100 = ref (cindex_98:int) in
|
||||
cstate_97.cindex <- (+) cstate_97.cindex 2 ;
|
||||
self.major_68 <- cstate_97.major ;
|
||||
(if cstate_97.major then
|
||||
for i_1 = cindex_98 to 1 do Zls.set cstate_97.dvec i_1 0. done
|
||||
else ((self.x_71.pos <- Zls.get cstate_97.cvec !cpos_100 ;
|
||||
cpos_100 := (+) !cpos_100 1) ;
|
||||
(self.v_70.pos <- Zls.get cstate_97.cvec !cpos_100 ;
|
||||
cpos_100 := (+) !cpos_100 1))) ;
|
||||
(let (result_102:(float * float)) =
|
||||
(if self.i_72 then self.v_70.pos <- v0_66) ;
|
||||
self.i_72 <- false ;
|
||||
(let (a_69:float) =
|
||||
(-.) (( *. ) g (sin self.x_71.pos))
|
||||
((/.) (( *. ) mu self.v_70.pos) (cos self.x_71.pos)) in
|
||||
self.v_70.der <- ( *. ) a_69 (cos self.x_71.pos) ;
|
||||
self.x_71.der <- self.v_70.pos ; (self.x_71.pos , self.v_70.pos)) in
|
||||
cpos_100 := cindex_98 ;
|
||||
(if cstate_97.major then
|
||||
(((Zls.set cstate_97.cvec !cpos_100 self.x_71.pos ;
|
||||
cpos_100 := (+) !cpos_100 1) ;
|
||||
(Zls.set cstate_97.cvec !cpos_100 self.v_70.pos ;
|
||||
cpos_100 := (+) !cpos_100 1)))
|
||||
else (((Zls.set cstate_97.dvec !cpos_100 self.x_71.der ;
|
||||
cpos_100 := (+) !cpos_100 1) ;
|
||||
(Zls.set cstate_97.dvec !cpos_100 self.v_70.der ;
|
||||
cpos_100 := (+) !cpos_100 1)))) ; result_102)):float * float) in
|
||||
let ball_reset self =
|
||||
((self.i_72 <- true ; self.x_71.pos <- 0.):unit) in
|
||||
Node { alloc = ball_alloc; step = ball_step ; reset = ball_reset }
|
||||
type ('c , 'b , 'a) _vdp_c =
|
||||
{ mutable major_75 : 'c ; mutable y_77 : 'b ; mutable x_76 : 'a }
|
||||
|
||||
let vdp_c (cstate_103:Ztypes.cstate) =
|
||||
|
||||
let vdp_c_alloc _ =
|
||||
cstate_103.cmax <- (+) cstate_103.cmax 2;
|
||||
{ major_75 = false ;
|
||||
y_77 = { pos = 42.; der = 0. } ; x_76 = { pos = 42.; der = 0. } } in
|
||||
let vdp_c_step self ((time_74:float) , (mu_73:float)) =
|
||||
((let (cindex_104:int) = cstate_103.cindex in
|
||||
let cpos_106 = ref (cindex_104:int) in
|
||||
cstate_103.cindex <- (+) cstate_103.cindex 2 ;
|
||||
self.major_75 <- cstate_103.major ;
|
||||
(if cstate_103.major then
|
||||
for i_1 = cindex_104 to 1 do Zls.set cstate_103.dvec i_1 0. done
|
||||
else ((self.y_77.pos <- Zls.get cstate_103.cvec !cpos_106 ;
|
||||
cpos_106 := (+) !cpos_106 1) ;
|
||||
(self.x_76.pos <- Zls.get cstate_103.cvec !cpos_106 ;
|
||||
cpos_106 := (+) !cpos_106 1))) ;
|
||||
(let (result_108:(float * float)) =
|
||||
self.y_77.der <- (-.) (( *. ) (( *. ) mu_73
|
||||
((-.) 1.
|
||||
(( *. ) self.x_76.pos
|
||||
self.x_76.pos)))
|
||||
self.y_77.pos) self.x_76.pos ;
|
||||
self.x_76.der <- self.y_77.pos ; (self.x_76.pos , self.y_77.pos) in
|
||||
cpos_106 := cindex_104 ;
|
||||
(if cstate_103.major then
|
||||
(((Zls.set cstate_103.cvec !cpos_106 self.y_77.pos ;
|
||||
cpos_106 := (+) !cpos_106 1) ;
|
||||
(Zls.set cstate_103.cvec !cpos_106 self.x_76.pos ;
|
||||
cpos_106 := (+) !cpos_106 1)))
|
||||
else (((Zls.set cstate_103.dvec !cpos_106 self.y_77.der ;
|
||||
cpos_106 := (+) !cpos_106 1) ;
|
||||
(Zls.set cstate_103.dvec !cpos_106 self.x_76.der ;
|
||||
cpos_106 := (+) !cpos_106 1)))) ; result_108)):float * float) in
|
||||
|
||||
let vdp_c_reset self =
|
||||
((self.y_77.pos <- 1. ; self.x_76.pos <- 1.):unit) in
|
||||
Node { alloc = vdp_c_alloc; step = vdp_c_step ; reset = vdp_c_reset }
|
||||
type ('g , 'f , 'e , 'd , 'c , 'b , 'a) _main =
|
||||
{ mutable i_96 : 'g ;
|
||||
mutable i_95 : 'f ;
|
||||
mutable major_79 : 'e ;
|
||||
mutable h_94 : 'd ;
|
||||
mutable i_92 : 'c ; mutable h_90 : 'b ; mutable t_80 : 'a }
|
||||
|
||||
let main (cstate_109:Ztypes.cstate) =
|
||||
let Node { alloc = i_96_alloc; step = i_96_step ; reset = i_96_reset } = ball
|
||||
cstate_109 in
|
||||
let Node { alloc = i_95_alloc; step = i_95_step ; reset = i_95_reset } = vdp_c
|
||||
cstate_109 in
|
||||
let main_alloc _ =
|
||||
cstate_109.cmax <- (+) cstate_109.cmax 1;
|
||||
{ major_79 = false ;
|
||||
h_94 = 42. ;
|
||||
i_92 = (false:bool) ;
|
||||
h_90 = (42.:float) ; t_80 = { pos = 42.; der = 0. };
|
||||
i_96 = i_96_alloc () (* continuous *) ;
|
||||
i_95 = i_95_alloc () (* continuous *) } in
|
||||
let main_step self ((time_78:float) , ()) =
|
||||
((let (cindex_110:int) = cstate_109.cindex in
|
||||
let cpos_112 = ref (cindex_110:int) in
|
||||
cstate_109.cindex <- (+) cstate_109.cindex 1 ;
|
||||
self.major_79 <- cstate_109.major ;
|
||||
(if cstate_109.major then
|
||||
for i_1 = cindex_110 to 0 do Zls.set cstate_109.dvec i_1 0. done
|
||||
else ((self.t_80.pos <- Zls.get cstate_109.cvec !cpos_112 ;
|
||||
cpos_112 := (+) !cpos_112 1))) ;
|
||||
(let (result_114:unit) =
|
||||
let h_93 = ref (infinity:float) in
|
||||
(if self.i_92 then self.h_90 <- (+.) time_78 0.) ;
|
||||
(let (z_91:bool) = (&&) self.major_79 ((>=) time_78 self.h_90) in
|
||||
self.h_90 <- (if z_91 then (+.) self.h_90 0.01 else self.h_90) ;
|
||||
h_93 := min !h_93 self.h_90 ;
|
||||
self.h_94 <- !h_93 ;
|
||||
self.i_92 <- false ;
|
||||
(let ((x_82:float) , (v_81:float)) =
|
||||
i_96_step self.i_96 (time_78 , 2.953) in
|
||||
let ((x'_83:float) , (y_84:float)) =
|
||||
i_95_step self.i_95 (time_78 , 0.0000000000000001) in
|
||||
(begin match z_91 with
|
||||
| true ->
|
||||
let () =
|
||||
print_endline (String.concat ",\t\t"
|
||||
(List.map string_of_float
|
||||
|
||||
((::)
|
||||
(
|
||||
self.t_80.pos
|
||||
,
|
||||
(
|
||||
(::)
|
||||
(
|
||||
x_82 ,
|
||||
(
|
||||
(::)
|
||||
(
|
||||
v_81 ,
|
||||
(
|
||||
(::)
|
||||
(
|
||||
x'_83 ,
|
||||
(
|
||||
(::)
|
||||
(
|
||||
y_84 ,
|
||||
([]))))))))))))) in
|
||||
() | _ -> () end) ; self.t_80.der <- 1. ; ())) in
|
||||
cstate_109.horizon <- min cstate_109.horizon self.h_94 ;
|
||||
cpos_112 := cindex_110 ;
|
||||
(if cstate_109.major then
|
||||
(((Zls.set cstate_109.cvec !cpos_112 self.t_80.pos ;
|
||||
cpos_112 := (+) !cpos_112 1)))
|
||||
else (((Zls.set cstate_109.dvec !cpos_112 self.t_80.der ;
|
||||
cpos_112 := (+) !cpos_112 1)))) ; result_114)):unit) in
|
||||
let main_reset self =
|
||||
((self.i_92 <- true ;
|
||||
self.t_80.pos <- 0. ; i_96_reset self.i_96 ; i_95_reset self.i_95 ):
|
||||
unit) in
|
||||
Node { alloc = main_alloc; step = main_step ; reset = main_reset }
|
||||
Loading…
Add table
Add a link
Reference in a new issue