Author Topic: Applying displacement increments in addition to those specified in input file  (Read 2989 times)

Aravind27

  • New Member
  • *
  • Posts: 8
Hello everyone,

I am using FEAP 8.3 with user element and material routines. Please refer to the input file, ‘Inpt’ and the Screeenshot of the terminal that I have attached herewith.

I want to run a simulation with cyclic loads (saw-tooth) applied in the y direction. As mentioned in the Inpt file, the initial load increment given is dt = 1e-4 for a loop number of 10. With the INTEr after the applied load (in BATCH mode), the expectation was for the simulation to stop after which additional load blocks could be pasted onto the INTEr screen interface.

The problem is, when I paste any further loads onto the INTEr screen, the simulation abruptly fails with the message as shown in the screenshot attached.

The following scenarios work:
1. The load block (that fails when pasted in the terminal) when written below the initial load block in the Input file works as intended and the simulation progresses without a problem.

2. The same process of pasting load blocks into the INTEractive screen in a different PC (same version of FEAP, same Inputfile, element and material routines) the same way as I do in mine, also works!

What I have tried:
1. Ran <  make clean  > and <  make  > and created a new feap executable.
2. Tried a different mesh with different boundary conditions
3. Applied monotonic loads instead of cyclic loads.

In all these 3 cases, I had the same problem as mentioned above.

Is there an error that anyone can point out? Any suggestion would be of great help. Please let me know if any further information would be necessary, I can post it here. 

Have a good day ahead!

Prof. R.L. Taylor

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 2647
You cannot just paste the instructions onto the screen.  Somehow the instructions have to be read line by line.  One way is to write a feap function program with the instructions  another may be to put the commands in a separate file and use: include filename (where filename is the name where the command are).  The other is to use the feap HISTory option to continue.

Prof. S. Govindjee

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 1160
It looks like the cutting  and pasting is working for him.  Cutting and pasting works for me.

My guess is simply that the problem has an error someplace and is diverging.  To be sure,
try typing in the solution instructions, instead of cutting and pasting.

Aravind27

  • New Member
  • *
  • Posts: 8
Dear Prof. Taylor,

Copying and pasting onto the INTEr screen has always worked for me till now. As I had mentioned earlier, I tried the same simulation in a different PC and it allowed me to paste loads successfully.

My idea was to additionally load further based on the convergence given by the solver. Hence was trying to paste the loads onto the INTEr.


Dear Prof. Govindjee,

As you had recommended, I tried typing in commands line by line in the INTEr interface and unfortunately the simulation fails as before and I get the same error. Please refer to the screenshot that I have attached with this post.

I believe there is no divergence of the solution. Also, having the load block in the Inputfile worked as expected and simulation proceeded beyond the point where error occurs now.


P.S. : I just wanted to mention that this is just a simple working example and the applied loads are well within the failure points and Elastic limits.

I thank you both for your replies. Have a nice day.

Prof. S. Govindjee

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 1160
Correct my understanding:

If you run you problem straight out of the input file using batch commands, then it runs just fine. 
But if you run half of the algorithm from the input file and the remainder from the command prompt, then it fails.

That is hard to believe since with both methods FEAP is just storing the commands in a table and executing them.  There must be some subtle difference between the two that you do not see.  Can you make an example that employs only built-in FEAP elements, so that we can test?

Prof. R.L. Taylor

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 2647
Is it possible there is some strange interaction between 'opti' and 'dire sparse'?  You should  not need 'opti' with 'sparse'?

Sorry about the 'cut and paste' -- I still learn things from users!

Aravind27

  • New Member
  • *
  • Posts: 8
Dear Prof. Govindjee,

Yes, your understanding is correct. I would like to add one more point to it.
The same directory when copied as such to another PC (same version of FEAP, but different version of Ubuntu) and run, works without a problem. Loads could be copy pasted onto the INTEr screen or placed in the input file. Both works as expected.

