thread for segments files and parameters for simulation runs

Discuss how polywell fusion works; share theoretical questions and answers.

Moderators: tonybarry, MSimon

Post Reply
happyjack27
Posts: 1439
Joined: Wed Jul 14, 2010 5:27 pm

thread for segments files and parameters for simulation runs

Post by happyjack27 »

i've decided to start a thread for configurations to run simulations on. i'm talking line segment lists as coordinates. and if you have them, other parameters like voltage densities, current densities, and particle concentrations.

i will model them and post video.

i'll post some examples to start it off.

happyjack27
Posts: 1439
Joined: Wed Jul 14, 2010 5:27 pm

Post by happyjack27 »

oh, and one can scale the dimensions, voltage, and current in the program, so you can (and probably should, for ease of use) just leave the coordinates as on a unit sphere.

perfect octahedron magrid:

Code: Select all

12
 1.00, 0.00, 0.00, 0.00, 0.00, 1.00
 1.00, 0.00, 0.00, 0.00, 0.00,-1.00
-1.00, 0.00, 0.00, 0.00, 0.00, 1.00
-1.00, 0.00, 0.00, 0.00, 0.00,-1.00
 0.00, 0.00, 1.00, 0.00, 1.00, 0.00
 0.00, 0.00, 1.00, 0.00,-1.00, 0.00
 0.00, 0.00,-1.00, 0.00, 1.00, 0.00
 0.00, 0.00,-1.00, 0.00,-1.00, 0.00
 0.00, 1.00, 0.00, 1.00, 0.00, 0.00
 0.00, 1.00, 0.00,-1.00, 0.00, 0.00
 0.00,-1.00, 0.00, 1.00, 0.00, 0.00
 0.00,-1.00, 0.00,-1.00, 0.00, 0.00
perfect iterated octahedron magrid (all triangles bisected, making for a total of 8x4=36 triangles):

Code: Select all

48
 1.00, 0.00, 0.00, 0.71, 0.00, 0.71
 0.71, 0.00, 0.71, 0.00, 0.00, 1.00
 1.00, 0.00, 0.00, 0.71, 0.00,-0.71
 0.71, 0.00,-0.71, 0.00, 0.00,-1.00
-1.00, 0.00, 0.00,-0.71, 0.00, 0.71
-0.71, 0.00, 0.71, 0.00, 0.00, 1.00
-1.00, 0.00, 0.00,-0.71, 0.00,-0.71
-0.71, 0.00,-0.71, 0.00, 0.00,-1.00
 0.00, 0.00, 1.00, 0.00, 0.71, 0.71
 0.00, 0.71, 0.71, 0.00, 1.00, 0.00
 0.00, 0.00, 1.00, 0.00,-0.71, 0.71
 0.00,-0.71, 0.71, 0.00,-1.00, 0.00
 0.00, 0.00,-1.00, 0.00, 0.71,-0.71
 0.00, 0.71,-0.71, 0.00, 1.00, 0.00
 0.00, 0.00,-1.00, 0.00,-0.71,-0.71
 0.00,-0.71,-0.71, 0.00,-1.00, 0.00
 0.00, 1.00, 0.00, 0.71, 0.71, 0.00
 0.71, 0.71, 0.00, 1.00, 0.00, 0.00
 0.00, 1.00, 0.00,-0.71, 0.71, 0.00
-0.71, 0.71, 0.00,-1.00, 0.00, 0.00
 0.00,-1.00, 0.00, 0.71,-0.71, 0.00
 0.71,-0.71, 0.00, 1.00, 0.00, 0.00
 0.00,-1.00, 0.00,-0.71,-0.71, 0.00
-0.71,-0.71, 0.00,-1.00, 0.00, 0.00
 0.71, 0.71, 0.00, 0.00, 0.71, 0.71
 0.71, 0.71, 0.00, 0.00, 0.71,-0.71
 0.71,-0.71, 0.00, 0.00,-0.71, 0.71
 0.71,-0.71, 0.00, 0.00,-0.71,-0.71
