Why is a Triangular Element Stiffer?

Somehow I never used triangular elements. Not that I knew why TRI are “bad”. I think I just didn’t like how they look (!). This saved me quite some trouble, proving that sometimes having luck (let’s call this a gut feeling shall we?) really helps! But you don’t have to rely on a gut feeling – let’s analyze the subject!

Triangular Finite Elements are stiffer in bending problems because they have constant strain across the element. This simply makes it impossible for an FE solver to calculate the bending response properly… unless a lot of TRI elements are used!

Let’s make a simple model and check what will happen – after all this is the best way to learn isn’t it?

Constant like a… triangle

Firstly we would have to dive deep into the mathematics of shape functions. And if you know me at least a bit you know that I won’t do that here. If you really want to you can torture yourself with any FEA book out there. But remember, you did it to yourself!

Instead, let me tell you this:

Table that has only 3 legs never wobble!

How clever that is huh! But you may ask: “Great, who cares?”. And the short answer is, your solver does!

As I wrote in another article about Nodes and Elements, Finite Elements don’t really know what displacement they have outside the nodes. So what can they do? Well, they do what every good student would… they interpolate!

Since the triangle has 3 nodes (another Captain Obvious quote!) you have 3 points in space… as with the table, this means that you get a “perfect plane” of deformation (I believe this is called the “displacement field”). In other words, if the displacements are linear (both in X and Y directions) you can perfectly predict them. The thing is, that strain is a derivative of deformation. Since deformations are described in a “linear” way, this means that the strain inside the element will be constant (derivative of a linear function is constant).

What does it practically mean… this:

This is a “normal” cantilever but notice how weird the actual strain (and stress) distribution is. This is because I used TRI3 elements, and on the entire area of the elements strain must be constant. The solver simply cannot calculate it any better… even if it wanted to! This, in turn, means that it creates some sort of a bizarre average.

The problem is, that strain changes along the height of the cantilever… but the TRI3 elements will only have constant strain inside their area… so they predict the outcomes very poorly:

Each TRI element “holds” constant strain… which makes it pretty difficult to “mimic” the real model behavior. Of course, unless there is a lot of those TRI elements!

The not so obvious!

I don’t know why, but when this is discussed usually focus is placed on deformations. I mean sure, TRI3 elements are stiffer, and they will underpredict in-plane deformation due to bending. But, as a structural engineer, I would say this is the least of the problems!

As you can see above, TRI3 elements will also underpredict strain… and that, in turn, will underpredict stress! And that is a much bigger issue I have with TRI3 elements!

The above chart can easily be for stress rather than strain, and it’s obvious that we are missing a lot of both!

I believe that the constant strain of TRI3 elements is a big problem. But I wouldn’t focus on underpredict deformations (even though this is an issue). For me, underpredicted stress is far worse!

One could say that “stress averaging” could be used. You know – I have values in some “spots” so let’s extrapolate those for better outcomes. This may work in some cases, but I always compare averaged and unaveraged outcomes anyway. I would not count on stress averaging to “magically fix stuff”. This is a dangerous assumption, especially when strain field is “weird” (like in most details in FEA models “weird”).

Be careful while meshing!

As you can see, meshing has several “traps” just waiting there for you! If you want to avoid them and become the meshing expert, definitely check by Meshing Online Course!

Get accurate FEA outcomes with CORRECT MESH

Let’s do a test!

I did some internet searching for this topic. I even found that someone claimed that TRI elements are the order of magnitude stiffer… I’m not sure what that person meant precisely but I’m a do-it-yourself guy. Instead of writing all the equations, let’s do a simple example and see for ourselves what is going on 🙂

The hero of this example:

Firstly, let’s solve the problem, just so we know what to expect. This is this kind ot “math” that is really needed in FEA (you know, as opposed to the “solver math”!). Firstly, let’s calculate the section properties:

Then, calculating stress and maximal deformations is quite easy (as long as you know how to google for the equation of deflection in such a cantilever that is… no I didn’t know it by heart :P):

Now, we are ready to do some FEA!

Important note!

While it’s super fun to estimate outcomes by hand, I don’t really expect “perfect fit” of FEA outcomes. Notice that I have a point support in my model that is bound to make some “stupid outcomes” nearby. I also introduced the bending moment as a pair of forces, which isn’t “perfect”.

