Archive for the ‘Tips & Tricks’ Category

Material Properties in Analysis

Wednesday, October 12th, 2011

Have you ever considered the importance of Material Properties to your Finite Element solution? What about the accuracy of the data provided by material vendors? As Designers and Engineers, we are used to dealing with tolerances. We usually provide default tolerances on our drawing title block. We may add tolerances to some of the model dimensions. For the really bold and daring – or wise and experienced – you might even add Geometric Dimensioning and Tolerancing to your designs. Do you ever see tolerances on material property data sheets? In my experience, the answer is somewhere between rarely and never, with never in the lead.

Let’s consider a material from the Simulation material database. Alloy Steel has the following properties (numbers rounded):
Young’s Modulus – 30 x 10^6 psi; Poisson’s Ratio – 0.28; Mass Density – 0.278 lb / in^3; Yield Strength – 90 ksi

What will happen to the Finite Element solution if one material property varies? I’m going to start with a simple model in tension and apply Alloy Steel as the material using the default property values. Then I will change Poisson’s Ratio and re-run the study several times in order to compare the displacement and stress results. Recall that Poisson’s Ratio is a measure of the lateral strain to longitudinal strain for a material, or E_lat / E_long (pretend the E’s are Greek epsilon’s). Poisson’s Ratio is relevant to the linear elastic portion of the stress-strain curve and is unitless. One thing to note, if you do not define Poisson’s Ratio for a material, Simulation will assume that Poisson’s Ratio is equal to zero. There is a pop-up warning, too, just in case you forget to enter a value. Note that if you do not have Poisson’s Ratio for a material, 0.3 is a good initial estimate. But definitely exercise all of your options to find out the correct value for your design materials.

2011-1012 Material Properties Blog-OctoberBlog-Results-Displacement1.analysis

For a ½” square bar, 4” long, I have fixed one end and applied a 10ksi force at the opposite end, putting the bar in tension. After running the analysis with default material properties, I set a baseline with Trend Tracker. After creating several custom Alloy Steel materials, varying Poisson’s Ratio from 0.0 to 0.5, I re-run the analysis with each custom material. Trend Tracker will record the details for maximum displacement and stress in the model.

2011-1012 Excel Chart

As you can see from the chart, the Von Mises Stress results vary approximately 16 ksi and the displacement results vary 0.00006 inches. As percentages, this is a 28% variation in stress and a 1.2% variation in displacement. I don’t think most of us would be concerned with 1.2% variation in our models, but 28% is an entirely different matter! I did, however, choose the model with this purpose in mind. The high stresses are at the fixed end at the sharp corner – something most Engineers would avoid in their designs. Now that a 28% variation has your attention, let’s look at a more practical model.

2011-1012-b Material Properties Blog-OctoberBlog-2-Results-Displacement1.analysis

This is a simple bracket, a modification of a part in the SolidWorks Essentials manual. I’ve applied a fixed boundary condition to the bolt holes in the base and a normal force to the counter bore face. I’ve repeated the rest of the analysis, just like the square tensile bar, including using Trend Tracker and varying Poisson’s ration from 0 to 0.5.

2011-1012-b Excel Chart

For this “practical” model, the Von Mises Stress results vary approximately 4,300 psi and the displacement results vary 0.0006 inches. The percent variation in this model is 5.8% for stress and 6.6% for displacement. If you’re designing for a large Factor of Safety, less than 6% variation in your stress results are not significant. Using SolidWorks Simulation, however, most of us are designing for the lowest acceptable Factor of Safety in order to save the maximum amount of money possible on material costs. In this scenario, a 6% variation can be significant!

So the next time you’re analyzing that awesome design, consider reviewing the sensitivity of your analysis by varying a material property or two. Now you’re armed with powerful information you can share in your next design review. Material property variations from your vendors are no longer an issue! Now go make your products better with SolidWorks Simulation!

Bill Reuss

Bill Reuss, CSWE, CSWST, CSPST
Application Support Engineer
3DVision Technologies

2012: Mouse Gestures that Save Time

Wednesday, October 5th, 2011

I must confess, ever since mouse gestures were introduced a couple of years ago, I haven’t been using them.  The truth is that I’m too hooked on keyboard shortcuts.  Why try to do everything with your right hand when your right (on the mouse) and left hand (on the keyboard) can work together in perfect harmony?  Not only that, but you also had to memorize exactly where each mouse gesture command resided in each of the modeling states (Part, Assembly, and Drawing).  Much too hard for my scrambled mind to manage.