-0.71, 0.71, 0.00, 0.00, 0.71, 0.71
-0.71, 0.71, 0.00, 0.00, 0.71,-0.71
-0.71,-0.71, 0.00, 0.00,-0.71, 0.71
-0.71,-0.71, 0.00, 0.00,-0.71,-0.71
 0.00, 0.71, 0.71, 0.71, 0.00, 0.71
 0.00, 0.71, 0.71,-0.71, 0.00, 0.71
 0.00, 0.71,-0.71, 0.71, 0.00,-0.71
 0.00, 0.71,-0.71,-0.71, 0.00,-0.71
 0.00,-0.71, 0.71, 0.71, 0.00, 0.71
 0.00,-0.71, 0.71,-0.71, 0.00, 0.71
 0.00,-0.71,-0.71, 0.71, 0.00,-0.71
 0.00,-0.71,-0.71,-0.71, 0.00,-0.71
 0.71, 0.00, 0.71, 0.71, 0.71, 0.00
 0.71, 0.00, 0.71, 0.71,-0.71, 0.00
-0.71, 0.00, 0.71,-0.71, 0.71, 0.00
-0.71, 0.00, 0.71,-0.71,-0.71, 0.00
 0.71, 0.00,-0.71, 0.71, 0.71, 0.00
 0.71, 0.00,-0.71, 0.71,-0.71, 0.00
-0.71, 0.00,-0.71,-0.71, 0.71, 0.00
-0.71, 0.00,-0.71,-0.71,-0.71, 0.00

happyjack27
Posts: 1439
Joined: Wed Jul 14, 2010 5:27 pm

Post by happyjack27 »

perfect cuboctahedron

Code: Select all

 
24
-1.0, 1.0, 0.0, 0.0, 1.0, 1.0
 0.0, 1.0, 1.0, 1.0, 1.0, 0.0
 1.0, 1.0, 0.0, 0.0, 1.0,-1.0
 0.0, 1.0,-1.0,-1.0, 1.0, 0.0
 0.0,-1.0,-1.0, 1.0,-1.0, 0.0
 1.0,-1.0, 0.0, 0.0,-1.0, 1.0
 0.0,-1.0, 1.0,-1.0,-1.0, 0.0
-1.0,-1.0, 0.0, 0.0,-1.0,-1.0
-1.0, 0.0,-1.0, 0.0, 1.0,-1.0
 0.0, 1.0,-1.0, 1.0, 0.0,-1.0
 1.0, 0.0,-1.0, 0.0,-1.0,-1.0
 0.0,-1.0,-1.0,-1.0, 0.0,-1.0
-1.0, 0.0, 1.0, 0.0,-1.0, 1.0
 0.0,-1.0, 1.0, 1.0, 0.0, 1.0
 1.0, 0.0, 1.0, 0.0, 1.0, 1.0
 0.0, 1.0, 1.0,-1.0, 0.0, 1.0
-1.0, 0.0, 1.0,-1.0, 1.0, 0.0
-1.0, 1.0, 0.0,-1.0, 0.0,-1.0
-1.0, 0.0,-1.0,-1.0,-1.0, 0.0
-1.0,-1.0, 0.0,-1.0, 0.0, 1.0
 1.0, 0.0,-1.0, 1.0, 1.0, 0.0
 1.0, 1.0, 0.0, 1.0, 0.0, 1.0
 1.0, 0.0, 1.0, 1.0,-1.0, 0.0
 1.0,-1.0, 0.0, 1.0, 0.0,-1.0

rjaypeters
Posts: 869
Joined: Fri Aug 20, 2010 2:04 pm
Location: Summerville SC, USA

Post by rjaypeters »

Happyjack27,

I have, or can produce, the data for what I've modeled. Most of my work will be by hand*, though. Since we are waiting for events, I'm not too worried about getting the work done quickly. OTOH, we all want to know or at least look!

I'm half-way between standard** dimensions and random dimensions for my models and have a few questions before I start producing coordinates:

It is good you have the ability to easily scale dimensions, but some of our interest centers on where the coils come close; should coil close approaches be 5-10mm (which is what more recent models show for coil cases), 15-20mm (centers of the coils) or something else?

How much granularity is desirable? I can divide a segment into an arbitrary number of subsegments, but where do you think is the best compromise between simulation fidelity, simulation run time and my work load? I haven't even produced one set of coordinates, so I don't have any data to provide on the last parameter.

Best,

Robert

*I'm also thinking about how to automate, particularly with the higher order polyhedra.