Finally I know that this plate is too thick to be really consiedered a “plate”… but I modeled it in such a way anyway. It won’t cause much trouble in tis particular case!

The FEA with TRI3 elements!

I well remember my math teacher from uni. At one particular lecture, he attempted to solve the same integral using 2 different methods. After he finished the first method and got the outcome, he turned around and said: “I’m doing the riskiest thing any lecturer can do. I will attempt to solve the same problem in another way… if all goes well, I will even get the same result!”.

Yea… let’s do the FEA shall we : )

Firstly, I did a very coarse mesh, to show you where the problem is:

Well… this didn’t go as planned did it? Deformations are 15% too small (yesss! we managed to prove that TRI3 element is too stiff!), but the stress is almost 3 times too small. That is awkward, so let’s try again: this time with smaller elements!

Well, deformations are almost ideal… but the stress still lacks 25% of the correct value! No worries though, I’m not done yet! let’s do another one!

OK, deformations are spot on… but we still “miss” 17% of stress. This is starting to be a bit uncomfortable… but you know never give up and all that:

Well, we are getting there, but I want to move a bit faster. I decreased the mesh size to the point, where there were 10 TRI3 elements per height. This is when finally things start to work properly:

Finally, it worked!

So, let’s take a look at the outcomes in a more cohesive way:

As you can see TRI3 elements are capable of delivering correct outcomes. For deformations, it’s not even so bad in this case, but the correct stress value required a lot of those elements!

What to remember:

TRI3 elements in small numbers may underpredict deformations…

… but what is most important is, that you really need a lot of them to correctly predict stresses!

Share this post with your Friends!

Let’s do something more complex!

The above is a very simple model of a very simple example. Let’s try something more complex instead!

Below you will see a hopper analysis. The idea is, that you can fill the structure with gravel or whatever you have scattered around. This, in turn, causes pressures to the outside, and the hopper should be able to withstand those. As you will notice in a second one particular stiffener plays an important role in this… so obviously we need to pay attention to how we mesh it!

Firstly let’s take a look at how the failure looks like in model with a reasonable QUAD mesh and a TRI3 mesh. Note, that each QUAD element was “switched” for 2 TRI3 elements during remeshing (so there are twice as many TRI3 elements than QUADS). Computing in both cases was similar and took around 1200-1300s.

Model with QUAD elements:

Model with TRI3 elements:

They look awfully similar, right? So now let’s compare the actual outcomes, see as a stability path below:

As you can see the TRI elements predicted capacity around load multiplier of 8… while the actual capacity (predicted by QUADS) is around 5. That is a 60% overprediction of capacity… OUCH!

Summary

I hope that the above two examples showed something. And that is that TRI3 elements aren’t perfect. Sadly, in “small amounts” they can lead to drastically wrong outcomes. This is never good.

But does this mean that TRI3 elements suck? No, not really. They come with a nice advantage:

Meshing with TRI3 elements is fast – not a lot of work for you to do, but it may not be just a “one-click” as it is often presented. Still, it is less work than with QUAD elements!

Is this alone important enough factor to use TRI3 elements? I’m not sure. I guess this comes down to how long are you meshing your models, compared to how long they compute! TRI3 aren’t very effective in computing. Even though the same amount of elements computes much faster for TRI3 than QUAD4, but we should not compare it this way. To obtain “reasonable” results you will need to have far more TRI3 elements, and in such a case computing will take longer.

I usually run quite a few analysis on the same model (nonlinear this, nonlinear that, imperfections, different loads, etc.). This means that for me it makes sense to take a bit more time with QUAD meshing, as with each analysis I will get some of the time “back”. But if I would get a complex model and I knew I would have to do only one analysis overnight… meshing with very small TET3 elements may not be a bad call*.

*But I should note that in my career it was never “just one analysis”. Regardless of what you think at the beginning, there is always more to calculate than you initially assumed!

What’s next!

First of all, if you liked this article share it with your friends that might be interested in the topic. That would really help me out! Also, if you want to learn more about FEA, definitely sign up for a FREE FEA lesson from my online course below:

Get a free FEA lesson!

Common questions about triangular elements:

Are Triangular elements bad?

No, not really! I mean, if they were so super bad who would bother implementing them in the first place!

The problem with TRI3 elements is just that you need a lot of them, but at least you won’t put a lot of hours into meshing. This is an advantage.

