Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  
Pages: 1 ... 10 11 [12] 13 14 ... 19

Author Topic: Dwarven Research: A Comparison Study on the Effectiveness of Bolts vs Armors  (Read 178425 times)

Pirate Bob

  • Bay Watcher
  • [ETHIC: TORTURE_FOR_SCIENCE: ACCEPTABLE]
    • View Profile

I can confirm that lowering Bronze's impact yield to 376 has no noticeable change on the force required to penetrate armor (deflects 100% at force 15 and 8% at force 20.  I will set up a run varying all material parameters for bronze today to see if I can nail down which are important for this. 

My guess is that the difference is IMPACT_FRACTURE/IMPACT_YIELD for bronze is only 1.4, while for iron it is 2 and steel it's 1.67.  I noticed during my testing that increasing IMPACT_YIELD  causes the second transition to occur at lower force, so I think that it may depend on this ratio (although not necessarily linearly or in the same manner on both parameters).  I'm guessing that if the second transition occurs at lower force than the first, then it takes precedence. 

Edit:
My run for today failed, due to the user error  :-[.  I will try to poke around some manually this evening, and then maybe do a run tonight fo
r bronze armor.  Urist, you said that SHEAR_YIELD is used to determine if blunt or edged damage will take place.  Do you know that determines if deflections will occur at all?  It appears that no deflections occur if the bolt material is "better" than the armor, with candy>steel>iron=bronze>copper, but I don't know what parameters determine "better". 

I did also find that, if I lower IMPACT_YIELD of steel to 150500, then the first transition moves to between Force 45 (deflection 1.0)  and Force 46 (deflection 0.19).  At standard IMPACT_YIELD (1505000) deflection drops at Force 48, and at 10X IMPACT_YIELD (15050000) the drop is between Force 100 and 200.  I will try to get a few more points for steel's impact yield to figure out the functional dependence.

Edit: My run failed again.   >:(  I forgot to change "steel" to "bronze" in one place, and I had been manually modifying Impact_Yield of steel to be really high, so I got 100% deflections at all forces even with no changes from standard bronze. 

Edit: (10/30 6 PM)
Here are some results for bronze (finally).  It looks like the only parameters that matter are the three impact parameters (although I didn't finish BENDING_STRAIN_AT_YIELD).  Edit: In each case I doubled the indicated parameter, rather than multiplying it by 10 as before.  I was hoping that a smaller change would produce less confusing results, but that would only be true if I told people what I did (sorry Urist  :-[).
Spoiler (click to show/hide)
Having seen this, I then replaced the three impact parameters for bronze with those of steel (I set [IMPACT_YIELD:1505000], [IMPACT_FRACTURE:2520000], and [IMPACT_STRAIN_AT_YIELD:940], and kept all other parameters equal to vanilla bronze).  I found that I get same results as for vanilla steel:
Spoiler (click to show/hide)
The errors on these numbers are about 1-2%, as I only used 72 targets, which results on 1,000-10,000 hits.  Therefore, the results for bronze with modified IMPACT parameters are exactly the same as those for steel within the margin of error.

Discovery: The only parameters which effect "edged" low velocity deflection rate are IMPACT_YIELD, IMPACT_FRACTURE and IMPACT_STRAIN_AT_YIELD
I tested deflection of steel bolts against modified bronze, and found that they don't deflect at all.  This is consistent with my larger table which shows that "better" bolts don't deflect off armor at any force, with candy>steel>iron=bronze>copper. 

Increasing SHEAR_YIELD of bronze to be equal to steel (430000) allows deflections to occur identically to steel (I think - need to verify this carefully), but setting it to 429999 does not allow any deflections even at very low force.  However, bronze also deflects off of iron, even though the SHEAR_YIELD of bronze is higher than iron.  I therefore also checked if setting SHEAR_FRACTURE or SHEAR_STRAIN_AT_YIELD equal to steel would make a difference.  I found that increasing SHEAR_FRACTURE to 720000 allows deflections, but 719999 does not.  The deflection vs force curve is definitely different in this case, as at force=47 deflection=0.19.  It does not appear that SHEAR_STRAIN_AT_YIELD does anything, but I'm not sure yet.

My current theory is that SHEAR_YIELD allows the lower transition to occur, and corresponds to the armor bending, but not breaking.  For iron vs. steel, hits that don't deflect between force 47 and 60 tend to cause mostly bruises, suggesting that although the bolt penetrates the armor ~80% of the time, even when it does it is slowed down significantly.  SHEAR_FRACTURE greater or equal to the bolt material allows the upper transition to occur, which corresponds to the bolt punching right through the armor.  It is also certainly possible that what's going on is more complicated, and also depends on SHEAR_STRAIN_AT_YIELD, or even other parameters.

My next step is to carefully examine the deflection vs. force curve for cases where only SHEAR_YIELD or SHEAR_FRACTURE is greater or equal to the bolt.
« Last Edit: October 31, 2012, 06:30:58 am by Pirate Bob »
Logged

Pirate Bob

  • Bay Watcher
  • [ETHIC: TORTURE_FOR_SCIENCE: ACCEPTABLE]
    • View Profile

Here are the force vs. deflection curves for steel bolts against bronze armor with impact parameters copied from steel ([IMPACT_YIELD:1505000], [IMPACT_FRACTURE:2520000], and [IMPACT_STRAIN_AT_YIELD:940]), the indicated SHEAR value set equal to steel, and all other parameters equal to bronze.
Spoiler (click to show/hide)
As you can see, the curves are nearly identical, except that with SHEAR_FRACTURE increased equal to steel the deflection drops to 0.2 at force 46, and with SHEAR_YIELD it doesn't drop until force 48.

Urist Da Vinci

  • Bay Watcher
  • [NATURAL_SKILL: ENGINEER:4]
    • View Profile

...
Here's some more numbers for force dependence after multiplying IMPACT_YIELD, IMPACT_FRACTURE and IMPACT_STRAIN_AT_YIELD by 10:
...
I examined these numbers and it appears that, for iron bolts and steel armor, the deflection threshold kinetic energy is linearly related to IMPACT_YIELD and IMPACT_STRAIN_AT_YIELD.

I did my own test, firing copper bolts at iron armor, and reduced the IMPACT_FRACTURE of iron to just above the IMPACT_YIELD (it used to be 2x larger, then became 1.05x larger). The drop in deflection threshold kinetic energy appeared to be linearly related to the change in magnitude of [IMPACT_FRACTURE - IMPACT_YIELD]. In this case IF-IY was 13x smaller, and the energy required was also 13x smaller. I then tried a case where I made IF-IY 3x smaller, and worked backwards to predict a velocity at which the bolt should deflect. My prediction was correct! I tested for the relationship to IMPACT_STRAIN_AT_YIELD, and found it to be weakly present (making iron 3x less flexible while the IMPACT_FRACTURE was lowered resulted in the energy requirement increasing by 1.07x or something).

So we appear to have at least 2 cases (excluding adamantine's weirdness):

A) the IMPACT_FRACTURE is sufficiently larger than IMPACT_YIELD (i.e. steel), so the armor can deflect a bolt with a kinetic energy proportional to the armor's IMPACT_YIELD and IMPACT_STRAIN_AT_YIELD. Even when this type of armor stops deflecting, it tends to fail first by denting, which leads to bruising only and ~20% deflections.

B) the IMPACT_FRACTURE is close to the value of the IMPACT_YIELD (i.e. bronze), so the armor can deflect a bolt with a kinetic energy proportional to [IMPACT_FRACTURE - IMPACT_YIELD]. This armor is considered to have fractured on failure, so the attack hits the underlying tissue at full force.

...
Urist, you said that SHEAR_YIELD is used to determine if blunt or edged damage will take place.  Do you know that determines if deflections will occur at all?  It appears that no deflections occur if the bolt material is "better" than the armor, with candy>steel>iron=bronze>copper, but I don't know what parameters determine "better". 
...
Here are some results for bronze (finally).  It looks like the only parameters that matter are the three impact parameters (although I didn't finish BENDING_STRAIN_AT_YIELD). 
...

All I ever determined was that SHEAR_YIELD is used to determine if an edged weapon can cut a material. In this bug report http://www.bay12games.com/dwarves/mantisbt/view.php?id=5346 I describe how obsidian swords can't cut people because their SHEAR_YIELD is less than that of skin/meat/etc., whereas wood and teeth both have sufficient SHEAR_YIELD. I never investigated further into the other SHEAR properties.

Looking at those bronze results, it looks like you increased each parameter x10.
- In the case of IMPACT_YIELD x10, the kinetic energy went up about 1.4x, which is the ratio of IF/IY. I think since IMPACT_YIELD became higher than IMPACT_FRACTURE, the material doesn't yield at all until it fractures (the adamantine condition). Look at how the deflection goes from 0.06 to 0 in the "no changes" case around the same time that the deflection drops from 1 to 0 in this case.
- In the case of IMPACT_FRACTURE x10, the kinetic energy went up about 10x, presuming upper threshold velocity 54.
- In the case of IMPACT_STRAIN_AT_YIELD x10, the kinetic energy went down by an insignificant amount.

We ought to try decreasing both of adamantine's properties at the same time to see how deflection varies with velocity.

Toady comments in the release notes for 0.31.09 that "fixed problem with edge being disregarded too soon after impact breaks". I think this means that if a bolt can't defeat an armor's SHEAR properties, but can defeat the IMPACT_FRACTURE and smash through, it is allowed to start cutting again on the next layer. So if a bolt doesn't deflect, but it only bruises something or chips/fractures/etc. a bone, then the armor wasn't fractured. If the bolt doesn't deflect and it does tearing damage to the skin/fat/muscle, then it cut or fractured its way through the armor. This could be useful in a text filter to obtain more data points from results.

Pirate Bob

  • Bay Watcher
  • [ETHIC: TORTURE_FOR_SCIENCE: ACCEPTABLE]
    • View Profile

...
Here's some more numbers for force dependence after multiplying IMPACT_YIELD, IMPACT_FRACTURE and IMPACT_STRAIN_AT_YIELD by 10:
...
I examined these numbers and it appears that, for iron bolts and steel armor, the deflection threshold kinetic energy is linearly related to IMPACT_YIELD and IMPACT_STRAIN_AT_YIELD.
Unfortunately, I don't think the relationship is this simple.  It appears to be true that, for IMPACT_YIELD>IMPACT_FRACTURE, deflection threshold kinetic energy is linearly proportional to IMPACT_YIELD.  Here are some results for the force where deflection equals approximately 60% (the middle of the transition between 1.0 and 0.2) as a function of IMPACT_YIELD:
Spoiler: (updated) (click to show/hide)
I have also plotted the square of the force (proportional to the kinetic energy) as a function of IMPACT_YIELD-IMPACT_FRACTURE:
Spoiler: (updated) (click to show/hide)
As you can see, it is linear for IMPACT_YIELD>IMPACT_FRACTURE, but not for smaller IMPACT_YIELD.

update: I added more points to the above curves.  Note the discontinuity at IMPACT_YIELD=IMPACT_FRACTURE=2520000 - I believe this is real.  Here is also a zoom-in of the kinetic energy plot above near the transition:
Spoiler (click to show/hide)

Here are some of the raw deflection vs. force curves that I used to determine the transition. 
Spoiler (click to show/hide)
The number next to the curve in the legend is IMPACT_YIELD.  The data for low IMPACT_YIELD is not in here - I only copied down the force for the transition from 1.0 to 0.2 and not the force/deflection curve.  I have all the raw gamelogs, so I will try to add in this data later.

Edit - here is another set with IMPACT_YIELD <= IMPACT_FRACTURE.  Note that the curve for IMPACT_YIELD=IMPACT_FRACTURE=2520000 is quite different from the others.

I have also posted most of my data on DFFD (I updated this more data).  I created this using Gnumeric (linux spreadsheet editor) and converted to excel, so the graphs will probably be all messed up, but the data should be fine. 

One other comment about the data - as |IMPACT_YIELD-IMPACT_FRACTURE| gets larger, the size of the plateau at 0.2 also gets larger.  This is also true for at least some values where IMPACT_YIELD<IMPACT_FRACTURE.  Notice that IMPACT_YIELD:3010000 (just above the IMPACT_FRACTURE:2520000) the plateau seems to have almost disappeared, but it is quite prevalent for vanilla IMPACT params (see earlier posts), which have IMPACT_YIELD:1505000.

Looking at those bronze results, it looks like you increased each parameter x10.
I actually only multiplied by 2 each time.  Very sorry I forgot to mention that.  It took me so many tries to get the run to work I forgot that I had made that change by the time I posted the data.

Today I am going to do some detailed runs for IMPACT_YIELD<IMPACT_FRACTURE.

Edit:
I looked at Urist's results more carefully, and it appears he only considered IMPACT_YIELD>IMPACT_FRACTURE, so his results are consistent with my finding that in this range the kinetic energy required to penetrate armor scales linearly with IMPACT_YIELD. 

In addition to running IMPACT_YIELD<IMPACT_FRACTURE, I also am running IMPACT_YIELD=IMPACT_FRACTURE today, and before I left I peeked at the first few results and I can say that it is weird.  At Force=45, there are ~90% deflections, which is very strange given that at very small impact yield there are 100% deflections at Force=45.  Candy has IMPACT_YIELD=IMPACT_FRACTURE=5000000, so we should expect the behavior of candy to be weird as well.  I definitely plan to explore force/deflection curves at different values of IMPACT_YIELD=IMPACT_FRACTURE.

I am hoping that in the next few days (or maybe this weekend) I can write code to do a simplex search to automatically map out force/deflection curves.  Right now I just tell the computer to evaluate deflection at a set of force values, but frequently the result is not at all what I expected, and therefore the forces I evaluate at are not ideal for mapping a good curve.  I need the computer to instead search for the forces which give certain values of deflection (x=1.0, 0.8, 0.6, 0.4, 0.2, 0.1 and 0.0), and then search until it finds a pair of adjacent forces such that the higher force has deflection less than or equal to x, and the lower force has deflection greater than or equal to x (for example, for iron vs. vanilla steel, the pair of forces (47,48) satisfy this for x between 1.0 and 0.2).  Since this is a one dimensional search, the simplex method should do a good job.  Given how complicated the dependence on impact parameters appears to be, I think it would be most efficient for me to focus my efforts on writing this search code over the next few days, and not worry about running more data sets until I have it finished. 

Urist - do you (or anyone else who's motivated) have any interest in my collection of perl scripts?  They are written to work under linux, but I think the only change needed to make them work under windoze would be to call a different program to send keystrokes to DF.  For example, I think this might work, but I'm not sure if it's compatible with perl.  I definitely plan to post my scripts to DFFD eventually (and I did post some a while back), but I end up changing them pretty much daily as I find that I need to do a more and more complex search to map out the parameter space.  So unless someone is really interested and into computer programming, I will wait until I have something that is more stable and also hopefully commented at least decently well before putting it up there.
« Last Edit: October 31, 2012, 09:08:59 pm by Pirate Bob »
Logged

Urist Da Vinci

  • Bay Watcher
  • [NATURAL_SKILL: ENGINEER:4]
    • View Profile

...
I looked at Urist's results more carefully, and it appears he only considered IMPACT_YIELD>IMPACT_FRACTURE, so his results are consistent with my finding that in this range the kinetic energy required to penetrate armor scales linearly with IMPACT_YIELD. 
...

I'm somewhat confused by your results. In real life, YIELD<FRACTURE (yield is less than fracture), which I always used for my own tests. YIELD>FRACTURE is like the below-absolute-zero temperatures that are possible in DF.

I'll examine your DFFD data, and reassess the earlier results for 2x instead of 10x.

Pirate Bob

  • Bay Watcher
  • [ETHIC: TORTURE_FOR_SCIENCE: ACCEPTABLE]
    • View Profile

...
I looked at Urist's results more carefully, and it appears he only considered IMPACT_YIELD>IMPACT_FRACTURE, so his results are consistent with my finding that in this range the kinetic energy required to penetrate armor scales linearly with IMPACT_YIELD. 
...

I'm somewhat confused by your results. In real life, YIELD<FRACTURE (yield is less than fracture), which I always used for my own tests. YIELD>FRACTURE is like the below-absolute-zero temperatures that are possible in DF.

I'll examine your DFFD data, and reassess the earlier results for 2x instead of 10x.
Oh, wait, in your tests you said Fracture>Yield.  That's the opposite of what I thought.  I guess you were also varying fracture, not yield.  I haven't tested that, and our two tests aren't really related. 

It does make sense that Fracture should always be greater than Yield.  As I mentioned before, I don't know anything about materials physics.  I think it is greater or equal to yield for all the materials in DF, but I'm not sure.  It's definitely equal for candy, which is weird enough.

Urist Da Vinci

  • Bay Watcher
  • [NATURAL_SKILL: ENGINEER:4]
    • View Profile
Re: Dwarven Research: A Comparison Study on the Effectiveness of Bolts vs Armors
« Reply #171 on: November 02, 2012, 01:27:04 am »

OK, here are the threshold velocity results for varying the properties of candy, using iron bolts and candy uniarmor:

Code: [Select]
IF=IY Velocity
5000000 84
3750000 63
2500000 42
1000000 16

This is linear with velocity. I also tried silver bolts in the 3750000 case, and got a threshold velocity of 47. 63/47=10490/7850 so this is also linear with weight. This means that candy deflects bolts below a certain momentum, not kinetic energy.

Pirate Bob

  • Bay Watcher
  • [ETHIC: TORTURE_FOR_SCIENCE: ACCEPTABLE]
    • View Profile
Re: Dwarven Research: A Comparison Study on the Effectiveness of Bolts vs Armors
« Reply #172 on: November 02, 2012, 11:35:35 am »

OK, here are the threshold velocity results for varying the properties of candy, using iron bolts and candy uniarmor:

Code: [Select]
IF=IY Velocity
5000000 84
3750000 63
2500000 42
1000000 16
This is linear with velocity. I also tried silver bolts in the 3750000 case, and got a threshold velocity of 47. 63/47=10490/7850 so this is also linear with weight. This means that candy deflects bolts below a certain momentum, not kinetic energy.
I assume by "threshold velocity" you mean the lowest velocity at which armor penetration occurs at all (which usually corresponds to the transition from 100% deflection to 20% deflection)?

I am finished writing the core of my simplex search algorithm (the simplex algorithm is really easy to code, but I don't know perl that well so I was spending a lot of time figuring out how to pass arrays back and forth from subroutines and that sort of thing).  I now just need to apply it to running dwarf fortress simulations, which should be relatively straightforward.

Urist, do you have any suggestions on what I should investigate first?  I think maybe I need to investigate IMPACT_STRAIN_AT_YIELD.  I noticed that it is zero for candy, and this seems very odd.  Looking at the wikipedia article on Stress-Strain, it appears to me that zero IMPACT_STRAIN_AT_YIELD implies that candy is "brittle", similar to glass or carbon fiber, but I am not sure.  Maybe Toady decided that carbon fiber is the closest real-world approximation to candy?  Do you have any thoughts?  I think it might be interesting to test candy and steel with IMPACT_STRAIN_AT_YIELD = [0,10,100,500,1000,2000,5000] or something similar.  At each of these values I would have the simplex find the velocity required for deflections equal to (100%, 80%, 60%, 40%, 20%, 10% and 0).  I estimate that it would take about 30 points to generate each deflection vs. velocity curve, and around 2 minutes for each point to run in the arena, so running this whole set would take about a day.  I suppose I could remove some points from the velocity/deflection curve, but I don't want to miss any unexpected behavior. 

Another idea I had was to scan a large range, but I think I might want to understand IMPACT_STRAIN_AT_YIELD better first.  I was thinking about using IMPACT_FRACTURE = [ 500000 (~silver) , 1250000 (~iron), 2500000 (~steel), and 5000000 (candy)] , and then at each IMPACT_FRACTURE using IMPACT_YIELD equal to  [10%, 25%, 50% and 100%] of  IMPACT_FRACTURE.  Then for each YIELD/FRACTURE pair I would have the simplex find the velocity required for deflections equal to (100%, 80%, 60%, 40%, 20%, 10% and 0).  Running this set would take about a day, but I am not sure what value to use for IMPACT_STRAIN_AT_YIELD (or other parameters), so I think I should investigate this first.

Another thing I would eventually like to investigate is the behavior with IMPACT_YIELD just below IMPACT_FRACTURE, as something weird is happening when they are equal.  However, I think I would like to map out the general behavior over a large range first.

Edit:  Looking at the stress-strain curve some more, it appears that IMPACT_STRAIN_AT_YIELD determines the strain at which the material transitions from elastic yield to plastic deformation (although this might actually be just IMPACT_YIELD - I'm not sure).  Our tests have shown that increasing IMPACT_STRAIN_AT_YIELD results in deflections at lower force (at least if you increase it a lot).  This might mean that if strain at yield is too high, then the armor is very rigid, and will allow transfer of a blunt blow through, causing damage, but with lower strain at yield the armor deforms, dissipating the force of the blow.  I think Urist may have said before that it determines flexibility, but I'm not sure.    I wish I could figure out what (if anything) all these parameters correspond to in terms of real world physics.

Edit #2:  There is also another direction I could go with testing.  I could temporarily abandon trying to understand details of how the materials properties impact armor behavior.  I would really like to figure out how the raws could be modded to produce decent bolt behavior.  I would strongly prefer not to change materials to achieve this, as that would almost certainly mess up melee combat, which as far as I know works well right now.  To that end, I could instead vary bolt contact area, mass and penetration depth, and test this against [candy, steel, iron, bronze, and copper] as a function of bolt velocity.  I would very much like to uncover the complete mathematics governing dwarven ballistics, but given how complicated it seems to be it might be wiser to delay this.  I'm not sure.  If we understand the math, it should be pretty easy to prescribe a set of parameters which will produce nice results.  Then again, Toady knows what the math is, and he's very smart, and yet I think it's very unlikely that he realized that the current set of raws would produce such wacky behavior for bolts and arrows.
« Last Edit: November 02, 2012, 12:07:33 pm by Pirate Bob »
Logged

Quietust

  • Bay Watcher
  • Does not suffer fools gladly
    • View Profile
    • QMT Productions
Re: Dwarven Research: A Comparison Study on the Effectiveness of Bolts vs Armors
« Reply #173 on: November 02, 2012, 03:09:51 pm »

Minor offtopic rant:

I've just read through some bits of this thread, and I can't help but be annoyed by the rampant references to the term "candy". If you're going to post "scientific research results" (even if they are the result of ‼science‼), then don't use euphemisms! The top material is not "candy" - it is Adamantine.

We're intelligent people who know how the game works - there's no need to hide behind meaningless spoiler language (especially where said "spoiler terms" are worse than useless)...
Logged
P.S. If you don't get this note, let me know and I'll write you another.
It's amazing how dwarves can make a stack of bones completely waterproof and magmaproof.
It's amazing how they can make an entire floodgate out of the bones of 2 cats.

Zaroua

  • Bay Watcher
    • View Profile
Re: Dwarven Research: A Comparison Study on the Effectiveness of Bolts vs Armors
« Reply #174 on: November 02, 2012, 05:33:09 pm »

Also, for threshold IMPACT_YIELD greater than about 10000, the difference between deflect and blunt damage on armor is binary. For thresholds 0-10000, the difference is fuzzy and also appears to depend on body part size or number of armor layers (i.e. lower leg deflects because boots+greaves, but upper leg damaged because only greaves!).

This research has useful applications because wooden arrows (i.e. from elves) kill dwarves in candy, aluminum, wood, bone, and leather armor, but heaver junk metals like pewter (i.e. artifact) or copper armor will safely deflect the arrows. The armor density needs to be at least 3000.

So if I'm reading this right, you'd want adamantine plate with steel chain mail to maximize protection against arrows and bolts, correct?



Potential new discovery:

It has been generally known, given comments made by Toady One and various testing, that the IMPACT_YIELD property of an armor material has an effect on blunt damage received. AFAIK (and general forum wisdom) was that blunt damage depended only on blunt weapon density.

Take a silver bolt, and shoot it at a dwarf wearing steel armor. According to previous research and testing, the victim will suffer blunt damage, likely chipping a bone and with a chance of instant death due to skull=>brain damage.

Now mod silver to have a reduced IMPACT_YIELD of 350 instead of 350000. These silver bolts will deflect off the steel armor, but will still penetrate wood/leather armor and cut flesh. These modded silver bolts will deflect off any armor that they can't penetrate, including Silver or Candy - it's almost as if the bolts can no longer deal blunt damage. However, since we modded the material, this may have unintended consequences for armor properties or melee combat.

Some verification testing and additional research is requested.

TLDR; SOLID_DENSITY and IMPACT_YIELD both matter for blunt damage

Would this explain why silver blunt weapons with their 350k impact yield have such a hard time actually killing enemies while iron/bronze/steel blunt weapons are significantly better at getting kills - especially against unconscious enemies?
Logged

Urist Da Vinci

  • Bay Watcher
  • [NATURAL_SKILL: ENGINEER:4]
    • View Profile
Re: Dwarven Research: A Comparison Study on the Effectiveness of Bolts vs Armors
« Reply #175 on: November 02, 2012, 08:37:01 pm »

...

So if I'm reading this right, you'd want adamantine plate with steel chain mail to maximize protection against arrows and bolts, correct?

...

Would this explain why silver blunt weapons with their 350k impact yield have such a hard time actually killing enemies while iron/bronze/steel blunt weapons are significantly better at getting kills - especially against unconscious enemies?

1. Yes, that would be a good combination. Shields and some shield user skill provide far better bolt/arrow protection in practice. Barring changes to combat, I will probably only use adamantine for edged weapons and not armor in future fortresses.

2. Perhaps. I haven't looked at melee weapons in detail.

...
I assume by "threshold velocity" you mean the lowest velocity at which armor penetration occurs at all (which usually corresponds to the transition from 100% deflection to 20% deflection)?
...
Urist, do you have any suggestions on what I should investigate first?  I think maybe I need to investigate IMPACT_STRAIN_AT_YIELD.  I noticed that it is zero for candy, and this seems very odd.  Looking at the wikipedia article on Stress-Strain, it appears to me that zero IMPACT_STRAIN_AT_YIELD implies that candy is "brittle", similar to glass or carbon fiber, but I am not sure.  Maybe Toady decided that carbon fiber is the closest real-world approximation to candy?  Do you have any thoughts?
...
Edit:  Looking at the stress-strain curve some more, it appears that IMPACT_STRAIN_AT_YIELD determines the strain at which the material transitions from elastic yield to plastic deformation (although this might actually be just IMPACT_YIELD - I'm not sure).  Our tests have shown that increasing IMPACT_STRAIN_AT_YIELD results in deflections at lower force (at least if you increase it a lot).  This might mean that if strain at yield is too high, then the armor is very rigid, and will allow transfer of a blunt blow through, causing damage, but with lower strain at yield the armor deforms, dissipating the force of the blow.
...

3. Yes. Adamantine doesn't have a sharp drop from 100% to 20%, its more like 100% to 99%.

4. http://www.youtube.com/watch?v=t9eB0PKYAt8 - A short youtube video explaining the basics of stress and strain. So the strain at yield is essentially the deflection at the instant the material starts to yield. IRL brittle materials are stiff, but not as stiff as Adamantine (which is impossibly stiff, in a divide-by-zero sense). IRL brittle materials DO have ultimate tensile strengths (i.e. fracture strengths) that are not far above the yield strength, so Bronze, Adamantine, and Bone are all brittle materials. Strain at yield is a derived property - IRL we use the elastic modulus (young's modulus) in calculations.

5. It appears that the strain at yield and the "impact yield" (i.e. yield strength) determine the energy required to start to plastically deform the material. If the strain at yield is too high (i.e. the 50000 values for meat), the material is very flexible and allows the transfer of a blunt blow through (to the bones beneath). However a larger strain at yield should reduce the energy of the bolt.

If the fracture strength is very high compared to the yield strength, and the strain at yield is low, the armor would absorb lots of energy in both elastic and plastic deflections. I might be able to make Adamantine stronger.

Pirate Bob, could you please plot some 100% deflection threshold data where you start out with yield=fracture, and then increase the fracture strength in steps up to about 5x yield? Then alter the strain at yield, and run the test again with the same values. You could use Bronze as the material, and try it with normal, double, and zero strain. The graph of this data should give us a good idea of how the ductile-brittle transition is handled, and when strain starts to matter.

Pirate Bob

  • Bay Watcher
  • [ETHIC: TORTURE_FOR_SCIENCE: ACCEPTABLE]
    • View Profile
Re: Dwarven Research: A Comparison Study on the Effectiveness of Bolts vs Armors
« Reply #176 on: November 03, 2012, 11:44:55 pm »

Pirate Bob, could you please plot some 100% deflection threshold data where you start out with yield=fracture, and then increase the fracture strength in steps up to about 5x yield? Then alter the strain at yield, and run the test again with the same values. You could use Bronze as the material, and try it with normal, double, and zero strain. The graph of this data should give us a good idea of how the ductile-brittle transition is handled, and when strain starts to matter.
I am working on these plots.  I uncovered a bug with my simplex code when I implemented for projectile testing, but I am 99% sure that is squashed now.  I am running overnight with steel armor starting with fracture=yield and increasing fracture, for several values of stain at yield.  I chose steel to start as I am slightly worried that bronze's behavior might be unusual, at least for deflection of iron.  I can run bronze next (i.e. tomorrow), unless there is something else more interesting to work on.

Edit:  Here are some preliminary results - the run is taking longer than I expected, so it will not be finished until this afternoon.   I am running with double IMPACT_STRAIN_AT_YIELD now and will post results later today. 

This was run using steel armor ([IMPACT_YIELD:1505000]), with IMPACT_FRACTURE = 1505000, 1512000, 2016000, 2520000, 5040000, 10080000, and 15120000.  I have run two sets so far, with IMPACT_STRAIN_AT_YIELD equal to 940 and 470.  I also added in a point at IMPACT_FRACTURE=3780000 for 470, which I will include in future runs.  This plots shows the minimum force(=velocity) where armor was penetrated for iron bolts against steel uniarmor, with all parameters not mentioned at vanilla values.
Spoiler (click to show/hide)
(updated)
It's hard to say for sure, but it appears that the cutoff force increases linearly with IMPACT_FRACTURE until a point determined by the inverse of IMPACT_STRAIN_AT_YIELD, and then remains constant.  It is also possible that the true behavior is something like an exponential decay to a constant value - it's hard to say for sure without more data.  Fitting the strain at yield 470 curve to a line for fracture<3000000 gives force cutoff = 3.53967E-5 * IMPACT_FRACTURE - 28.5878. 

Edit #2: I updated the plot above to include data with strain=1880, and also plotted the curve for 10% deflection (which does not depend on strain).  In this case, all values of IMPACT_FRACTURE drop to 20% deflection at force/velocity approximately 25.  I have also included plots of the full force/deflection curves for each value of IMPACT_FRACTURE and IMPACT_STRAIN_AT_YIELD.  There is a separate plot for each IMPACT_STRAIN_AT_YIELD, and each curve within the plot has the labeled value of IMPACT_FRACTURE.
Spoiler (click to show/hide)
I also plotted the force for 10% deflection as a function of IMPACT_FRACTURE for each value of IMPACT_STRAIN_AT_YIELD.  This force doesn't hardly depend on IMPACT_STRAIN_AT_YIELD and it is linear with IMPACT_FRACTURE.
Spoiler (click to show/hide)

Finally, I also updated my spreadsheet on DFFD to add a sheet with the raw data for all of these plots. 

It appears that, if IMPACT_FRACTURE is below some cutoff determined by IMPACT_STRAIN_AT_YIELD (and possibly other parameters such as IMPACT_YIELD) that deflection exhibits a smooth, sigmoidal drop from 1 to zero, with the middle of the drop given by SHOOT_FORCE = 3.65E-5 * IMPACT_FRACTURE - 27.13 (note - I believe the reason this slope is slightly different than the slope for the 100% deflection cutoff is because the sigmoidal transition also gets wider as IMPACT_FRACTURE increases).  If IMPACT_FRACTURE goes over the threshold, then deflection drops to ~19% at some fixed force which depends on IMPACT_STRAIN_AT_YIELD, but not IMPACT_FRACTURE.  Deflection will always follow the same sigmoidal curve from 19% to zero, regardless of the cutoff.

My next steps will be to check this at lower values of IMPACT_STRAIN_AT_YIELD (higher cutoff) and to see how IMPACT_YIELD figures into this behavior.  I also would like to see how bronze behaves, as Urist Da Vinci suggested using bronze for these tests and he may have had a good reason.  I definitely feel like we're getting somewhere...
« Last Edit: November 05, 2012, 12:30:42 pm by Pirate Bob »
Logged

Pirate Bob

  • Bay Watcher
  • [ETHIC: TORTURE_FOR_SCIENCE: ACCEPTABLE]
    • View Profile
Re: Dwarven Research: A Comparison Study on the Effectiveness of Bolts vs Armors
« Reply #177 on: November 04, 2012, 11:35:10 pm »

Here is a plot of the force at which deflection drops from 1.0 to 0.2 at high [IMPACT_FRACTURE] as a function of 1/[IMPACT_STRAIN_AT_YIELD] 
Spoiler (click to show/hide)
It is clearly linear, and fits nicely to the equation shown in the chart.  Since the Cutoff Force is also equal to 3.65E-5 * IMPACT_FRACTURE - 27.13, this implies that the IMPACT_FRACTURE where the plot of cutoff force vs. IMPACT_FRACTURE levels off is given by 1.16E9 / IMPACT_STRAIN_AT_YIELD + 815433.  I will be verifying this overnight.

Urist Da Vinci

  • Bay Watcher
  • [NATURAL_SKILL: ENGINEER:4]
    • View Profile
Re: Dwarven Research: A Comparison Study on the Effectiveness of Bolts vs Armors
« Reply #178 on: November 05, 2012, 12:36:00 am »

Firstly, you wrote IMPACT_YIELD_AT_FRACTURE often, when you probably meant IMPACT_STRAIN_AT_YIELD.

...
It appears that, if IMPACT_FRACTURE is below some cutoff determined by IMPACT_YIELD_AT_FRACTURE (and possibly other parameters such as IMPACT_YIELD) that deflection exhibits a smooth, sigmoidal drop from 1 to zero, with the middle of the drop given by SHOOT_FORCE = 3.65E-5 * IMPACT_FRACTURE - 27.13 (note - I believe the reason this slope is slightly different than the slope for the 100% deflection cutoff is because the sigmoidal transition also gets wider as IMPACT_FRACTURE increases).  If IMPACT_FRACTURE goes over the threshold, then deflection drops to ~19% at some fixed force which depends on IMPACT_YIELD_AT_FRACTURE, but not IMPACT_FRACTURE.  Deflection will always follow the same sigmoidal curve from 19% to zero, regardless of the cutoff.
...

My recent test for iron bolts on adamantine armor found that the 100% deflection cutoff for materials with 0 IMPACT_STRAIN_AT_YIELD and IMPACT_YIELD=IMPACT_FRACTURE is:

Bolt Momentum = Bolt_Weight * Bolt_Velocity = 2.00E-5 * IMPACT_FRACTURE = IMPACT_FRACTURE/50000

If the sigmoidal transition gets wider as IMPACT_FRACTURE increases, then this would be one of the edges.
Your slope is also momentum-based and could be written as such.

...
This was run using steel armor ([IMPACT_YIELD:1505000]), with IMPACT_FRACTURE = 1505000, 1512000, 2016000, 2520000, 5040000, 10080000, and 15120000.  I have run two sets so far, with IMPACT_YIELD_AT_FRACTURE equal to 940 and 470.  I also added in a point at IMPACT_FRACTURE=3780000 for 470, which I will include in future runs.  This plots shows the minimum force(=velocity) where armor was penetrated for iron bolts against steel uniarmor, with all parameters not mentioned at vanilla values.
Spoiler (click to show/hide)
(updated)
...
Edit #2: I updated the plot above to include data with strain=1880, and also plotted the curve for 10% deflection (which does not depend on strain).  In this case, all values of IMPACT_FRACTURE drop to 20% deflection at force/velocity approximately 25.
...

1505000 / 50000 / 1.1775 = 25.5
So we can probably predict the deflection threshold velocity for all materials that have IMPACT_YIELD=IMPACT_FRACTURE, or in those cases where the IMPACT_FRACTURE is higher than yield but not high enough.

IMPACT_FRACTURE = 1.5 * IMPACT_YIELD at the point where the velocity stops increasing on the IMPACT_STRAIN_AT_YIELD 940 set of points. That's interesting. IRL that is the point where the energy required to yield the material is the same as the energy required to fracture the (already yielded) material. Not sure if that's the case here.

On the set of points for IMPACT_STRAIN_AT_YIELD 470, the velocity stops increasing at just about double the previous velocity. Perhaps this velocity can be predicted for other small values of IMPACT_STRAIN_AT_YIELD if the "multiply one by X, divide the other by X" relationship exists. Apparently you can't use this with large strain values to get velocities below 25 for steel armor, since the method used to calculate that 25 velocity ignores strain.

It looks to me like the width of the 20% deflection zone is linear with increasing IMPACT_FRACTURE, so we could probably predict it.

...
I also would like to see how bronze behaves, as Urist Da Vinci suggested using bronze for these tests and he may have had a good reason.  I definitely feel like we're getting somewhere...

We could probably make a deflection prediction algorithm at this point. We know armor thickness and contact area are involved. It's probably similar to how contact area and armor thickness are handled for the low-bolt's-impact-yield ricochet equation, but that needs to be verified. Take a situation where a bolt should not deflect (or only partially deflect) and see how the deflection improves as you increase the armor thickness or increase the contact area.

Bronze has a higher SHEAR_YIELD and IMPACT_YIELD than Iron, but it has a smaller SHEAR_FRACTURE and IMPACT_FRACTURE than Iron. Strange things are likely to happen when the two materials hit each other. Given how popular these materials are in both fortress mode and adventure mode combat, it might be worth a look.

FAKE EDIT: I haven't read your latest post yet. Sleep is required!

Pirate Bob

  • Bay Watcher
  • [ETHIC: TORTURE_FOR_SCIENCE: ACCEPTABLE]
    • View Profile
Re: Dwarven Research: A Comparison Study on the Effectiveness of Bolts vs Armors
« Reply #179 on: November 05, 2012, 11:15:47 am »

Firstly, you wrote IMPACT_YIELD_AT_FRACTURE often, when you probably meant IMPACT_STRAIN_AT_YIELD.
Sorry about this - you are correct that I meant IMPACT_STRAIN_AT_YIELD in all cases.  I perhaps should have also stopped updating and gotten some sleep instead.  I think I fixed most of my references to YIELD_AT_FRACTURE, which of course does not exist.

My recent test for iron bolts on adamantine armor found that the 100% deflection cutoff for materials with 0 IMPACT_STRAIN_AT_YIELD and IMPACT_YIELD=IMPACT_FRACTURE is:

Bolt Momentum = Bolt_Weight * Bolt_Velocity = 2.00E-5 * IMPACT_FRACTURE = IMPACT_FRACTURE/50000

If the sigmoidal transition gets wider as IMPACT_FRACTURE increases, then this would be one of the edges.
Your slope is also momentum-based and could be written as such.
Any chance that you will post the data or plots of the data you used to obtain this relationship? (You had done this a while ago...)  I agree that this result equation also agrees with the result for YIELD=FRACTURE for my data, and is also the lower momentum limit for the deflection cutoff in the case of high IMPACT_STRAIN_AT_YIELD(doesn't hold for newer data).   If you look at my raw data, sometimes I get force=25 and sometimes I get 26, so 25.5 actually fits the data perfectly.

I am collecting more data on the the deflection cutoff vs. IMPACT_FRACTURE (my run did not finish last night).  When I have that data, I will plot the deflection cutoff as a momentum instead of a force, and see if the numbers come out nicer.  Just multiplying Force=3.65E-5 * IMPACT_FRACTURE - 27.13 times mass=1.1775 give momentum = 4.3E-5*IMPACT_FRACTURE - 31.9, so it seems like there are probably other parameters entering into this equation.  There is some error in this line fit, but not enough to say that 4.3 could round to 4 or 5. 

However, if I take the curve for cutoff force vs. 1/[IMPACT_STRAIN_AT_YIELD] and multiply this by mass=1.1775, then I get cutoff momentum = 50000/[IMPACT_STRAIN_AT_YIELD] + 3.1.  The error on the value 3.1 is large enough that it might be zero, so I am leaning towards the real relationship just being cutoff momentum = 50000/[IMPACT_STRAIN_AT_YIELD] when the [IMPACT_STRAIN_AT_YIELD] is small enough that this result is significantly greater than IMPACT_YIELD/50000 (and I do mean YIELD here, as this is derived from the FRACTURE=YIELD limit, and for very large [IMPACT_STRAIN_AT_YIELD] the deflection cutoff is given by IMPACT_YIELD/50000 and is independent of FRACTURE).

While I definitely agree that varying bolt parameters (contact area etc.) and testing iron vs. bronze (which I agree is likely weird - this is the reason I did not test it first) are important, I think we need to see how changing IMPACT_YIELD plays into this behavior next.  Unless something unexpected happens with my data from today or someone presents me with a better idea, I will probably redo varying of IMPACT_FRACTURE and IMPACT_STRAIN_AT_YIELD after doubling IMPACT_YIELD, or something similar.  I also need to double check that if I increase [IMPACT_STRAIN_AT_YIELD] further that the cutoff does not dip below momentum=IMPACT_YIELD/50000.

Edit:  With regard to the width of the sigmoidal transition, I will plot the difference between the momenta for deflections=0.2 and deflections=0.8 as a function of IMPACT_FRACTURE when I finish my new data set.  I didn't feel there was enough data in my set for yesterday to do this, as most of the curves are cut off by the 50000/[IMPACT_STRAIN_AT_YIELD] limit, leaving only 3 full curves which are all quite narrow.  I think I should have enough data tonight.  I would eventually like see if I can figure out what type of sigmoid (such as the logistic function, error function etc) fits to the data, but this is probably only of academic importance, unless I find that the shape is somehow more complicated that a sigmoid under some yet untested conditions.

Edit#2:  I had some more troubles with my runs yesterday and last night, so I don't have as much data as I wanted.  I spent the time I had to work on this figuring out what went wrong (it seems that either dwarf fortress itself or my scripts can't handle SHOOT_FORCE>1000), so I didn't have time to plot the results.  The data I do have suggests that IMPACT_YIELD does not change the slope of any deflection cutoff vs. IMPACT_FRACTURE or deflection cutoff vs. IMPACT_STRAIN_AT_YIELD curves, but can change their offsets.  Also, I found that at [IMPACT_STRAIN_AT_YIELD]=3760, the 100% deflection cutoff shifted down to Force=18, so momentum=IMPACT_YIELD/50000 is not in fact a hard lower limit for this.  Also, while it appears that momentum=50000/[IMPACT_STRAIN_AT_YIELD] is a good approximation for the cutoff at low [IMPACT_STRAIN_AT_YIELD], the results deviate significantly from this curve for [IMPACT_STRAIN_AT_YIELD]>1000.  Given how subtle this deviation is, I have wonder if Urist's finding that momentum=IMPACT_YIELD/50000 is exact for all IMPACT_YIELD=IMPACT_FRACTURE and all values of IMPACT_STRAIN_AT_YIELD.  This probably warrants more careful testing (eventually).

Right now I am running with contact area=4 (instead of 2), for iron bolts vs steel armor over a range of IMPACT_FRACTURE and IMPACT_STRAIN_AT_YIELD.  Do we know if any other bolt parameters (penetration depth, varying size without changing mass, etc) should matter?  I will also like to vary armor thickness and target creature size eventually.  It should also be interesting to measure several values of IMPACT_YIELD<IMPACT_FRACTURE holding IMPACT_FRACTURE constant to see the dependence of deflection cutoffs on IMPACT_YIELD.  I need more computers...:P
« Last Edit: November 07, 2012, 03:58:13 pm by Pirate Bob »
Logged
Pages: 1 ... 10 11 [12] 13 14 ... 19