** 3m diameter empty central volume (i.e.. no coil cases inside the central volume), 0.2m coil case diameter, GTE 0.25 or 0.26m turn radius and 5-10mm coil case close approach.
"Aqaba! By Land!" T. E. Lawrence

R. Peters

happyjack27
Posts: 1439
Joined: Wed Jul 14, 2010 5:27 pm

Post by happyjack27 »

rjaypeters wrote:Happyjack27,

I have, or can produce, the data for what I've modeled. Most of my work will be by hand*, though. Since we are waiting for events, I'm not too worried about getting the work done quickly. OTOH, we all want to know or at least look!

I'm half-way between standard** dimensions and random dimensions for my models and have a few questions before I start producing coordinates:

It is good you have the ability to easily scale dimensions, but some of our interest centers on where the coils come close; should coil close approaches be 5-10mm (which is what more recent models show for coil cases), 15-20mm (centers of the coils) or something else?

How much granularity is desirable? I can divide a segment into an arbitrary number of subsegments, but where do you think is the best compromise between simulation fidelity, simulation run time and my work load? I haven't even produced one set of coordinates, so I don't have any data to provide on the last parameter.

Best,

Robert

*I'm also thinking about how to automate, particularly with the higher order polyhedra.

** 3m diameter empty central volume (i.e.. no coil cases inside the central volume), 0.2m coil case diameter, GTE 0.25 or 0.26m turn radius and 5-10mm coil case close approach.
the computation cost for the static fields is negligible compared to the particle-particle interactions. i'm storing the segments in "constant memory" on the gpu, which is fairly small, but gives a good performance boost over "global memory". so i'm limited to 64kb, but preferably closer to 4kb or 8kb to fit it all in cache. so i settled on a file size limit of 2048 segments. i can reasonably push that to 4096, but once i exceed the size of the cache i think performance will start to degrade. but i suppose i won't really know without experimenting. i figure 2048 segments should be good enough. e.g. with a 6-coil (wb-6) design that's up to 256 segments per coil, which is more than enough even for multiple-turns per coil. so that's your technical limit. i'd go for something practical in there. at that scale simulation time isn't really affected, so it's fidelity and work load. and i don't think there's going to be much fidelity loss from a somewhat coarse approximation, as long as the topology is still pretty much the same.

for spacing between coils, lacking the ability to scale that separately in the program. (hmm....), i'd say just design it for a fixed size. i wish i could give you a scale, but until i get some good parameters i dont' know how well the program scales. all i can tell you is that computational time limits this algorithm to very low plasma densities, and to get sufficient resolution on electron movement i need to use a very small time step, but everything else is virtually unlimited.
Last edited by happyjack27 on Fri Nov 19, 2010 7:56 pm, edited 1 time in total.

happyjack27
Posts: 1439
Joined: Wed Jul 14, 2010 5:27 pm

Post by happyjack27 »

oh, and a very important note: the segments need to be ordered in the direction of the current. e.g. (0.0,1.0,0.0)->(1.0,0.0,0.0) need to be 2 points _listed in that order_, if the current flows from the left point to the right point.

rjaypeters
Posts: 869
Joined: Fri Aug 20, 2010 2:04 pm
Location: Summerville SC, USA

Post by rjaypeters »

Happyjack27,

Those are good answers. 256 segments per coil is more ambitious than I'd go, until I automate. I'm thinking 16 (maybe 32, depends on ambition) segments per coil in the near term.

Near corners (e.g. in the near-spherical varieties down the road), do we want more segments or is the length of the segment not relevant?

Distance between coils: for my convenience, I'm going to stick with the current standard coil centers (I call them "guides" in my models). Once we have a few examples under our belts, I'll move the coils out to the 5-10mm spacing and we can see if there is a difference.

I propose to do a tetrahedron and the 6-coil circular as the first configurations. The tetrahedron is the simplest 3-D configuration and the 6-coil circular is pretty easy to do by hand.

What say you?
"Aqaba! By Land!" T. E. Lawrence

R. Peters

happyjack27
Posts: 1439
Joined: Wed Jul 14, 2010 5:27 pm

Post by happyjack27 »

from a technical standpoint, wires can be any length. i don't know about the physics, what areas might be more fidelity sensitive.