Well, SolidWorks 2012 SP0 (which was officially released earlier this week) has introduced an enhancement that will probably fly under most peoples’ radars, but it will finally get me using mouse gestures on a daily, hourly, minutely, and even secondly basis.  The enhancement is simple – you can now assign the ‘OK’ and ‘Cancel’ commands as mouse gestures (you also now have the ability to assign custom macros to gestures).  The ‘OK’ command as a mouse gestures saves me from stumbling my left hand all the way across my keyboard to the ‘Enter’ key which may or may not have been recognized as the ‘OK’ shortcut.

This enhancement is too great to be overlooked.  If mouse gestures were too much trouble for you to use in the past, try giving my ultra-simplistic mouse gesture mapping a try in 2012.

mouse_gestures

Jordan Tadic

Jordan Tadic

Application Engineer, CSWE

3DVision Technologies

follow me @TadicWorks

A Few Drawing Tips

Monday, September 26th, 2011

Here are a few drawing tips that might help you out.

Save a rotated 3D view

  • When you go to View>Modify>3D Drawing View, you can choose any view and rotate it any direction.  When you choose a view that you like, it will stay like that.  That way you can get a great view on the drawing with a short amount of time.

Combine notes

  • If you have multiple notes on your drawing but you want to combine them, before you would need to copy and paste the text.  All you really need to do is just drag and drop one note to another.  They get combined.  If the main note is numerically indented, when you drop the other note on it, it will follow the same order.

Edit multiple dimensions at once

  • If you select a bunch of dimensions, you can edit them all at once.  You can add tolerance information, text, precision, etc.

I hope these tips help keep you productive.  If you have any questions about these, please contact 3DVision.

Josh Spencer

Josh Spencer
Application Engineer
3DVision Technologies

Solver Selection – Does It Matter?

Wednesday, September 14th, 2011

Choices. Everyone wants choices. We make simple choices like ‘paper or plastic’. Or one of my favorites, ‘domestic or import’! In SolidWorks we can be faced with decisions like ‘assembly or multi-body’! While these are simple examples, what do you decide when you’re faced with the decision ‘FFEPlus or Direct Sparse’? Which solver should you select? While this question does not have an easy answer, there are some guidelines you can follow to help in your selection. Understanding the two solvers is the first step in making a smart decision about which to use.

Before discussing the solvers, let’s recall the fundamental equation being solved by Finite Element Analysis, which is the resultant forces acting on a body are equal to the product of the stiffness and resultant displacement of the body. We express this with the following matrix equation: [F] = [K] * [U]. Regardless of the solver selected, this equation has to be calculated such that equality exists.

The FFEPlus solver is an iterative solver. After you have the CAD model set up with the appropriate boundary conditions, the FFEPlus solver makes an educated guess about the deformation, [U], of the model. Then it evaluates the matrix equations to see how good the guess was, and adjusts the deformation accordingly, depending upon the error in the calculation. This process repeats until the calculation balances.

The Direct Sparse solver is just that – direct. This solver will create the entire matrices used for the numerical FEA solution. This requires generating the stiffness matrix, [K], as well as the inverse of the stiffness matrix, [K]-1. Once calculated, Direct Sparse solver has to compute a simple multiplication problem, written out as: [K]-1 * [F] = [K]-1 * [K] * [U]. Computing the inverse of the stiffness matrix is resource (memory) intensive.

Now that you know what the solvers are, let’s discuss and compare the two solvers, at least as far as how they may relate to your Finite Element Model. If your problem has 25,000 degrees of freedom (DoF) or less, the Direct Sparse and FFEPlus solvers are approximately equal in terms of memory usage and solution time. For problems that approach 300,000 DoF, the Direct Sparse solver usually runs entirely in your system’s RAM, which provides for a “fast” solution. When you exceed 300,000 DoF, the FFEPlus solver is more efficient than the Direct Sparse solver in not requiring as much of your system’s RAM. There are times, however, regardless of the problem size that you may need to use one solver over another. In assemblies with a lot of contacts, assemblies with greatly varying material stiffness between components and contacts with friction, the Direct Sparse solver is usually a better choice. In frequency studies with Rigid Body Motion and problems exceeding 300,000 DOF, the FFEPlus solver is usually the appropriate choice.

