-
Notifications
You must be signed in to change notification settings - Fork 0
License
lstorchi/Stacker
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This is mainly just a bunch of code I developed and used to produce some results published: L. Storchi, F. Nunzi, F. De Angelis, Modeling Mesoporous Nanoparticulated TiO2 Films through Nanopolyhedra Random Packing J. Phys. Chem. C, 119 (19), 10716, (2015) DOI: 10.1021/acs.jpcc.5b01620 (2015) F. Nunzi, L. Storchi, M. Manca, M. Giannuzzi, G. Gigli, F. De Angelis, "Shape and Morphology Effects on the Electronic Structure of TiO2 Nanostructures: From Nanocrystals to Nanorods" ACS Appl. Mater. Interfaces 2014, (2014) DOI: 10.1021/am404293x Francesca Nunzi, Edoardo Mosconi, Loriano Storchi, Enrico Ronca, Annabella Selloni, M. Gra"tzel, F. De Angelis, "Inherent Electronic Trap States in TiO2 Nanocrystals: Effect of Saturation and Sintering", Energy & Environmental Science, 6(4), 1221, (2013). some other results have not yet been published instead REL_0_0_0 : before using glyph3d REL_0_0_1 : later I will try to implement directly what was described in Comp. Mechanics. WCCM VI Sept. 5-10 2004 China REL_0_0_2 : split into two stacker programs to generate and then the viewer REL_0_0_3 : before starting to use more realistic configurations and particle sizes and to split coordination.py into multiple files REL_0_0_4 : after splitting and putting the modules in modules REL_0_0_5 : intermediate tag before entering the most accurate PSD calculation REL_0_0_5_b : before commit of some fixes REL_0_0_5_c : maybe fixed a problem in psd_accurate, but I want to restructure the code now; that all the two methods are based on the set of points in a vacuum. REL_0_0_6 : Before starting to implement PSD along the lines of psdsolv REL_0_0_7 : Implementation of the PSD calculation REL_0_0_8 : TiO2 nanoparticle visualization with associated class REL_0_0_9 : Before starting to add features to the tio2 nanparticle part REL_0_1_0 : Added the determination of the inside point REL_0_1_1 : Before starting to do some tests with simulations and realistic dimensions REL_0_1_2 : Before implementing pore_size directly inspired by Lagemat REL_0_1_3 : First implementation with collision detection method for psd nanocrystals REL_0_1_4 : Before starting with the variable size spheres test REL_0_1_5 : Before committing changes in psd_using_tr REL_0_1_5_a : Overwrite of psd_using_tr visualizer REL_0_1_6 : Backup Before committing changes in psd_using_tr REL_0_1_7 : Before starting with a restructuring according to the parallelisability of the various calculations REL_0_2_0 : remove old results REL_0_2_2 : before fixing the source to arrive at a configuration with zero or almost zero intersection volume OLD code description need at least to be translated stacker.py : genera la configurazione e scrive il risultato in un file stacker_random.py : genera la configurazione e scrive il risultato in un file ma invece di R fisso usa MINR e MAXR uniforme visualize.py : visualizza la configrazione ottenuta leggendo da file visualize_diff_r.py : visualizza la configrazione ottenuta leggendo da file anche sfere di raggio diverso anim.py : test animation, le sfere vengono aggiunte una alla volta mentre le legge da file dropandroll.py : tento di animare il drop and roll slice.py : trova i cerchi di intersezione di un piano parallelo al piano XY. radial_dist_func.py : genera la funzione di sitribuzione radiale leggendo da final_config.txt le posizione delle sfere ed i raggi. plot "radial_distribution.txt" using 1:2:(1000) smooth acsplines maggiore e' il peso maggiore la somiglianza con una linea che semplicemente unisce i punti coordination.py : Leggendo da final_config.txt determina la coordinazione semplicemente confrontando tutte le particelle una ad una. Quindi una coordinazione che server essenzilmente come verifica di errori o meno. Anche la porosita' e' calcolata in modo non ncessariamente corretto, ma come semplice rapporto di volumi coord_w_radial.py : Calcola la coordinazione usando solo le particelle interne determinate dalla funziona che clacola la funzione di distribuzione radiale. E poi considera come taching le sfere piu' o meno vicnne, non solo quelle che si toccano completamente porosity.py : Calcolo la porosita' tagliando a fette il cubo ed usando un metodo MC per calcolare rapporto tra volume occupatp e libero. Calcolo la porosita' anche usando una grigli di punti fitta a piacere e contanto i punti fuori e dentro le sfere void_space.py : can be used to plot void space as a collection of small spheres build_test_model.py : Questo costruisce un test mnodel da usare per pore_size.py per capire se stiamo calcolando correttamente la PSD o meno. psd.py : Calcolare il PSD increaseradius.py : Aumenta le dimensioni del raggio del file final_config.txt di una percentuale data. pore_size.py : approccio semplice per la determinazione della PSD. Lo uso adesso che ho un metodo PSD che giudico affidabile anche perche' nel caso dei nanocristalli intederei usare un approccio di questo tipo per la psd psd_using_tr_read_points.py : Per le sfere ma legge i punti su cui fare il calcolo come input nanoparticle_randomly_place.py : partendo dalla configurazione delle sfere randomizza le ruotazioni. In output stampa: x y x r p2.x p2.y p2.z tetha nanoparticle_visualize.py : visualizza le nanoparticelle study_a_pair.py : dato in input 1 intero che identifica la nanoparticella ne calcola i vicini, li visualizza e poi esegue altri calcoli (volume di sovrapposizione) study_a_sphere.py : dato in input 1 intero che identifica la nanoparticella ne e data una sfera calcola la sovrapposzione closest_point.py : dato in input 1 intero che identifica la nanoparticella e dato un punto calcola la sfera di raggio massimo che e' centrata nel punto e non tocca la nanoparticella con ClosetPoint psd_nanop.py : Psd calculation for nanoparticles nanoparticle_touch_vis.py : visualizza due particelle che si toccano se trovate ed eventualemnete i punti inise e le sfere nanoparticle_touch.py : Conta quante nanoparticelle tocca ognuna filter_pore_radius.py : Partendo da pore_radius_list di psd_nanop.py, riapplica un filtro basato sull'approccio naif punto superficie sfera per eliminare evenetuali pori troppo grandi. compute_psd.py : leggendo da un file i raggi delle sfere nel poro prodotte usando o psd o psd_nano calcola il psd_diff e psd_cumm psd_using_tr.py : Pore size distribution using TR method psd_using_tr_visualize.py : Pore size distribution using TR method questo e' il tool che serve solo a visualizzare psd_using_tr_nano.py : Pore size distribution using TR method da usare con le nanoparticelle invece che con le sfere psd_using_tr_nano_vis.py : Pore size distribution using TR method da usare con le nanoparticelle visualizza split_initial_config.py : Splitta la configurazione iniziale delle nanoparticelle impaccate. Cosi' che posso fare il calcolo della PSD su sottoblocchi psd_nanop_splitted.py : Lavora nel calcolo del PSD per nanoparticelle su cluster splittati. Quindi numero di punti esatto e rifiltra aposteriori come filter_pore_radius.py compute_particle_dist.py : Calcola il raggio medio delle particelle e la distribuzione visualize_single_nanop.py : mi serve per vedere se la rotazione dei punti interni funziona nanoparticle_replace.py : Questo dovrebbe a partire dalle configurazioni ad esempio splittate , ricostruire il packing muovendo ogni nanoparticella di modo che ad esempio non ne tocchi nessuna o ne tocchi altre solo con u determinato volume di sovrapposizione nanoparticle_point_surface.py : Visualizza i punti in superficie, che poi uso per calcolare la superficie sovrapposta nanoparticle_volume_inter.py : Calcola il volume di intersezione per tutte le particelle, ed anche la superficie nanoparticle_coordination.py : Calcola in realta' tutto come nanoparticle_volume_inter.py vorrei essere molto piu' veloce semplicemente mettendo i punti particella per particella man mano che serve e poi scaricare tutto cosi' non devo usare molta memoria coord_w_radial_integration.py : calcola il coordination number proprio integrando, particella per particella la g(r) nanoparticle_replace_surface.py : ricostruire il packing muovendo ogni nanoparticella di modo che il rapporto tra le frazioni di superficie 101 e 001 sia correttamente circa 20 visualize_single_nanop_sphere.py : Visualizza una singola parteicella e la sfera corrispondente nanoparticle_replace_surface_step2.py : Onde migliorare il rapporto medio ottenuto devo fare passaggi successivi, e questo e' sicuramente uno in cui prendo particella per particella e ruoto a differenza del primo in cui riarto dalla prima particella e aggiungo man mano le altre. nanoparticle_replace_surface_non_random_step2.py : Posso generare le rotazioni in modo esaustivo ad esempio: genero tutti i punto sulla sfera e quelli sono p2 e poi tetha (angolo di rotazione) semplicemente mi sposto di step 2*PI/n a seconda di quello che voglio. nanoparticle_replace_surface_non_random_step2_fixed.py : come sopra solo che in questo caso vengono taggati i vicini e quindi non piu' mossi nanoparticle_replace_surface_step2_fixed.py : come sopra ma random nanoparticle_replace_surface_step2_fixed_nona.py : come sopra ma mette fixed solo le nanoparticelle che toccano quella che muovo quindi in conclusione ne muove di piu' di quello sopra, quindi non rimane fixed solo la coordinazione
About
No description, website, or topics provided.
Resources
License
Stars
Watchers
Forks
Packages 0
No packages published