An eight-baled axial fan is setup for modal analysis. Mesh is generated successfully with 374K cells. Analysis completed w/o any error but there is no modal frequencies in the solution. Can someone explain what’s the problem.
Using Mecway 18 windows 10 version with 16GB ram. Appreciate your help
Comments
Or you can use cyclic symmetry to reduce the node count to 1/8.
i also have this issue. however, it's not limited to modal analysis. i also get it with nonlinear static using ccx and the pardiso solver. i have 16gb of memory and can solve between 1-2 million nodes, before going out of core. i try to keep the models less than 1 million nodes though. i never could figure out why this happens. i'm using the windows executable from the ccx website and the intel oneapi.
i get the feeling going out of core has something to do with it. so i just try to avoid that and don't have any issues then.
anthony
I need to run a modal analysis of a non equally spaced axial fan to determine the frequencies and will have huge number of elements/nodes. On March 14, you replied to this thread and suggested that I download the CCX with PadtiX or Pardiso p, or compile using source code…never heard of such things before. Can you elaborate and give me guidance on how to do it? I can not use cyclic symmetry in my model to create a blade sector. I appreciate it.
I run Mecway with the Intel Pardiso solver. You just download the ccx files from their website. Download the Intel oneAPI (which is free). CCX now uses Pastix by default. So there is nothing you need to do for that. However, if you insert a command you can have it run PARDISO, which is what I do. Of course, you have to have the Intel oneAPI installed. There are threads that talk about what files to copy over and what commands to use to call PARDISO. I don't remember it all off hand. I attached a Mecway file that has the commands to force PARDISO. I prefer that solver, out of the other options. However, like I said, it's limited compared to what you can do with ANSYS and others.
You can import the attached file into any Mecway file that you have and it will force PARDISO as the solver. If you don't do that, it will run Pastix. From what I have read on various forums, Pastix would be good if you are solving on a GPU. However, that's not something I do. If you have an 8 core CPU with AVX-512 extensions, then PARDISO is a good choice.
The easiest thing to do is copy the needed files into the same folder as the ccx_dynamic.exe file. In the Mecway options you set the solver to that folder. You have to experiment a little on which files are needed. Since my CPU supports AVX-512 I get a little speedup from that and don't need the AVX2 files. You may need the AVX2 files and not the AVX-512. I attached pictures of the files.
There is one needed file that you can only get by installing one of the Intel Compilers. If you don't actually need any given compiler just pic C. I use Intel Fortran anyway, so it works out great for me.
So besides my 8 core CPU with AVX512 extensions. I would also recommend a large amount of memory and the fastest SSD available. My SSD is slow and going out of core is very slow and hasn't seemed to work either.
Thank you for the info. I will follow your recommendations and most probably will have questions for you, if you don’t mind. Some of the words you mentioned are new to me. I’m not as expert as you are so we will see.
one last thing that i forgot. you want to make sure you setup certain windows system environment variables. i attached a picture of my settings.
the pastix mixed precision is an important one. setting it to 0 turns off their novel feature that also causes problems. the others you will want to set are the number of threads options. there is one for the intel mkl and another more general one. i see there is one for the intel mkl blas. however, i have never experimented with that. it's at the default. i have four physical cores and four hyperthreading cores. i generally never use the hyperthreading cores (on purpose anyways, they get used automatically by other software). so if you had eight real cores, i would set both options to 8. but it's up to you. if you want to solve multiple files at the same time, or do other things while it solves, then you could reduce the number of cores, to allow for that.
anthony
The first step following your recommendations was I downloaded the "Intel oneAPI Base Toolkit" from Intel website and tried to install it. The first snapshot shows the warning I received. I ignored the warning and got another message as shown in the second snapshot. Can you please tell me what the problem is? Also, I can not find the site to download the CCX files.
I have around 500,000+ elements and running on windows10 with specs attached. Thanks
it looks like you checked to install gpu acceleration. try uninstalling the oneapi first. possibly reboot next. then resinstall. on the options, uncheck everything. then just select the MKL option. you also have to select at least one compiler, to get one dll file. the 'desktop c or c++' is the base. i install fortran, but that's because i use it to program. before you install openapi you also have to install microsoft visual studio. you got two errors there. one was for no gpu for gpu acceleration the other was for no ide. it can be difficult to figure out at first. but once you get the hang of it it's not bad. if you get an error, don't keep installing it. just cancel it and try over until you get the selections right. i don't have it in front of me so i can't walk you through it exactly. hopefully you know what i mean though. there is a free microsoft visual studio at:
https://visualstudio.microsoft.com/vs/community/
installing visual studio takes a long time and is rather huge to have when you don't need it. i don't need it but the intel compilers do. so it's a prerequisite i have to have installed. another issue is visual studio updates much more frequently than intel oneapi and it can break the oneapi. so once you get everything installed, don't update either program. if you want to upgrade to a newer oneapi later on. i uninstall the oneapi, then visual studio, then do the installs all over. otherwise i have had issues and even had to completely reinstall windows because oneapi got so messed up.
the ccx files you need are here; http://www.dhondt.de/calculix_2.20.1_4win.zip
you want to copy the ccx_dynamic.exe file into a folder that you point mecway to.
once you get everything installed, you then have to find the files. most of the files are here:
C:\Program Files (x86)\Intel\oneAPI\mkl\2023.0.0\redist\intel64
the one other dll file is here:
C:\Program Files (x86)\Intel\oneAPI\compiler\2023.0.0\windows\redist\intel64_win\compiler
you need to copy all the files into the folder that you made with ccx_dynamic in. look at the pictures i attached previously, to see what files i have in my folder. i experimented with removing certain files, to get the fastest solve time. it looks like your processor only supports avx2 extensions. so you will probably need two of the files i moved into the unused folder. those files are mkl_avx.2.dll and mkl_avx2.2.dll.
in the installation notes file, i think i mentioned that you need to copy mkl_rt.2.dll and rename the copy mkl_rt.1.dll. that's because this version of ccx expects that file to be called that. intel starting renaming the files and it became hard for ccx to keep up. in the unused files you can move mkl_avx512.2.dll there, since your cpu doesn't have those extensions. lastly, i don't think the mkl_sequential.2.dll is needed. however, if you have problems, you can move that file into the folder with ccx_dynamic.exe.
this all sounds rather difficult, but it's not as hard as it sounds. before you start doing a whole lot i would experiment with a test model. just to make sure you have everything running right. then do the huge model. you're cpu has four cores, so the picture i sent with my environment variables should work for you as well. you can reduce the omp_num_threads to 1,2, or 3 if you want to free up cores for other things. i have mine set to four and that still leaves me the 4 hyperthreading cores to surf the web, if the solve is going to take awhile. this would be the same for your processor.
i tried to find out what the openblas environment variable is and couldn't find out a lot that made sense. i think i got that setting from another user. it doesn't seem like changing it from 1 is a good idea though. you would have to find someone who knows a lot about pastix though. that seems to be what that is there for. i don't think intel pardiso uses it. on my pc, pastix does a great job at cpu utilization. however, it actually runs slower. so the fan is on high speed, the power usage is up, and you have to wait longer. thus, i don't get the results that some people have reported. with pardiso; fan speed is low, power is low, core usage is less, and solve time is faster. i wish it used the cores more, but it seems to work out better. it mainly loads memory then solves, and repeats. if you watch the task manager during solve, it's rather interesting. especially comparing each solver. pastix doesn't spend a lot of time loading the memory like pardiso does. pastix really uses the cores to great effect. pardiso only uses all the cores in a part of the process. so fast memory and lots of it are key. there are times when the ssd is used after solve or if you go out of core. so a fast ssd would help a lot. unfortunately, mine is very slow and it cause some long wait times.
as far as the element count, that doesn't help to know what will happen. you need the node count. the reason i use the node count is it gives you and idea of what will happen prior to solving. this only works because the node count is close to the number of degrees of freedom, which is the true measure. the #dof subtracts out boundary conditions and adds in other things depending on analysis. so my method of using nodes was created prior to a lot of things that existed. back when just doing a linear static analysis was a challenge. thus, it doesn't always apply to newer analyses. i was assuming you had a solid model with fixed constraints and isotropic materials. one complication i know of is ccx 3d shell expansion. you can have a very low node count prior to solve. however, if you look at the node count, in results view, it can be huge. so in that case, you would need the node count after solve. of course, that defeats the purpose of what i am trying to do with that metric.
anthony
edit; i added pictures showing what i have installed. as mentioned, using update for either product is not recommended. only install and uninstall. i had it wreck my registry and have to reinstall windows, or at best cause compatibility problems.
First of all, I highly appreciate your time and effort...you're a good mentor.
Secondly, I started from scratch as you suggested. Downloaded VisualStudioSetup and Calculix_2.20.1_4win.zip. Then tried to install oneapi. Attached are snapshots from installing the Inlet oneAPI. I have stopped installation after selecting MKL option (see After MKL OPtion snapshot) because I was getting confused and am waiting for your suggestion.
At this point,
1) should I go ahead and install the VisualStudio first and continue with oneapi or it doesn't matter? I prefer step by step guidance (or few steps at a time) because I'm not an expert in all these.
2) At what point should I install Calculix, if matters at all.
the best i can tell it looks like you were on the right path when you had everything unchecked but intel oneapi mkl. however, as mentioned:
1) install microsoft visual studio first (not needed for intel mkl but is needed for any of the compilers
2) install oneapi with everything unchecked first, then check mkl, then add one desktop compiler option (c or fortran or as many as you may want to use. you need at least one to copy a dll for pardiso
your other question. it doesn't matter when you install calculix. you actually don't install it. you just download it, unzip it, and copy the ccx_dynamic.exe file to a folder of your choice. that's the folder you point mecway to and also copy in all the dll files from oneapi
hope that helps clarify
ps; as you were seeing the oneapi installer does a good job of picking up additional things it needs to install. that's why i say start with everything unchecked, then check mkl and a compiler. it will pickup the rest and check that visual studio is installed
now it doesn't seem like you need to make a copy of mkl_rt.2.dll and name it mkl_rt.1.dll
it also doesn't seem like you need the libiomp5md.dll (which means you wouldn't have to install visual studio and a oneapi compiler). that would save a lot of trouble
the other file in question only depends on your cpu support. you have avx2 so you only need mkl_avx2.2.dll in the folder. you don't need mkl_avx.2.dll or mkl_avx512.2.dll. so i attached a pic of what you should need in the folder.
sorry if this reaches you too late. in the past, you had to have what i described previously.
anthony
update; I finished checking all the files and options. I attached an updated installations notes file. It includes my test speeds. I also attached the file, with the results cleared, to reduce file size. I experimented with the mesh size, so that it was big enough to show solution time differences. If the model is too small, you can't clearly see which dll file is best. Note, this model has reentrant corners. So ignore the stress at the root. It's just to look at displacement and transfer force to the retention model (which does not have reentrant corners).
ct?
I installed oneapi and put the CCX_dynamics.exe in the folder path as shown. Ran the attached test case and received an error. Any idea what theissue is now? thanks
I plotted my test times and I was surprised to see that AVX-512 is speeding things up a lot more than I thought. However, on small models you can't see the difference. The model needs to be reasonably large. Also, I'm staying in core. I've never got out of core to work.
edit; i added a picture of the mecway settings that you want to change. the option for calculix folder. you want to make that whatever folder you put the needed files in.
At one point there was a file called ccx_static.exe and it ran slower for some reason. the person who compiled it didn't understand why. he also provided a file to try and help out of core. however, that ran incredibly slow, so I abandoned trying to run out of core.
There seems to be something fundamentally wrong with CCX. The user's mod was to use double precision integers, which frightens me, since they should have been doing that all along. God knows what might be wrong with it, if they didn't even bother to code in double precision. That's Fortran 101 stuff. It shouldn't start running way slower because you switch to double precision integers either. I have tons of codes that are true double precision (both floating point and integers) and they all run very fast. They seem hell bent on using the terrible gfortran compiler when Intel Fortran runs consistently 2-3x faster for decades and is now free to use. If CCX was coded and compiled in the best way possible, I think there would be a lot less problems with it.
Another odd thing is ccx is using ARPACK, which is ancient. The Intel MKL includes eigensolvers. I have no idea why they aren't using them. There are also plenty of open source eigensolvers available too, which are much newer than ARPACK. CCX was even using SPOOLES which is really ancient. So thank god they did make some upgrades. There seems to be a lot left to improve though.
I bring these things up because you are likely to run into the same issues I have with trying to do a whole rotor modal analysis. Like I said early on, I can only do one of eight blades usually. On one small fan, I was able to do the whole rotor. It depends how complex the geometry is to mesh. However, Mecway makes it hard to go through the mode results, because it doesn't process rotating modes as of yet. So it's a nuisance. It's a lot easier to just do one blade, but it depends on your requirements. Some people need to model the whole rotor.
I'm getting more confused now. I removed the ccx.dynamic.exe from the Mecway folder and put it in a different folder (Location.PNG) and ran the test case. The solver stopped immediately with an error message with no text/description as shown in Capture.PNG.
This is what I have done so far;
1) Downloaded and installed Intel oneapi with MKL option.
2) Downloaded and extracted ccx.dynamic.exe and placed it in a folder other than Mecway folder.
3) Added cxx cards in my Test.liml
Am I missing something? I'm trying to get this going so I can submit the full fan model with 800,000 nodes. Thanks again.
that's great. you are getting much closer. unfortunately, you have to manually copy the needed mkl files and put them in the folder. you can also use environment path variables. i used to do it that way. however, i find having the files in the folder is nicer, because you can make sure what files are being used. so for your computer, you want to copy these files:
mkl_avx2.2.dll (don't confuse with mkl_avx.2.dll)
mkl_core.2.dll
mkl_def.2.dll
mkl_intel_thread.2.dll
mkl_rt.2.dll
if we are using the same version of intel mkl, then you can find these files here:
C:\Program Files (x86)\Intel\oneAPI\mkl\2023.0.0\redist\intel64
if a needed file is missing, you get problems like what you are having. sometimes, it will error out. sometimes, it will say what file is missing. sometimes, it just stops running but no error. it like stalls. through trial and error, i think the above are what you need.
with 16gb you should be able to solve your 873000 node model, no problem. i was worried you would be way over the limit. in any event, yeah, start over. do the tests with ccx. see if they work and if the number of cores are being used. you can use window task manager to monitor the progress. that's import to spot how close you are to running over the memory limits.
ps
i'm looking at my old cyclic symmetry test models and the full rotor equivalents for them. i see that the modes aren't the same. the number of modes etc. so right now it's hard to do a comparison. i'm getting things together to send to victor. i know i went over this all with him years ago. but since you are doing similar stuff, i wanted to look at it again. it would be nice to at least be able to say the cyclic test model gives the same results at the full rotor test model. i think if you dig down deep it probably does. but the quick results would definitely be confusing to people. the ideal situation is if you request 30 modes in either case, you get the same 30 modes back. that's not exactly what is happening. it's sort of a hot mess. that's one reason why i just do one blade.
running the models again, i can see why i gave up with cyclic symmetry though. it's just really really slow and it should be faster. if it was even the same speed, that would be an improvement, but still not good enough. it defeats the whole purpose of the feature. this is a huge red flag for me. it just screams something is horribly wrong.
Hi prop_design,
¿Could you share that model?. I have recently been working on Cyclic symmetry and the agreement was very good.
Regards
We are getting much closer now. I’m running a test case model with bonded contact using PARDISO solver. The solver runs and exits without any error but there is no solution. I think environment variables not being assigned is the problem. Attached is your variables posted earlier. Can you please let me know where you get these from and where do you place them?
Thanks again