What do you do now? You know what each solver is doing at the core. You have a general understanding of what each solver is good at. How do you decide? It’s actually a very simple answer – let Simulation decide for you! In SolidWorks Simulation, there is a system option to let the program decide. To access this, from your pull-down menus, select “Simulation… Options…”, then change to the “Default Options” tab and click on the line for “Results”. Then look at the section for ‘Default Solver’ – we have ‘Automatic’, ‘Direct Sparse’ and ‘FFEPlus’. Set your Simulation system options to ‘Automatic’, and let SolidWorks Simulation decide which solver is the most appropriate for your Finite Element Model. With that decision made for you, you now have time to make your products better with SolidWorks Simulation!

2011-0913 SimSolverOptions

Bill Reuss

Bill Reuss, CSWE, CSWST, CSPST
Application Support Engineer
3DVision Technologies

Turning Parts into Assemblies, Assemblies into Parts (Part 2 & 3)

Friday, September 9th, 2011

This is a series of blogs from me about turning Parts into Assemblies, and Assemblies into Parts in SolidWorks.

To see Part 1, go here: http://www.3dvision.com/wordpress/index.php/2011/08/15/turning-parts-into-assemblies-assemblies-into-parts-part-1/

This blog (Part 2 & 3) will show you TWO ways to turn an ASSEMBLY INTO A PART.

Why would you ever want to do this ?
How about if you download an assembly from the internet or your customer or colleague gives you an assembly and all you care about having is a PART file. The PART file will be smaller in file size/details and will perform better.
Perhaps you want to send your assembly to someone else but first want to “lock it down” so there will be no feature tree so they can’t change it.
Maybe you don’t want to accidentally screw up some mates in the assembly, so making it a part would accomplish this too.
I’m sure there are other great reasons…

Here is how you do it.

1st way (NON-ASSOCIATIVE):
Simple as can be, but a lot of people would never even dream of trying it…
Open your assembly, do a SAVE AS, and change the “Save As Type” drop down box to PART.
There are some options that show up then asking what exactly you would like to be saved.
Just the Exterior Faces ? The Exterior Components ? Or All Components ?
Done, easy, finished…
This method is a “one shot deal” though. It is NON-ASSOCIATIVE.
i.e. the part WON’T UPDATE if the assembly is changed.

2nd way (ASSOCIATIVE):
If you want your resulting part to actually UPDATE if you ever make changes to the Assembly it is coming from, this is the method you need to use.
The command you will use is INSERT–FEATURES–JOIN.
However, when you are in an Assembly file you can not do an INSERT–FEATURES– anything…
So the first step is to make a NEW empty part IN the assembly.
INSERT–COMPONENT–NEW PART. Select a face or plane in the assembly that you want to be the FRONT face of the new part (doesn’t really matter for what we are doing). A “side-effect” of the Insert New Part command is that it puts you into a SKETCH on that face you selected. Usually this is great, but in this case we don’t need it, so just EXIT THE SKETCH.
Now you are in EDIT PART mode in the new part, and you CAN go to INSERT–FEATURES–JOIN.
Select the parts you would like to join together into your PART file (don’t have to select them all) and hit OK.
Now if you SAVE that new part, you will have what you wanted, an ASSEMBLY TURNED INTO A PART !

In that Part file there is an external reference (the “->” symbol in the tree) showing you that any changes in the Assembly WILL propagate down to the PART.

Furthermore, if you don’t want the resulting part to be a MULTI-BODY part, you could use our boolean COMBINE command and the ADD option.

Hope you can find some uses for this !
Let us know !

Stay tuned for Part 4 !!

Randy Simmons

Randy Simmons
Application Engineer, CSWP
3DVision Technologies

Model Aircraft Control Surface Spacing and SolidWorks Flow Simulation

Saturday, August 27th, 2011

June 2011 AMA (Academy of Model Aeronautics) Model Aviation magazine had an interesting article Titled “Two of the Big Five model misadjustments” written by Dean Pappas. The two misadjustments were Hinge Gap, and Lateral Balance.