on that note i'm not confident with my static e-field code so i'm approximating the static e-fileds as if they were infinite. so probably best to go with no static charge for now if we want accuracy. i'm going to run a few sims with the geometries i posted, (which are not physically realizable.) i'm not actually modelling particle losses and sources yet. i have some of that code written, but not production ready. so....

yeah start w/ the basic wb-6. i've already done a (perfect) tetrahedron. pretty leaky, it seesm.

i myself am only doing 8-segment coils, at most. i'm doing it manually. and i agree i don't see that you'll get an overwhelming increase in "fidelity" past a 16-gon.

krenshala
Posts: 914
Joined: Wed Jul 16, 2008 4:20 pm
Location: Austin, TX, NorAm, Sol III

Post by krenshala »

I think you posted the info in another thread but didn't see it in a quick search. The format you are using is

Code: Select all

<number of segments>
x1,y1,z1, x2,y2,z2
...
xn-1,yn-1,zn-1, xn,yn,zn
correct?

Aero
Posts: 1200
Joined: Mon Jun 30, 2008 4:36 am
Location: 92111

Post by Aero »

Just to be clear, are you using Cartesian coordinates and are each set of 6 coordinate values the x,y,z start and x,y,z end values of a line segment? If so, then are start coordinates of segment n+1 always the same as the end coordinates of segment n? Does current flow in the wire always from the first segment to the end segment or can you reverse the current flow easily?

If so, then it doesn't seem that difficult to write a code describing WB-6 coils as wires in spherical coordinates then transform to Cartesian coordinates. Of course its not something I could do over night and PHP is probably not the best language to write the code in, though it would work. (PHP is the only thing I have on my computer now.)

Edit: Cross posted with Krenshala
Aero

happyjack27
Posts: 1439
Joined: Wed Jul 14, 2010 5:27 pm

Post by happyjack27 »

cartesian. each line is a pair of x,y,z, start to end as you describe. but points on separate lines are no automatically connected. e.g.

1,0,0, -1,0,0

is 2-meter line down the x axis. but

0,0,0, 1,0,0
1,1,0, 0,1,0

is NOT a "U". it is a set of parallel lines w/currents in opposite directions.
the GLOBAL amount of current flow can be changed easily, but to change the current in individual segments, you've got to add a number to the line. that number is a current multiplier. e.g.

0,0,0, 1,0,0, 1
1,1,0, 0,1,0, -1

are two parallel lines with current going in the SAME direction.

i've added sliders so you can adjust global voltage, currents, and plasma density (via how many particles each simulated particle represents) while the simulations is running. so i've messed around with those a little. in simulating a basic octahedral grid, i've noticed when you turn off the current it just expands as usual, but with current on, the center doesn't expand, so you keep a decent density even though you're in a vacuum, and increasing the plasma density doesn't destabilize it. i presume droping new ions/electrons into that at just the right speed so they become part of that region is how you slowly (well, in simulation time scales, at least) increase the density.

but anyways the point of that is now i'm concerned about getting b=1 conditions so i need to find out what the right ratios for those numbers are.

rjaypeters
Posts: 869
Joined: Fri Aug 20, 2010 2:04 pm
Location: Summerville SC, USA

Post by rjaypeters »

6-coil circular (WB-6) first coil:

Code: Select all

16
0.0, 1.127, 1.273, -0.431, 1.041, 1.273
-0.431, 1.041, 1.273, -0.797, 0.797, 1.273
-0.797, 0.797, 1.273, -1.041, 0.431, 1.273
-1.041, 0.431, 1.273, -1.127, 0.0, 1.273
-1.127, 0.0, 1.273, -1.041, -0.431, 1.273
-1.041, -0.431, 1.273, -0.797, -0.797, 1.273
-0.797, -0.797, 1.273, -0.431, -1.041, 1.273
-0.431, -1.041, 1.273, 0.0, -1.127, 1.273,
0.0, -1.127, 1.273, 0.431, -1.041, 1.273
0.431, -1.041, 1.273, 0.797, -0.797, 1.273
0.797, -0.797, 1.273, 1.041, -0.431, 1.273
1.041, -0.431, 1.273, 1.127, 0.0, 1.273
1.127, 0.0, 1.273, 1.041, 0.431, 1.273
1.041, 0.431, 1.273, 0.797, 0.797, 1.273
0.797, 0.797, 1.273, 0.431, 1.041, 1.273
0.431, 1.041, 1.273, 0.0, 1.127, 1.273
Acceptable?
"Aqaba! By Land!" T. E. Lawrence

