-
Notifications
You must be signed in to change notification settings - Fork 917
Various fixes #798
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Various fixes #798
Conversation
|
@oleburghardt @talbring This PR fixes the multicore heat-flux-sensitivitiy issues. Tested with the tutorial made by ole. Good job I added a commit that fixes the error-message if you want to have tecplot-binary output but compiled using the --disable-tecio flag. It caused a compile time error ... it is behind a preprocessor statement #ifndef HAVE_TECIO, so this thing is only seen when using the --disable-tecio flag. |
| * \note Aligned dynamic allocation is disabled for compilation on MAC. | ||
| */ | ||
| #define REAL_ALLOCATOR(EXTRA) \ | ||
| #ifndef __APPLE__ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This now build on Mac, but I now see issues with the assert() calls on the first access of one of these containers at the start of the solver
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@economon I need more details, I do not have a Mac to go test this myself.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do note that asserts are disabled when building with ninja unless buildtype=debug.
You may want to define NDEBUG for your optimized builds in Xcode as the cost of those checks is not negligible.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Noted. I typically only build in serial debug mode in Xcode and keep a separate build at the command line in release mode w/ MPI, but I can add flags for this.
Btw, I also noticed that the new C2DContainer class has the assignment operator overloaded to perform a deep copy. Is it possible to do a shallow copy, i.e., just set the pointer of an existing initialized container to an existing one without allocating memory?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With what is implemented it is not possible. If the objective is avoiding the double allocation of gradients, I would suggest using a VectorOfMatrix& that is set to primitive gradient when no allocation is needed, otherwise a different VectorOfMatrix object is resized and the the reference is set to that instead. This way there are no ownership problems (who frees the pointer and so on). References need an initializer but that can be either of the other containers.
If it's for a different purpose I can think of something.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Aok, let me give that a try (yes it is for the gradients). #790 is looking good after merging everything, will be pushing the cleaned version shortly
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like the choice of initializer does affect the solution, btw. Looks like the reconstruction gradient vector should use the auxiliary vector's initializer for correctness...
| ILU_matrix = new ScalarType [nnz_ilu*nVar*nEqn]; | ||
| for (iVar = 0; iVar < nnz_ilu*nVar*nEqn; iVar++) ILU_matrix[iVar] = 0.0; | ||
|
|
||
| invM = new ScalarType [nPointDomain*nVar*nEqn]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| cur_sha_commit = status[1:].split(' ')[0] | ||
| if (cur_sha_commit != sha_commit): | ||
| print('SHA-1 tag stored in index does not match SHA tag stored in this script.') | ||
| sys.exit(1) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Has the index been updated to have these new SHA tags for meson and ninja? I am still debugging #790 upon merging #753 #777 and this #798, and now when I try to build with meson, I get this error. Could be that my local copy still has some issues due to improper merge, or could be that this isn't updated yet
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Previously the tags in git and in the init.py script where not matching and the error was not thrown because the indentation was wrong ... try git submodule update or deleting meson, ninja, codi, medi in the externals folder.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I continued to have this issue, so I simply reset the stored SHA in the index to the one that you have in init.py. Should be all good. Will be adjusted in #790
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems like you changed the version of ninja and meson in your branch. Maybe just make sure to use the newest ones if they work without any problem.
|
I tried to solve the problem where sometimes the regression tests stall ... it seems to be a problem of openmpi. Changed it to mpich, but then mpi4py has problems. I reverted it for now. We have to live with that problem for a while unfortunately. |
…Nonmatching Set* and Add* name.
| /* DESCRIPTION: Number of nonlinear deformation iterations (surface deformation increments) */ | ||
| addUnsignedLongOption("DEFORM_NONLINEAR_ITER", GridDef_Nonlinear_Iter, 1); | ||
| /* DESCRIPTION: Number of smoothing iterations for FEA mesh deformation */ | ||
| addUnsignedLongOption("DEFORM_LINEAR_ITER", GridDef_Linear_Iter, 1000); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I got rid of this option in favor of the equivalent and more descriptive DEFORM_LINEAR_SOLVER_ITER
…ete adjoint (they are more instructional now). Reducing code lines for variable registration by (default) function arguments.
|
@pcarruscag |
TobiKattmann
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey all, is this still WIP? One could merge this and reopen another various_fixes branch. I find myself and also e.g. #790 tracking this branch rather than develop as it includes fixes I need (which unnecessarily increases diff size to develop for said PR790).
Tests pass and (in serial) are no additional warnings, so from my standpoint this would be good to go
I will address the 2 little points below
| if (dist == 0.0) break; | ||
| } | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
trailing whitespace Edit: deleted
| /*-- Send donor info --*/ | ||
| Buffer_Send_FaceIndex = new unsigned long[MaxFace_Donor]; | ||
| Buffer_Send_FaceNodes = new unsigned long[MaxFaceNodes_Donor]; | ||
| //Buffer_Send_FaceProc = new unsigned long[MaxFaceNodes_Donor]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can this line be erased (and 5 lines below again)? Edit: I erased them
| if (Buffer_Receive_GlobalPoint[Global_Point_Donor] != -1){ | ||
|
|
||
| Coord_j = &Buffer_Receive_Coord[ Global_Point_Donor*nDim]; | ||
|
|
||
| dist = PointsDistance(Coord_i, Coord_j); | ||
|
|
||
| if (dist < mindist) { | ||
| mindist = dist; pProcessor = iProcessor; | ||
| pGlobalPoint = Buffer_Receive_GlobalPoint[Global_Point_Donor]; | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
|
Yep from my side we can merge this in |
|
@TobiKattmann Good idea to eventually just open up another one. |
|
And... we broke travis again. |

Proposed Changes
This PR fixes a couple of bugs I found recently. I also adapted the config preprocessing output to reflect the new output and convergence criteria options.
Furthermore it fixes the artifacts mentioned by @TobiKattmann in #774 regarding the Heatflux sensitivity.
Feel free to add any other fixes that you might came across.
Related Work
PR Checklist
Put an X by all that apply. You can fill this out after submitting the PR. If you have any questions, don't hesitate to ask! We want to help. These are a guide for you to know what the reviewers will be looking for in your contribution.