And as Prof. Taylor had mentioned it earlier as well, using the HISTory command on the INTEr displays the whole set of commands as a table. So its baffling why copy pasting doesnt work just in my PC.

Unfortunately, I am not able to reproduce the error that I have by using FEAP elements and Material. Surprisingly the loads could be pasted onto the INTEr screen for monotonic and cyclic loads. And I do not have the permissions to share the element and material routines that I am using. But I can definitely post screenshots after running whatever you could suggest.

Since the same simulation works fine in another PC and also progresses in my PC when the load blocks are placed directly in the input file one after the other, I am a bit skeptic in again checking my material and element routines (which I have done multiple times already in my capacity).


Dear Prof. Taylor,


As you had suggested, and as mentioned in the manual, I tried using OPTI,OFF in the input file. I also tried using dire,block instead of dire,spar . Unfortunately, both gave me the same error.


Any suggestion would be of great help. Many thanks to both of you. Have a nice day ahead.

P.S. When the load blocks are placed one after the other on the Input file, and run in my PC, I could load for another 1000 or so steps without a problem wherein I get the results as expected from the codes.

   

Prof. S. Govindjee

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 1160
Valgrind and gdb are probably your next best hope to figuring out what is going on.  I would start by echoing to a file what FEAP thinks it is reading.  I could be that on your machine where it is not working correctly there copy and paste is including some hidden characters that are generating errors.

Aravind27

  • New Member
  • *
  • Posts: 8
Dear Prof. Govindjee,

My understanding of gdb is quite rudimentary. So please correct me if I am wrong. From what I saw from one of the posts in the forum, I did the following:
1. Added -g tag to the FFOPTFLAG environment variable in makefile.in and created a new feap executable with make
2. Ran gdb feap to start feap in gdb mode. And typed in run

So far I have only used gdb with a single c file where the breakpoints were created in some lines of the code for that single file where it looked necessary. 

But now when running gdb alongside feap where there are multiple files involved,

1. How can I set breakpoints for commands of the Inputfile alone?

2. Since the first batch of load that was placed initially in the inputfile is being executed successfully and the error is only for any second batch that is PASTED onto the INTEr, How can I give a break-point only for the second block that is pasted?

Regarding echoing the commands from a file, I placed all the commands in a file that I am pasting onto the INTEr and then printed it using echo (if this is what you had meant). There are no additional characters that I could see there. Also I would like to point out, as you had suggested already, I tried typing the commands line by line in the Interactice screen and had already gotten the same error.

Many thanks for your help!

Prof. S. Govindjee

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 1160
I don't think I can explain that well how to use gdb on the forum.  Your best bet is to find someone local that is experienced and have them show you the ropes.  Notwithstanding to set a breakpoint at the top of a given subroutine use
Code: [Select]
break subroutinename_ where subroutinename should be the name of the subroutine in which you want the breakpoint.  The underscore will be needed on 99% of all machines.

You should also try running with valgrind, it is a quick way to detect memory errors.  The only problem is that it spits out lots of other non-errors that it thinks are errors, but in this case just filter the output looking for your subroutine names.
« Last Edit: July 28, 2020, 04:12:17 PM by Prof. S. Govindjee »

Aravind27

  • New Member
  • *
  • Posts: 8
Dear Prof Govindjee,

Thanks a lot for your insights on gdb. A very useful tool indeed.

But I am very certain that the error wasnt with the code, since it is working fine if I place the loads one after the other in the input file and run in my PC (Ubuntu 18.04) OR copy pasting the increments as such in another PC running Ubuntu 16.04. Both works and I get the desired results. Just that copy pasting the loads onto INTEr wasnt working in my machine.

I installed Ubuntu 16.04 in the PC I am using and set up FEAP again. Ran the exact same directory without any changes, and surprisingly now I can paste the loads and it works fine. I havent completely understood why the error was happening in the first place. But for the time being it works as expected.

Many thanks. Have a nice weekend!