R. Peters

happyjack27
Posts: 1439
Joined: Wed Jul 14, 2010 5:27 pm

Post by happyjack27 »

electron core of an octahedral magrid. count 8 point cusps for 8 faces. i also try dropping the mag field and turning it back on in the second half of the video. you can see the difference it makes.

http://www.youtube.com/watch?v=JhmamrkWEUc

doesn't look like it'd confine too well. here's an iterated octahedral magrid (36 faces):

http://www.youtube.com/watch?v=xnHz4NLISbw

looks much more regular. what shape is that? at first i thought it was a cube, but then i realized it has more corners.

bear in mind i have no idea where beta=1 conditions are relative to those videos.

happyjack27
Posts: 1439
Joined: Wed Jul 14, 2010 5:27 pm

Post by happyjack27 »

rjaypeters wrote:6-coil circular (WB-6) first coil:

Acceptable?
looks right. the format is correct. that will make a coil with a current loop. i'll take your word for it that said coil will be an approximately regular 16-gon.

rjaypeters
Posts: 869
Joined: Fri Aug 20, 2010 2:04 pm
Location: Summerville SC, USA

Post by rjaypeters »

6-coil circular six coils:

Code: Select all

16
0.0, 1.127, 1.273, -0.431, 1.041, 1.273
-0.431, 1.041, 1.273, -0.797, 0.797, 1.273
-0.797, 0.797, 1.273, -1.041, 0.431, 1.273
-1.041, 0.431, 1.273, -1.127, 0.0, 1.273
-1.127, 0.0, 1.273, -1.041, -0.431, 1.273
-1.041, -0.431, 1.273, -0.797, -0.797, 1.273
-0.797, -0.797, 1.273, -0.431, -1.041, 1.273
-0.431, -1.041, 1.273, 0.0, -1.127, 1.273,
0.0, -1.127, 1.273, 0.431, -1.041, 1.273
0.431, -1.041, 1.273, 0.797, -0.797, 1.273
0.797, -0.797, 1.273, 1.041, -0.431, 1.273
1.041, -0.431, 1.273, 1.127, 0.0, 1.273
1.127, 0.0, 1.273, 1.041, 0.431, 1.273
1.041, 0.431, 1.273, 0.797, 0.797, 1.273
0.797, 0.797, 1.273, 0.431, 1.041, 1.273
0.431, 1.041, 1.273, 0.0, 1.127, 1.273
16
-1.273, 1.127, 0.0, -1.273, 1.041, -0.431
-1.273, 1.041, -0.431, -1.273, 0.797, -0.797
-1.273, 0.797, -0.797, -1.273, 0.431, -1.041
-1.273, 0.431, -1.041, -1.273, 0.0, -1.127
-1.273, 0.0, -1.127, -1.273, -0.431, -1.041
-1.273, -0.431, -1.041, -1.273, -0.797, -0.797
-1.273, -0.797, -0.797, -1.273, -1.041, -0.431
-1.273, -1.041, -0.431, -1.273, -1.127, 0.0
-1.273, -1.127, 0.0, -1.273, -1.041, 0.431
-1.273, -1.041, 0.431, -1.273, -0.797, 0.797
-1.273, -0.797, 0.797, -1.273, -0.431, 1.041
-1.273, -0.431, 1.041, -1.273, 0.0, 1.127
-1.273, 0.0, 1.127, -1.273, 0.431, 1.041,
-1.273, 0.431, 1.041, -1.273, 0.797, 0.797
-1.273, 0.797, 0.797, -1.273, 1.041, 0.431
-1.273, 1.041, 0.431, -1.273, 1.127, 0.0
16
0.0, 1.127, -1.273, 0.431, 1.041, -1.273
0.431, 1.041, -1.273, 0.797, 0.797, -1.273
 0.431, 1.041, -1.273, 1.041, 0.431, -1.273
