Ecco qualcosa di una lista di lettura. Non sono sicuro se è troppo semplice per te:
Writing Scientific Software: un buon seguito di un 'Learn to Program in C++' o altro.
Parallel Scientific Computing in C++ and MPI: se non hai intenzione di parallelizzare la tua applicazione, dovresti esserlo.
Engineering and Scientific C++: una buona introduzione specifica del dominio alla programmazione in C++. Un po 'datato nei dettagli della lingua, ma l'approccio generale non è invecchiato.
Ti suggerisco di leggere le risposte SO a domande come "Come dovrei progettare un grande programma C++?" per consigli su altri libri che potrebbero essere di interesse.
Come per le migliori pratiche, ecco alcuni suggerimenti. Ancora una volta, non sono sicuro del tuo punto di partenza, quindi potrebbe essere troppo semplice:
- Come ho scritto sopra, dovresti pianificare fin dall'inizio di sviluppare un programma parallelo. Se la trasmissione di messaggi su un cluster non è la tua tazza di tè, considera almeno la programmazione della memoria condivisa per un desktop multi-core. OpenMP vale la pena investigare.
- Familiarizza con il lavoro esistente. Le librerie BOOST sono probabilmente essenziali. Mentre apprezzo la tua intenzione di eseguire il roll-your-own, non ignorare le esistenti librerie numeriche consolidate come BLAS e LAPACK che troverai a Netlib. A seconda della piattaforma di sviluppo e del set di strumenti, è possibile che siano già installati.
- Se si proviene da un contesto scientifico, è possibile migliorare le proprie conoscenze e competenze nell'ingegneria del software. Argomenti come: controllo del codice sorgente; test; profilazione e ottimizzazione del codice; profonda conoscenza di ciò che possono fare i tuoi compilatori. Nella mia esperienza molti scienziati computazionali hanno uno sfondo debole in tutte queste cose.
- Si dovrebbe pianificare di dedicare (approssimativamente) tanto tempo a progettare e testare il proprio programma quanto a codificarlo effettivamente. Anche lavorando da solo è essenziale avere un buon piano d'azione prima di iniziare a programmare. Non c'è motivo per cui debba essere completo in ogni dettaglio all'inizio, ma non entrare mai nel territorio senza una mappa.
- Sei silenzioso sull'aspetto (s) del mondo fisico che si desidera simulare. C'è molta arte nota in tutti i tipi di simulazioni fisiche, se fossi un po 'più specifico, SO potrebbe essere in grado di fornire alcuni suggerimenti più specifici.
fonte
2010-09-30 18:12:27
ciao. grazie mille per la tua risposta utile e completa. riguardo al tuo ultimo punto, l'idea è di sviluppare un nuovo codice di dinamica molecolare. qualche consiglio qui? grazie – flow
La dinamica molecolare va oltre la mia comprensione, ma vedo che l'articolo di Wikipedia ha alcune indicazioni sul software. Sarò molto sorpreso se non riesci a trovare il codice open source da ispezionare, e la letteratura è ampia. –