The problems I’ve described above can also be solved by using “second order elements” like TRI6. They have 6 nodes in total (there are additional nodes in the middle of each element edge). Thos don’t need to have a constant strain and react far better to this issue.

Is it better to use QUAD elements rather than TRI?

This is an interesting question, and I would say yes!

But I think that my explanation may surprise you : )

As I wrote before QUAD elements require more work, but offer quicker computing for the same accuracy of outcomes. But you may not care about computing time all that much, and you may dislike meshing. In such a case TRI would be a perfect choice, but…

… people in FEA industry don’t like TRI elements!

You can provide a really good analysis, where mesh convergence was done and with a really good TRI mesh, but still people won’t be sure. I think that QUAD mesh just shows that you are a “professional” and that you “know what you are doing”. I was complimented several times on my QUAD meshes, and in some of the occasions, it was irrelevant!

Simply put QUAD elements make your analysis look pro… and this is a huge business advantage. It’s actually so big that I would say that it’s always worth to use QUADs : )

23 Comments

  1. Bala February 24, 2019 at 10:38 pm - Reply

    Thanks for the clear explanation about the tri elements.
    I have three questions:
    1) can we use just one quad element across the thickness to get the accurate result? Does quad element have any drawback apart from tedious meshing?

    2) does the quadratic Tri element solve the problem of shear locking completely? Just using one quadratic Tri element across thickness gives accurate result?

    3) if we do a mesh convergence analysis on the linear Tri elements and get convergence on the stress values, then can we use the tri mesh for accurate results?

    • Łukasz Skotny February 25, 2019 at 4:21 am - Reply

      Hey Bala! I’m really glad that you like the text : )

      For your questions:

      1. Nope, shear locking is still a problem. You need far fewer QUAD elements (compared to TRI) but still, I would go with a few across the thickness.

      2. TRI6 elements are definitely better. But using one across thickness – I wouldn’t do this personally. It’s hard to give specific answers to such things – the best way is to do a convergence study.

      3. If it is stress that you are after – sure, you just proved that it works right?

      All the best
      Ł

  2. Renganathan Sekar February 28, 2019 at 7:06 am - Reply

    Hi Łukasz,

    Firstly, thank you very much for sharing your wisdom and the experience that you have gained over the years in this platform. I appreciate it.

    Coming to this article’s topic, I also agree with the general claim that quadrilateral elements are better compared to triangular elements. My justification is this: Every thing is node based in FEA (I mean the degrees of freedom). In the case of triangular elements, there is a chance that the number of elements might become greater than the number of nodes. This means some degrees of freedom are actually “lost” in the discretization process. But in the case of quadrilateral elements, the number of nodes are always greater than the number of elements circumventing this issue.

    I am not as experienced as you and would like to know your opinion on this thought process.

    Regards,
    Renga

    • Łukasz Skotny February 28, 2019 at 7:17 am - Reply

      Hey Renga!

      Thanks for the kind words.

      To answer your question: I’m not sure. Without a doubt, the triangular elements have some issues. But I don’t think that “losing DOF” like you described is a major concern. Perhaps I’m too weak in FEA theory to be able to see the problem correctly… my reasoning would be:

      Everything has an infinite amount of DOF. While meshing you introduce some for nodes, but you also lose most of the DOF the system really has. This is why you need to refine the mesh in a sense – if you dumb down the model too much, it loses “connection to the reality”. This is an issue for sure. But I’m not sure about the “losing DOF” with triangular elements. I’ve never encountered a discussion about it before… perhaps the potential “loss” is insignificant compared to what you lose anyway?

      Let me know what do you think 🙂

      All the best
      Ł

  3. Niels March 4, 2019 at 6:30 pm - Reply

    Hey Łukasz,

    Interesting piece. If the quad element has four nodes I am assuming that it too has linear interpolation between nodes, which would make the strain constant for that element as well. Is the number of gauss points the same for both elements?

    Best,
    Niels

    • Łukasz Skotny March 4, 2019 at 8:48 pm - Reply

      Hey Niels,

      No, not really. The quad 4 element has “four legs”. This means that there is an additional term in the shape functions increasing their order a bit. They are not quadratic, but still, the strain field can be linear thanks to this additional term. There was something about integration that was funny in such a case, but sadly I can’t recall from the top of my head as mathematics isn’t really my strongest game 🙂

      As for gauss points, I think that a “typical” QUAD4 element had 1, but there was a “technical” way to increase those… never found it in Femap though… so it’s just something I found in one book or another. Don’t quote me on this, however : )

      All the best
      Ł

  4. Alexander Karachun March 5, 2019 at 11:22 am - Reply

    Hello Łukasz. Thanks for the article.
    Look like I am that guy who told that tetra elements can be order of magnitude stiffer.
    I make some test model “how not to do FEA”. I bend thin cantilever plate like 1x10x100 cm about weak axis. I use one linear tetra element per thickness and element aspect ratio was 1:10. I get displacement at the end of beam ~60 times smaller than predicted by theory or with quad or tet10. Distorted tetra elements dramatically overstiff model.

    • Łukasz Skotny March 5, 2019 at 11:46 am - Reply

      Hey Alexander!

      Great to have you here! Thank you for the comment. I don’t use tetra elements all that much, but this is a possibility for sure. But one linear tetra aspect ratio 1:10 per thickness is a pretty extreme thing for sure! In such a case I can believe that the outcomes are so drastic!

      All the best
      Ł

  5. Ivar KJELBERG March 6, 2019 at 2:20 pm - Reply

    Nice description.
    But for my preferred software Tool: COMSOL Multiphysics(r) with by default its 2nd order shape elements on the mesh items, then your case gives less than 0.1% difference in displacements, and hardly more in stress, so it depends really on software tool.

    I believe you are doing a lot of shell items, while I’m doing a lot of MEMS items with the need for very high resolutions, hence really I go for many elements, and then I have never really noticed any true difference between TRI and QUAD, and mostly TRI elements mesh far quicker.
    So different tools and different study cases have also it’s importance on mesh element choices.

    Finally it all boils down to :
    a) know your tool(s), and
    b) do your VV&Cs carefully, then
    c) document it all,
    and you will be on the safer side

    • Łukasz Skotny March 7, 2019 at 7:50 am - Reply

      Hey Ivar – thank you for commenting. Do I understand correctly that you work at Comsol? I never used the software, but you have a really nice webpage design!

      Having 2nd order by default may or may not be awesome. While for TRI elements this makes sense, it would bug me a lot with my shells as I usually use linear Quads. Each of his own I guess. Of course with Tri6 elements this wouldn’t be such a problem – no doubt!

      Yes, of course – if you have a lot of “super small” elements all of them will work really (and Tri does mesh quicker). Being typical me I would do convergence and check if perhaps QUAD elements couldn’t be much bigger than TRI and still produce a decent outcome to save on computing time (this is a big issue on what I do… analysis takes forever!).

      Thanks for dropping in Ivar!
      See you around!
      Ł

      • Ivar KJELBERG March 8, 2019 at 9:26 am - Reply

        Hi Łukasz

        (my previous comment seem to have vanished, so I start again 😉

        No, I’m NOT working for COMSOL !

        But, I am a very convinced user (and license paying) for this great software tool, and for more than 15 years now.

        I would rather qualify myself as a Systems Engineer, specialised in multiphysics modelling, and have spent 30+ years by http://www.csem.ch a RTO (Research and Technology Organisation) doing high-tech applied research and product developments for the local and more remote industry. Actually, I just retired in 2019.

        For me, COMSOL Multiphysics(r) FEM tool is essential in particular for MEMS and small scale objects simulations (but also very good at large scale). In the small scale, physics are very tightly or fully coupled.

        I.e. we modulate and control the temperature of laser chips in the MHz level (micro-second time scale) while for building or human sized objects one generally talk about thermal effect over hours or even days. This difference in scale implies fully coupled physics from thermal to structural to optical … effects, that cannot be simulated that easily with the old classical FEM tools. Just one of really many examples.

        I like your blog though highly instructive, even if when reproducing the bar model by default I had no true differences in TRI nor QUAD (nor 3D HEX) as I said by default COMSOL uses 2nd order shape functions on the default TRI elemental mesh items, but this we can adapt manually both mesh type and shape functions separately, there is no “black box” really in COMSOL, everything is simple equations or DOE’s.

        I’m not so sure the TRI “bug” that much though with modern tools, even for shells, to be checked 😉
        And if I remember right from old days, QUAD elements had often issues with “node-locking”, but that probably does NOT show up in thin shells with one element in the thickness, particularly not for transverse displacements. Each case is particular, so I come back to: do your VV&C carefully and check each case w.r.t. mesh elements, structure, sizes etc.

        And in multiphysics you must adapt and check your mesh w.r.t. ALL hysics, the dependent variable gradients differ mostly, hence might need fine size elements at different places, or you choose different mesh for different physics and map the effects back and forth, mostly nicely done, if required, within COMSOL

        Today with an overclocked GamerPC you do more than 1000xCray from the old days, if not to say if you have access to a true cluster (we don’t). So for many cases, adding a bit more mesh elements for the safety is not always an issue, but again it all depends on models, and you seem to do really huge shell element models, something I’m not that familiar with.

        Thanks for the chat,
        Sincerely
        Ivar

        • Łukasz Skotny March 8, 2019 at 1:00 pm - Reply

          Hey Ivar!
          Nach, your comment didn’t vanish. Sadly I get a lot of spam, and I need to manually approve every comment before they appear on the page – I was just busy in the morning to take a look if anything new is in the pipeline 🙂

          This is why all the comments appear with a delay (and I apologize for the inconvenience). BTW do you get some email or something when I reply to the comment? I’m not sure if this is set up by default (or even possible).

          Wow – you must have such a great experience – awesome stuff : )
          I assumed that you work in Comsol as people rarely add (r) to the company name when they reference it 😛

          Anyway, it seems Comsol has some cool tools – that is nice.

          If you have 2nd order TET elements by default you won’t get such a problem, just as you wrote.

          I never did multi-physics with FEA – this must be fun 🙂

          All the best
          Ł

  6. Ivar KJELBERG March 8, 2019 at 8:02 am - Reply

    Hello

    No, I’m not “at” COMSOL,

    I’m just a very convinced (paying licensed) user of COMSOL(for the last 15+ years).

    I have been working (just retired, partially this year), for 30+ years at a local RTO (Research and Technology Organisation) performing high-tech industrial applied research and new product developments: CSEM SA https://www.csem.ch .

    Indeed, COMSOL is a great-great software, particularly for us mixing many physics. And when we move into the “small scale” it’s a must (useful too for the larger scale though) as physics is coupled far closer when we move down in scale. I.e. we modulate laser chips thermally, by controlling their temperature in the MHz bandwidth (microsecond time scale), while in the macro scale (buildings or other “human” objects) nobody thinks about thermal effects for anything quicker than hours, say days. And the latter allows to treat each “physics” separately, while in the micro-scale we must go “fully coupled” else our models are really wrong.

    Now if I remember right, far back, when I used the “older” traditional FEM tools, there was also sometimes a “node locking” issue with QUAD mesh, that did not show up in TRI.
    So my conclusions remains for me: select the best items (and software) depending on your VVC analysis.
    But your demo above is convincing, it was only when I did the same with my tool I got different results.

    Thanks for your nice blogs and useful exchanges
    Ivar

  7. Samuel Eliasson March 12, 2019 at 5:37 pm - Reply

    Hi Lukasz,

    Thank’s for a great post! Just started to follow the blog, which I intend to continue with. To give another answer to the question from Niels.

    Is it not so that the simplest function that explains the deflection field (that fulfill the completeness requirement) for triangular element is:

    u = c1 + c2x + c3 y; => the derivatives are constants

    for a quadratic (rectangular melosh) element the same equivalent function is

    u = c1 + c2x + c3 y + c4xy => which could give a linear derivative

    If you where to remove the final xy-term, the expression would always result in a plane, making it impossible to describe the field from 4 arbitrary node values (reffering to your 3-point plane metaphor)

    Thanks again!

    • Łukasz Skotny March 12, 2019 at 7:45 pm - Reply

      A solid point Samuel! Thanks for bringing that up.

      I knew that there is the xy term, but I never “connected” it with the fact that without it you have a plane and 4 legs! Nice!

      Once more – thank you for dropping in!
      Ł

  8. jeremy theler March 12, 2019 at 9:08 pm - Reply

    Nice post. Bending problems should not use first-order elements due to the shear locking effect you mentioned. Anyway, remember that any comparison between two different formulations should be fair ans keep some indicator of the computational effort like the CPU time (and probably memory) constant between them. Otherwise one would say “method x is better than y” when x takes one week and y one second to compute. I tried to compare the deflection of a cantilever vs number of nodes for tetrahedra and hexahedra both 1st and 2nd order here https://seamplex.com/fino/#cantilever-beam-with-first-second-order-elements

    • Łukasz Skotny March 14, 2019 at 9:45 pm - Reply

      Hey!

      Sure, the time part is an important thing. When I did case studies for my online course I actually measured times and made charts and all. Here I just wanted to point out a few facts 🙂
      But definitely computing time is of the essence – a very good point!
      Ł

  9. Austine Adah August 18, 2019 at 9:33 am - Reply

    Really nice tutorials.im taking a course in FEA and from most of the examples I see it’s simple 1D examples that are everywhere down to solving the equations.although they it’s even lengthy and everyone is saying the triangular element and 2D would take more time and al I der is code.can you do an example with trisngular element mesh by hand?it would really help my understanding and not just reading codes.thanks

    • Łukasz Skotny August 18, 2019 at 10:43 am - Reply

      Hey Austine!

      First of all, I’m really glad that you like the post 🙂

      As for doing the hand calculation tutorial for TRI elements… I don’t think I’m now up for the challenge. I hate such things, and I did the beam one just a few months back. And it’s true that the TRI elements would take much more effort, especially since I would have to first learn how to do it!

      But you are not the only person asking about it, and I do keep that in mind. I have a lot on my blogging plate right now, but when I finish my major 2nd project (it’s a secret yet!) I should find time to pull this off 😉

      All the best!
      Ł

  10. kavi September 17, 2019 at 6:49 am - Reply

    sir,
    what happens if we model with single row of quad elements along the thickness?
    what is mean by shear locking?
    will there be problem in strain energy distribution ?
    Is it the reason we go for mid surface meshing for leser thickness problems ?
    Thanks in advance

    • Łukasz Skotny September 17, 2019 at 9:34 am - Reply

      Kavi,

      Just as I described to you in the email, QUAD4 elements poorly react to “bending” deformation. They can’t “bend” their edges (to fit into the “arc”) since the edges need to be linear. This means that in essence, you get shear rather than normal stress if you have one QUAD4 element “in bending”. This is called shear locking. This will mean that the element will behave much stiffer than it should, falsifying outcomes. To avoid this it is best to use several elements in the “bending direction” (i.e. 5 elements on the width of the stiffener).

      Also, if you have “plate” models it’s always reasonable to use 2D mesh rather than 3D mesh – the 3D mesh gives no real advantage and requires far more elements. Of course, there are special cases where you may need to have 3D mesh in some places (fatigue etc.) but as a general rule, it is better to use 2D mesh for modeling plates/shells.

      All the best
      Ł

  11. Rohit September 17, 2019 at 11:05 am - Reply

    Hey Łukasz,

    Thanks a lot for this explanation. I have been finding answer to this question for a while but finally, this article sounds satisfactory.
    I am working on a problem, where I have to constrain the boundary nodes at zero displacements and some deflection at one of the center nodes in the Z-axis(perpendicular to mesh).
    1. Could you please suggest to me what element and what theory should I use to solve this problem for accurate results?
    2. Yes, I understand the triangle elements are not suitable, but can Non-Linear FEA with TRI elements be used for the solution?. (I am not much aware of what Non-Linear FEA is, but just wanted to confirm before going ahead with this one)

    Thanks,
    Rohit

    • Łukasz Skotny September 17, 2019 at 11:58 am - Reply

      Hey Rohit!

      I’m glad that you like the post 🙂

      Do I understand correctly that your model is a plate supported on edges and loaded in the middle in the “normal-to-the-plate” direction? If that is the tace TRI mesh won’t be as tragic as you may think, just make a mesh convergence study and you should be fine. But in such model it should be easy to make a QUAD mesh, and I think it would be a better call (let’s face it, TRI mesh isn’t the default choice in literally any situation…).

      As for if you need nonlinear FEA it depends on the model. The choice of elements always play a role (linear/nonlinear approach alike) but as I wrote before if you don’t have any other choice you should be on with TRI. Just be aware that I don’t see your models, so my advice may be way off if I misunderstood something.

      All the best
      Ł

Leave A Comment

Do NOT follow this link or you will be banned from the site!