A while back I made a module for concentric rings and it reminded me of a fresnel lens, so I added a few customizations to it so I could experiment with fresnel lens design.

Here is the code:

//
outside_shape=60;//[3:1:100]
height=10; //[.1:.01:100]
diameter=18; //[1:.01:200]
center_height=10; //[.1:.01:100]
Center_diameter=40; //[.1:.01:400]
ring_number =10; //[1:1:20]
ring_spacing =-.21; //[-.90:.01:4]
scale_x = 1; // [-10:.01:10]
scale_y = 1; // [-10:.01:10]
scale_z = 1; // [-10:.01:10]

module rings(){
for(i=[2:ring_spacing+1:ring_number])
scale([scale_x,scale_y,scale_z])
render()
difference(){
cylinder(height,diameter/2*i+12,diameter/2*i,center=false,$fn=outside_shape);
cylinder(height+12,diameter/2*i,diameter/2*i,center=false,$fn=outside_shape);
}
for(i=[2:ring_spacing+1:ring_number])
linear_extrude(3)
circle(diameter/2*i,$fn=outside_shape);
}

module center(){
intersection(){
cylinder(10,20,20,$fn=100);
translate([0,0,20])
sphere(20,$fn=outside_shape);
}}

mirror([0,0,1])
translate([0,0,-center_height-1])
resize([Center_diameter,Center_diameter,center_height])
center();
rings();

If nothing else it will make some cool coasters:

To make an actual fresnel lens more experimentation will need to be done.

As with most OpenSCAD code there is more than one way to do things, here is an example using a lot less code:

//
ring_rotate=9;//[-22:.01:60]
ring_number=12;//[3:1:40]
ring_spacing=0;//[0:.01:22]
ring_diameter=1;//[.1:.01:22]
outside_shape=60;//[3:1:100]

/*[Hidden]*/
$fs=0.1;
$fa=1;
$fn=outside_shape;
 
rotate_extrude(angle=360){
for(i=[1:1:ring_number])
translate([i*(ring_spacing+ring_diameter),0,0])
rotate([0,0,i-ring_rotate/2.22])
circle(ring_diameter,$fn=3);
}