The article caught my attention specifically due to the “flow” diagrams drawn in the article explaining airflow over the wing section and aileron control surface. In the below diagram, taken from the article, Dean explains three cases of air flow relative to a control surface.

  1. Clean airflow at the neutral control surface desired for level flight.
  2. When up or down direction is applied to the control surface the air opposite the control surface direction of travel redirects the flow to reattach. This case shows a tight fit between control surface and main structure.
  3. Hinge gaps allow high-pressure air to leak from one side to the other. This weakens airflow on top of control surface partially destroying the bottom airflows ability to rejoin it. The result is poor control surface response during slow speeds.
AMA Article Diagram

AMA Article Diagram

According to the article ”The high pressure on top, as shown would leak through, given a chance. That chance would be a gap in the elevator and control surface. The result is a flat sheet of air that squirts through the gap and distorts the outside of the hinge line. This reduces the effectiveness of the elevator and creates extra drag.”

This section piqued my interest as the hinge gap shown is very large, probably for demonstration purposes. Being an avid RC aircraft modeler I suspected that the small gaps I have in my personal aircraft’s control surfaces may not cause this affect. My hypothesis is that a very large unrealistic gap will cause this affect however using standard hinge techniques this affect will not be as dramatic as the article states. According to the article large hinge gaps can be sealed with strips of MonoKote covering resolving the problem. MonoKote is a heat shrink Mylar covering that is a standard in RC Aircraft construction.

This blogs purpose is to investigate the hinge gap spacing required to cause an airflow disturbance and air leak through the gap area.

Before we get into the model specifics let’s talk a little about aircraft wing terminology. Below is a diagram explaining common wing dimensions and terminology. The chord length is the distance from the leading edge of the wing or elevator to the trailing edge. The model used in this Flow Analysis is a 5.5″ main wing chord. 0.5″ of the chord is the control surface . The airfoil is symmetrical so the upper and lower camber are equal. The model consists of an extruded wing section with one hinge placed in the middle of the wing.

Airfoil.svg

Three hinge types are standard in the RC modeling community. All hinges are typically spaced evenly across the control surface.

  • Standard plastic barrel hinge comprised of two halves held together with a pin. The hinge is typically screwed or glued into place with the barrel tight against both mating sections. Hinges are typically 0.25″-0.5″ wide by 0.5-1″ total length. The barrel typically ranges from 0.0625″-0.125″ in diameter.
  • CA hinges are flat woven wicking material that is inserted into a slot cut in the components. No or little gap is present with this style hinge. CA or Cyanoacrylate glue is used to wick through the hinge and bond with the hinged components.
  • MonoKote hinges are seldom used in modeling except for small aircraft. The MonoKote hinge is typically a strip of MonoKote that is applied to the top and bottom of the hinge area.

SolidWorks Flow simulation was used to investigate the control surface configurations of four models.

  1. A base line neutral control surface position using a no gap CA hinge Type.
  2. Upward deflected control surface using a no gap CA hinge type.
  3. Upward deflected control surface using a Standard plastic hinge with an 0.0625″ barrel diameter.
  4. Upward deflected control surface using a CA Hinge and gap of 0.25″

All configurations have a 10 ft/second flow rate and a 0 degree angle of attack. The flow analysis was an external flow problem. A localized mesh control was used for each run to capture refined accurate results across the model boundary. All other default conditions were used for the flow setup.

Mesh

Note All plots show a Pressure cut plot and Velocity Flow Trajectories.

Results:

  • The base line model showed a symmetrical pressure on either side of the wing at 14.6 psi and a hinge crossing velocity of 16.45 ft/sec. This is expected results for the area section, hinge, and aileron placement.

Neutral Velocity and Pressure

  • Flow Run Two shows a higher pressure on top of the aileron of 14.696 psi and a lower pressure on the bottom of 14.694 psi. The flow velocity across the top of the control surface drops to 5.9 ft/sec while the bottom speeds up to 11.2 ft/sec. As the article states the air “bends” to re attach to the flow at the trailing edge. This results in a turbulence on the bottom of the control surface aiding in the force of the air on the top of the control surface to push the trailing edge down.

Aileron Up CA Hinge

YouTube Preview Image
  • Flow Run Three demonstrates the 0.0625″ barrel hinge gap and the resulting air flow. The run does show airflow across the gap boundary, however probing the area the velocity in this gap is zero. The flow does extend past the wing trailing edge longer than the non-gap position, however the flow does fully rejoin. The same recirculation under the control surface is seen . The pressure on the end of control surface is however higher at 14.699 psi and lower on the bottom at 14.692 psi. The results show negligible flow through the gap and under most circumstances(slow flight) should not cause loss of control due to bleed through.

