Repository navigation
Conversation
…damping) Explicit Bathe scheme with FLAC-style local non-viscous damping applied to the nodal unbalance: Fd = -alpha * |F_unbal| * sign(v). integrator ExplicitBatheLNVD $p $alpha <$computeCriticalTimestep> Extracted from merged-Explicit-ASDP-master (96feda4). Uses class tag 63, since 62 is now taken upstream by ExplicitDifferenceStatic. The experimental always-on damping that the same commit added to ExplicitDifference is not included here. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K524skQQ24A6JCFWNnb7G1
…atic runs Replace the separate ExplicitBatheLNVD class (a fork of the old ExplicitBathe) by an option of the current integrator: integrator ExplicitBathe $p <$computeCriticalDt> <-lnvd $alpha> With alpha > 0, Cundall/FLAC local non-viscous damping F_d = -alpha |F_unbal| sign(v) is added to the nodal unbalance at both sub-steps, for dynamic-relaxation / pseudo-static analyses. alpha = 0 (the default) leaves ExplicitBathe unchanged. alpha is sent with sendSelf/recvSelf. Removes ExplicitBatheLNVD and its class tag. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K524skQQ24A6JCFWNnb7G1
DOF_Group::getUnbalance only holds applied nodal loads; element resisting forces are assembled separately. Damping computed in formNodalUnbalance therefore scaled with |P| instead of |P - R(u)| and vanished in free vibration. Override formUnbalance instead: assemble the full unbalance, then apply F_d = -alpha |B_i| sign(v_i) per equation using the predicted velocity of the current sub-step. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K524skQQ24A6JCFWNnb7G1
- Accept any integer for the critical-timestep flag again (> 0 enables it), as the original positional parser did, instead of only "0"/"1". - Don't dereference a null OPS_GetString() result: Python returns null for numeric arguments; read them as the flag instead. - Move the getVel() comment back above getVel(); full Cundall (1987) citation; note that the damped unbalance includes Rayleigh/modal forces. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K524skQQ24A6JCFWNnb7G1
…l option errors Review follow-ups: - Apply the local damping to the solved acceleration of each sub-step (with that sub-step's predicted velocity) instead of to the assembled RHS. Equivalent for the lumped mass an explicit scheme uses, but the acceleration is fully assembled across processes for the parallel diagonal SOEs, and re-forming the unbalance (printB) no longer changes the result. - Invalid -lnvd values and unknown options are reported and ignored instead of returning a null integrator (which could crash Tcl when an analysis already exists). Results are bit-identical to before for alpha = 0 and to the previous -lnvd formulation for alpha > 0 on lumped-mass models. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K524skQQ24A6JCFWNnb7G1
… line Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K524skQQ24A6JCFWNnb7G1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Branch:
jaabell:feat/explicit-bathe-lnvd→OpenSees:masterFiles:
SRC/analysis/integrator/ExplicitBathe.{h,cpp}onlyDocumentation and examples
Documentation and examples are in a companion PR to OpenSees/OpenSeesDocumentation: OpenSees/OpenSeesDocumentation#202
It updates the
ExplicitBathepage (syntax, the new-lnvdoption, theory, limitations) and corrects theexisting page: the command is Tcl-only, and a broken substitution, a csv-table error and an unreferenced citation
are fixed. It also adds two verified, downloadable examples:
example_bathe_lnvd_sdof_decay.tcl: amplitude decay vs alpha;example_bathe_lnvd_pseudostatic.tcl: converges to the exact static solution.Summary
Adds an opt-in Cundall/FLAC local non-viscous damping to the explicit Bathe integrator, so that it can
be used for dynamic-relaxation (pseudo-static) analyses, as
ExplicitDifferenceStaticalready can (its damping was fixed in #1827):-lnvd $alpha, with α in [0, 1), default 0 (off). With α = 0 the integrator is bit-identical tocurrent master.
predicted velocity:
a_d = a − α|a| sign(v). For the lumped mass an explicit scheme uses, this is theCundall force form F_d = −α|F| sign(v) on F = P − R(u). Because the solved acceleration is fully
assembled, it is consistent across processes for the parallel diagonal systems, and commands that
re-form the unbalance (e.g.
printB) do not affect the result.Parser
The positional parser is replaced by an option loop. Old usages keep working:
integrator ExplicitBathe $pandintegrator ExplicitBathe $p $flagbehave as before. Any integer-lnvdmay appear before or after the flag.-lnvdvalue or an unknown option prints a warning and is ignored; damping stays off. Aninvalid
pstill fails construction, as on master.as on master.
Verification
digit, for both
ExplicitBathe 0.54andExplicitBathe 0.54 -lnvd 0.0.1.0e-2 / 4.86e-4 / 4.80e-6 for α = 0 / 0.3 / 0.8. With p = 0.5 (no algorithmic dissipation) and
α = 0.1, the decay ratio matches exp(−2α) within 0.04 %.
-lnvd 0.8: converges to the exact static displacements(0.0000 % error).
printBafter each step.Limitations
M⁻¹F per equation and dissipation is not guaranteed.
ExplicitDifferenceStatic(ExplicitDifferenceStatic: make the local non-viscous damping act on the unbalanced force; add options #1827) offers thecombined law and
-vEps.References
Computational Methods in Engineering Rock Mechanics, ch. 4.
🤖 Generated with Claude Code
https://claude.ai/code/session_01K524skQQ24A6JCFWNnb7G1