1.041, 0.431, -1.273, 1.127, 0.0, -1.273
1.127, 0.0, -1.273, 1.041, -0.431, -1.273
1.041, -0.431, -1.273, 0.797, -0.797, -1.273
0.797, -0.797, -1.273, 0.431, -1.041, -1.273
0.431, -1.041, -1.273, 0.0, -1.127, -1.273
0.0, -1.127, -1.273, -0.431, -1.041, -1.273
-0.431, -1.041, -1.273, -0.797, -0.797, -1.273
-0.797, -0.797, -1.273, -1.041, -0.431, -1.273
-1.041, -0.431, -1.273, -1.127, 0.0, -1.273
-1.127, 0.0, -1.273, -1.041, 0.431, -1.273
-1.041, 0.431, -1.273, -0.797, 0.797, -1.273
-0.797, 0.797, -1.273, -0.431, 1.041, -1.273
-0.431, 1.041, -1.273, 0.0, 1.127, -1.273
16
1.273, 1.127, 0.0, 1.273, 1.041, 0.431
1.273, 1.041, 0.431, 1.273, 0.797, 0.797
1.273, 0.797, 0.797, 1.273, 0.431, 1.041
1.273, 0.431, 1.041, 1.273, 0.0, 1.127,
1.273, 0.0, 1.127, 1.273, -0.431, 1.041
1.273, -0.431, 1.041, 1.273, -0.797, 0.797
1.273, -0.797, 0.797, 1.273, -1.041, 0.431
1.273, -1.041, 0.431, 1.273, -1.127, 0.0
1.273, -1.127, 0.0, 1.273, -1.041, -0.431
1.273, -1.041, -0.431, 1.273, -0.797, -0.797
1.273, -0.797, -0.797, 1.273, -0.431, -1.041
1.273, -0.431, -1.041, 1.273, 0.0, -1.127
1.273, 0.0, -1.127, 1.273, 0.431, -1.041
1.273, 0.431, -1.041, 1.273, 0.797, -0.797
1.273, 0.797, -0.797, 1.273, 1.041, -0.431
1.273, 1.041, -0.431, 1.273, 1.127, 0.0
16
0.0, 1.273, 1.127, 0.431, 1.273, 1.041
0.431, 1.273, 1.041, 0.797, 1,273, 0.797
0.797, 1,273, 0.797, 1.041, 1.273, 0.431
1.041, 1.273, 0.431, 1.127, 1.273, 0.0
1.127, 1.273, 0.0, 1.041, 1.273, -0.431
1.041, 1.273, -0.431, 0.797, 1.273, -0.797
0.797, 1.273, -0.797, 0.431, 1.273, -1.041
0.431, 1.273, -1.041, 0.0, 1.273, -1.127
0.0, 1.273, -1.127, -0.431, 1.273, -1.041
-0.431, 1.273, -1.041, -0.797, 1.273, -0.797
-0.797, 1.273, -0.797, -1.041, 1.273, -0.431
-1.041, 1.273, -0.431, -1.127, 1.273, 0.0
-1.127, 1.273, 0.0, -1.041, 1.273, 0.431
-1.041, 1.273, 0.431, -0.797, 1.273, 0.797
-0.797, 1.273, 0.797, -0.431, 1.273, 1.041
-0.431, 1.273, 1.041, 0.0, 1.273, 1.127
16
0.0, -1.273, 1.127, -0.431, -1.273, 1.041
-0.431, -1.273, 1.041, -0.797, -1.273, 0.797,
-0.797, -1.273, 0.797, -1.041, -1.273, 0.431
-1.041, -1.273, 0.431, -1.127, -1.273, 0.0
-1.127, -1.273, 0.0, -1.041, -1.273, -0.431
-1.041, -1.273, -0.431, -0.797, -1.273, -0.797
-0.797, -1.273, -0.797, -0.431, -1.273, -1.041
-0.431, -1.273, -1.041, 0.0, -1.273, -1.127
0.0, -1.273, -1.127, 0.431, -1.273, -1.041
0.431, -1.273, -1.041, 0.797, -1.273, -0.797
0.797, -1.273, -0.797, 1.041, -1.273, -0.431
1.041, -1.273, -0.431, 1.127, -1.273, 0.0
1.127, -1.273, 0.0, 1.041, -1.273, 0.431
1.041, -1.273, 0.431, 0.797, -1.273, 0.797
0.797, -1.273, 0.797, 0.431, -1.273, 1.041
0.431, -1.273, 1.041, 0.0, -1.273, 1.127
Regular polygons? As good as I can do.
"Aqaba! By Land!" T. E. Lawrence

R. Peters

Post Reply