Aileron Up 00625 Gap

YouTube Preview Image
  • Run Four had the largest gap similar to the gap in the article’s diagram. The flow results show airflow across the gap boundary and a velocity of the airflow in the gap of 3 ft/sec. The flow does extend past the wing trailing edge longer than the non-gap position and does not rejoin. The recirculation does cause a pressure equalization under and over the control surface. Loss of control surface effectiveness would occur in this scenario.

Aileron Up 025 Hinge Gap

YouTube Preview Image

Conclusions: The article is correct to a point. The gap shown in his diagram would cause a control surface loss of effectiveness, however the gap is way too large to be considered realistic. Most experienced modelers know common practice is to get as tight of a fit between control surface and structure be it a wing, elevator, or rudder. A large gap is not only detrimental but is also unsightly and most modelers avoid them for the aesthetic reasons alone. If a modeler sticks to the new CA hinge or follows correct installation practice for a plastic hinge they will be alright in their flying endeavors.

Robert Warren

Robert Warren Application Support Engineer CSWP / CSWST / CSWI / CSPS 3DVision Technologies

Update Properties from BOM

Monday, August 22nd, 2011

Here’s a tip that you might not know about.  You can update component/sub-assembly properties from a Bill of Materials.  Why would you want to do this?  Well in case you forgot to add the property when you created the component, maybe you didn’t know what it was at that time, or you see you filled out the wrong information.  Now you can add or change the property without opening it up.

All you need to do is double click in the cell of the BOM and then you will get a message about keeping or breaking the link.

Link

You will have to choose “Keep Link” to update the property.  Now whatever you type in the cell will show up in the component’s properties.

Josh Spencer

Josh Spencer
Application Engineer
3DVision Technologies

eDrawings App on an iPad/Android???

Wednesday, August 17th, 2011

Let’s face it, the world is fast paced and having data at our fingertips can be the lifeblood of our businesses. Enter the Tablet! Often times heavy computing is not necessary when we are “On-The-Go.” We can whip out an iPad or Android Tablet and effectively communicate business needs to our customers, and we don’t have to wait for the tablet to boot up, login, prepare our desktop, connect to our servers, yada-yada. The information is literally a swipe or a tap away.

eDrawings is a very effective product from Dassault Systemes SolidWorks that allows you to communicate your designs with customers, without having to transfer heavy files via email or even FTP sites. So, it seems perfectly suited to have an eDrawings App for tablets.

Ever since the first iPad hit the market I have been getting calls requesting that Dassault Systemes SolidWorks comes out with an eDrawings app for the iPad. So far, there have been no official announcements that this is being developed. However, this does not mean that all hope is lost. There are other Apps out there that will allow you to leverage your iPad/Android Tablet into an eDrawings wielding powerhouse. Citrix Receiver is one such App. The way it works is simple, you install eDrawings on your server at work, and then through Citrix Receiver you choose eDrawings from your “company catalog” and boom you are using eDrawings over the air on your tablet! Technology is AWESOME!!!

To learn more about Citrix Receiver you can visit the following link.
http://www.citrix.com/English/ps2/products/product.asp?contentID=1689163
eDrawings Tablet

Reuben Felsheim

Reuben Felsheim
Application Support Engineer
3DVision Technologies

Turning Parts into Assemblies, Assemblies into Parts (Part 1)

Monday, August 15th, 2011

This next series of blogs from me will be about turning Parts into Assemblies and Assemblies into Parts in SolidWokrs.

In this (Part 1) of the series, we will look at TURNING A PART INTO AN ASSEMBLY.

There are many reasons you might want to do this, the MAIN reason being something called the “Master Model” approach to modeling. Many consumer product designers do this. It is much easier to build a cell phone, or remote control, etc., as a PART file to get your form/fit/function looking good and THEN worry about “breaking up” the part into the necessary pieces to actually make the thing ! (i.e. top half, bottom half, battery door, buttons, display screen, etc.)
The great thing about this Master Model approach is then you have an ASSEMBLY (and all its individual parts) that live and breathe off of the original PART file you created. If you ever need to make form/fit/function changes you just edit the PART file and all the individual parts and the assembly would update too !!

