Using database command in OpenSeesSP

This forum is for issues related to parallel processing
and OpenSees using the new interpreters OpenSeesSP and OpenSeesMP

Moderator: selimgunay

Post Reply
alborzgh
Posts: 4
Joined: Thu Mar 29, 2012 11:30 pm
Location: University of Washington

Using database command in OpenSeesSP

Post by alborzgh »

Hi all,

I have an issue using 'database' command in OpenSeesSP which is probably of interest to Frank.

I'm trying to take advantage of database command to save the state of my model in one script and restore it in another script, so that whenever my process is killed for any reason, I would be able to continue the process starting from some point where I have the model saved. The mentioned scripts work perfectly fine when I run them with OpenSees. I have tested them many times with different conditions and I believe they're doing what I'm expecting them to do.

When I run the same scripts with OpenSeesSP, the first one runs with no error, but the second one -which is supposed to load the model saved in the first script and continue analysis- raises an error saying that the matrix is singular. Specifically I get this error:
Using SparseGeneral solver : "The 1-th row of A is exactly zero"
Using Mumps solver : "WARNING MumpsParallelSolver::solve(void)- Error -10 returned in substitution dmumps()
cause: Matrix is Singular Numerically"

I suspected that the model is not saved correctly, therefore I ran the first script with OpenSees and the second script using OpenSeesSP. It worked! So I'm guessing that database save command has a bug when it's compiled in parallel, specifically OpenSeesSP. Or it could be that I'm missing something here!

Any help would be much appreciated!

Alborz
alborzgh
Posts: 4
Joined: Thu Mar 29, 2012 11:30 pm
Location: University of Washington

Re: Using database command in OpenSeesSP

Post by alborzgh »

If it makes any help, looking at the database files generated, I can see that running the script with OpenSees generates one extra file (compared to OpenSeesSP): "modelData.IDs.3000.2"
Also the files "modelData.IDs.8.0" and "modelData.Vecs.751.0" have different sizes when I run OpenSees compared to when I run OpenSeesSP.

Obviously the name I chose for the database is "modelData". Although the commit tag is 0, I can see that some files with extension 2 are generated. I'm guessing the other number in the file names (which is supposedly the size of vectors and IDs) should be model-dependent.

I hope this helps to figure out the problem.

Alborz
alborzgh
Posts: 4
Joined: Thu Mar 29, 2012 11:30 pm
Location: University of Washington

Re: Using database command in OpenSeesSP

Post by alborzgh »

So digging into the problem, I found that the domain sendSelf function [Domain::sendSelf()] uses "theElements" member to get the number of elements in the domain (Domain.cpp:L2594), which is fine as long as you use OpenSees and the domain is not partitioned. However this variable is not updated in the PartitionedDomain.cpp file which uses a different process for adding elements to the domain. Therefore the parent class, Domain does not have the information it needs to send any element to the database and save them all to the hard drive. I confirmed that this was the problem by hacking the code a bit, but my modifications are not pretty (I had to create a set function to have access to theElements variable and used that to set the Domain::theElements equal to PartitionedDomain::element)!

I hope this helps!

Alborz
Post Reply