Comunque sia l'analisi fatta dal SAP2000, penso sia quella giusta. Quindi se la tua procedura C++ da altri risultati le cose possono dipendere solamente da:
1) Input differente
2) Errore nella tua procedura
tertium non datur.
Io continuo a guardare i numeri che tu sostieni inserire come input nella tua procedura e non mi convincono affatto.
Inserisci le coordinate dei vari nodi in metri. Ok.
Poi metti:
1) area=15, 15 cosa? metri quadri?
2) Inerzia=2000, 2000 cosa? m^4?
ecc.
Ora io capisco che tu nel SAP2000, potendo definire "manualmente" le sezioni, abbia potuto inserire gli stessi "numeretti" per l'area e l'inerzia della sezione.
Poi guardo il modulo elastico: E=1000
Anche qui, 1000 cosa? Ma in ogni caso capisco che trattasi di un valore "a casaccio" in quanto non mi "torna" con nessun modulo elastico conosciuto. Acciaio? No, 210.000 N/mm². Calcestruzzo? No, mediamente 30.000 N/mm²
Infine torno alla domanda iniziale, densità di massa 2500. Che guarda caso invece appare essere i 2500 daN/m³ che normalmente pesa il calcestruzzo armato.
Ora, io immagino (anche se no), che la tua procedura proceda a "rettificare" internamente tutte le unità di misura rendendole congruenti tra loro per la sua elaborazione.
Il SAP2000 sappi che questo "lavoro" non lo fa. Se inserisci determinate unità di misura, tutte le varie grandezze in gioco, geometriche, forze, momenti, tensioni, ecc. devono rispettare quelle unità.
Io ritengo quindi, per prima cosa, che ci sia un differente input.