Here’s how you do it: (there are other ways but this is the best)

Take your part file and create a SKETCH, a PLANE, or a SURFACE body that you want to use to SPLIT your part up. (can use multiple combinations of sketches, planes, and surfaces too)
Then use the INSERT–FEATURES–SPLIT command.
Select your Sketch/Plane/Surface as the “trimming tool” and hit CUT PART.
If you float around on the graphics screen you get to see what the result of the cut is going to do for you.
In the property manager under “Resulting Bodies” you will also see listed all the resulting solids that you will get from the split.
Now the important part…
If you JUST put a check mark in the box under the scissors icon, and hit OK on the command, you will just end up with a MULTI-BODY part.
If you DOUBLE CLICK in the “file name” box next to the check mark (for each body) and give it a name and location where you would like to SAVE, it will actually CREATE new parts on your hard drive representing the resultant solids !
A nice option down at the bottom of the property manager is to “Copy custom properties” from the master part to the individual parts (materials, vendor, etc.) if you would like.
Go ahead and hit OK on the command now…

In your MASTER file you DO now have a multi-body part.
BUT on your hard drive will be actual PART files from the SPLIT !
AND if you look in those part files there is a EXTERNAL REFERENCE (the “->” symbol) directly linking it back to your master model !
I.E. any changes in the master will update the parts…

Now, you could MANUALLY go make an ASSEMBLY from those individual parts, but who wants to do that !?
Look in the Feature Manager Tree of the master part. There is a SPLIT feature.
Right click on the SPLIT feature and choose CREATE ASSEMBLY.
It will go out and gather up ALL the parts that were created from the SPLIT feature and put them into an assembly with fixed relations so they won’t move ! Awesome !
(of course if you wanted to be able to move the parts in the assembly you can “float” a part and mate it into place the way you want it)

There you GO ! Turning a PART into an ASSEMBLY. WITH full associativity !

The OTHER great thing about the SPLIT feature showing up in the Feature Manager Tree of the master part is that any features you insert BEFORE the split WILL propagate down to the piece parts and to the assembly, and any thing you do AFTER the split feature will NOT.

This is a SUPER useful tool that A LOT of people can use even if you aren’t designing remote controls or cell phones. Let us know what YOU can think to use it for !

Stay tuned for Part 2 where we will show you how to turn an ASSEMBLY into a PART…

Randy Simmons

Randy Simmons
Application Engineer, CSWP
3DVision Technologies

Is it a Part… or a Toolbox Part?

Wednesday, August 10th, 2011

I was recently talking with one of our customer’s that designs fixtures and related equipment.  Fortunately, this customer is using SolidWorks Professional and has SolidWorks Toolbox for fasteners and hardware to make his life easier!  His dilemma was he no longer wanted to have the Toolbox components of his assembly identified as Toolbox components.  He wanted a group of fasteners that originated as Toolbox parts to be treated as normal parts.

What I found interesting is that a Toolbox part is identified by an internal flag in the file that makes it just that – a Toolbox part.  Even better is that the flag can be turned off!  This is accomplished by using a utility called ‘Set Document Property’.  You can find this tool in your SolidWorks installation folder under the “\Toolbox\data utilities” subfolder – named “sldsetdocprop.exe”.  Browse to this folder location, double-click on the file to run it. Once the ‘Set Document Property’ utility is running, the process is simple.

1.  The Toolbox file(s) should be saved in a location outside of the Toolbox folder on your hard drive. Then close your assembly and related SolidWorks part files. This is to allow the utility write access to the file(s).
2.  Click on the ‘Add Files…’ button and browse to the location of the Toolbox part(s).
3.  Change the ‘Property State: Yes’ radio button to ‘Property state: No’.
4.  Click on ‘Update Status’.
5.  Click ‘Close’.

Now when you re-open the assembly, your Toolbox icon in the Assembly Feature Tree has changed to a normal part icon.  Also, after a bit more research, I discovered that turning off this flag is one method of allowing a PDM system, like WorkGroup PDM, to check in your part into the vault when the WPDM options are set to not check in Toolbox parts.
2011-0808 Set Document Property

Bill Reuss

Bill Reuss, CSWE, CSWST, CSPST
Application Support Engineer
3DVision Technologies

WordPress SEO fine-tune by Meta SEO Pack from Poradnik Webmastera