Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Constanze Kalcher

Pages: 1 ... 3 4 [5] 6 7 ... 10
121
Support Forum / Re: Vornoi Analysis
« on: January 25, 2019, 05:16:06 PM »
Hi Aditya,

yes the output will be slightly different because
Code: [Select]
np.where( unique_atom_IDs == particle_index)[0] is empty if unique_atom_IDs is a list, which then leads to the central particle not being removed from the neighbor list .
The np.delete(...) is then obsolete. You'll see that when you add print(len(unique_atom_IDs)) and print(len(neighbor_indices)) to your script.

-Constanze

122
Hi,

it will look for the files in the current folder, but you can of course specify the path to that file when you call import_file().
Moreover, this script is written in OVITO 3 syntax.
Also note, that you can call ovitos.exe by its absolute path, e.g., if you have installed it in C:\Program Files:

Code: [Select]
"C:\Program Files\Ovito\ovitos.exe"
or you add that folder to your path variable

Code: [Select]
set PATH=%PATH%;"C:\Program Files\Ovito\"
so you don't need to type the whole path every time.

Concerning your last question. No, so far the code-snippet will not output anything, you'll need to add that. The good news is that you can basically copy the
Wigner Seitz analysis example script from the scripting reference:
http://ovito.org/manual_testing/python/modules/ovito_modifiers.html#ovito.modifiers.WignerSeitzAnalysisModifier

-Constanze


123
Support Forum / Re: Counting specific particle types inside a cluster
« on: January 25, 2019, 11:44:17 AM »
Hi,
a possible way to do this could be to apply the cluster analysis modifier,
https://ovito.org/manual/particles.modifiers.cluster_analysis.html
which assigns a cluster-ID to every found cluster. Then you could select clusters based on their IDs and count the different particle types it contains, e.g. using
the Expression Selection modifier, or a Python Script modifier, or even a Compute Property modifier. There are several possibilities.
To get more specific I would need to see an example file, which you can upload here if you like.

Let me know if this works for you.

-Constanze

124
Support Forum / Re: Vornoi Analysis
« on: January 24, 2019, 11:57:54 PM »
Hi aditya,

yes it's meant to be used in OVITO 3, sorry about that, I automatically assumed you're using the latest version.

Also, note that I corrected a small mistake in the code snippet I posted above, it shouldn't be
Code: [Select]
unique_atom_IDs= list(np.union1d(atom_pairs[:,0], atom_pairs[:,1]))but
Code: [Select]
unique_atom_IDs= np.union1d(atom_pairs[:,0], atom_pairs[:,1]),
so please double-check.

-Constanze

125
Hi,

I tried to reproduce your problem and you're right. I'm afraid that at the moment you'll have to do the analysis programmatically  rather than in the GUI to solve this issue.
The following script is an example of how to  loop over each frame and also update the reference configuration with the current frame. It's meant to be executed from the terminal
like this: ovitos script.py (see also Manual of scripting usage).


Code: [Select]
from ovito.io import *
from ovito.data import *
from ovito.modifiers import *
from ovito.pipeline import *
import numpy as np

# Create a new pipeline with a FileSource:                                                                                                                                                                                             
pipeline = import_file('input-file.dump')
# Load the reference config from a separate input file.                                                                                                                                                                               
pipeline2 = import_file('reference-file.dump')

# Perform Wigner-Seitz analysis:                                                                                                                                                                                                       
ws = WignerSeitzAnalysisModifier(
        per_type_occupancies = True,
        affine_mapping = ReferenceConfigurationModifier.AffineMapping.ToReference)
pipeline.modifiers.append(ws)

#Loop over all frames                                                                                                                                                                                                                 
for frame_index in range(pipeline.source.num_frames):
    ws.reference = StaticSource(data = pipeline2.compute(frame_index))
    data = pipeline.compute(frame_index)

Hope this helps,

-Constanze

126
Support Forum / Re: Vornoi Analysis
« on: January 23, 2019, 11:18:19 PM »
Hello,

the answer is yes - what you would like to do is achievable by writing a custom python script modifier function, similar to the example you used to extract the Voronoi indices. There are different ways to do this actually, here is one possibility:

If you have activated the option "Generate neighbor bonds" in the Voronoi analysis modifier in the GUI of OVITO, you generate bonds which are described by a bond index and a tuple that contains the particle IDs of the pair of atoms that is connected through that bond. The latter is called bond topology, see also
http://www.ovito.org/manual_testing/python/modules/ovito_data.html#ovito.data.Bonds
Once you have the particle indices of the neighboring atoms, you can then use that information to look up any of their particle properties, like in your case the positions.

As an example, the following modifier function loops over all particles and determines all neighbors and their positions for each particle.

Code: [Select]
from ovito.data import *
import numpy as np

def modify(frame, data):
    bond_enumerator = BondsEnumerator(data.particles.bonds)
    bond_topology = data.particles.bonds.topology
    pos = data.particles["Position"]

    for particle_index in range(data.particles.count):
        #Get the bond indices of all bonds to the current particle
        bond_index_list = list(bond_enumerator.bonds_of_particle(particle_index))
        #Use the bond indices to look up the atoms that belong to each bond
        atom_pairs = data.bonds.topology[bond_index_list]
        unique_atom_IDs = np.union1d(atom_pairs[:,0], atom_pairs[:,1])
        #Do not include current central particle in neighbor list
        neighbor_indices = np.delete(unique_atom_IDs, np.where( unique_atom_IDs == particle_index)[0])
        #Look up the positions of the neighbor atoms
        neighbor_pos = pos[neighbor_indices]
       
        #Print neighbor indices and positions of current particle
        print("Current particle:", particle_index)
        for i in range(len(neighbor_pos)):
            print(neighbor_indices[i], neighbor_pos[i])

Hope that serves as a good starting point. Let me know if you have questions.

-Constanze

127
Support Forum / Re: Quantum espresso files
« on: January 23, 2019, 01:44:15 PM »
Hello,
we are not sure what you mean by "script reader", please explain.

-Constanze

128
Dear wufc,

yes, from within a python modifier you can access any results stored in a Data Series  through data.series.
So if you e.g. want to store a specific dislocation type count as a global attribute to be able to export that via the File-export "Table of Values" function, you could try something along those lines:
Code: [Select]
def modify(frame, data):
    disl_count = data.series['disloc-counts']
    #print(disl_count.as_table())
    data.attributes["1/6<112> Shockley Count"] = disl_count.y[2]
   

See also http://www.ovito.org/manual_testing/python/modules/ovito_data.html#ovito.data.DataSeries

-Constanze

129
Dear wufc,

in the latest developer version of OVITO, the number of segments found during the dislocation analysis are actually stored in "Data Series" (see attached screenshot)
from where they can be exported via the file-export function in the menu or the export button marked in the screenshot.

-Constanze

130
Dear prash,

in the meantime Alexander has updated the latest developer version with a modifier function called Unwrap Trajcectories which might be of interest to you. Try it if you like, here's the corresponding manual entry:
http://ovito.org/manual_testing/particles.modifiers.unwrap_trajectories.html


-Constanze

131
Hello,

if I understand you correctly you're asking how to obtain the coordinates of the closest image of a neighbor atom, right? Note that the NearestNeighborFinder function takes into account periodicity when calculating the distance vector to each neighbor,
it however does not "generate new atoms" for each image of an atom. Thus when you look up the position of the neighbor atom it will always be the original image.
What you have to do to obtain the coordinates of the closest image of a neighbor atom is to simply add the neighbor distance vector to the position of the central atom, try e.g.

Code: [Select]
for index in range(data.particles.count):
    neighbors = [ (neigh.index, neigh.delta + positions[index]) for neigh in finder.find(index) ]
    print("Neighbor Atom \t Position")
    for neigh in neighbors:
        print( "{} \t {}".format(neigh[0],neigh[1]))

-Constanze

132
Support Forum / Re: RDF in two dimensions
« on: January 18, 2019, 05:25:07 PM »
Hi,

this sounds like this can be achieved with a python script modifier, or a small batch script, please also see the documentation about running scripts:
http://www.ovito.org/manual_testing/python/introduction/running.html

What you would have to do is create a selection of atoms based on the z-coordinate and then use only those atoms in your analysis. As a starting point
have a look at the CutoffNeighborFinder function:
http://www.ovito.org/manual_testing/python/modules/ovito_data.html#ovito.data.CutoffNeighborFinder.

-Constanze

133
Support Forum / Re: How can I fix periodic boundary during animation
« on: January 16, 2019, 04:47:48 PM »
Hi,

in order to avoid this I would recommend to use the extended xyz file format, where the actual cell is defined in the header, see e.g.
http://libatoms.github.io/QUIP/io.html#extendedxyz
for more details.

If your simulation cell does not change during the course of your simulation there is a quick workaround: You could define the cell vectors yourself by adding the Affine Transformation modifier to your pipeline - use the options "Transform to target box" and "Operate on" Simulation cell only.

-Constanze

134
Support Forum / Re: Orbit center
« on: January 16, 2019, 12:53:47 PM »
Hi Chris,

sounds like the issue solved itself. Just in case you'll need further input, can you explain to me what you mean by "orbit center" and "single center"?
No need to reply if you consider this resolved.

-Constanze

135
Support Forum / Re: OVITO 3 dev 234 vs. 322
« on: January 15, 2019, 05:32:27 PM »
Hi Ali,

please see attached download link

http://www.ovito.org/download/testing/ovito-3.0.0-dev234-win64.exe

Constanze

136
Hello prash,

if you activate the option "compute per-type occupancies", the occupancy count is split into type-specific counts, see section Systems with more than one atomic species in the documentation:
http://www.ovito.org/manual_testing/particles.modifiers.wigner_seitz_analysis.html

Note that the Expression selection expects boolean expressions, which can be combined using logical AND and OR operators (&& and ||). So if you want to select sites, with more than one atom of type 1 and more than one atom of type 2, the expression would be Occupancy.1>1 && Occupancy.2>1. Moreover, to select sites that have a total occupancy larger than 1, you could use (Occupancy.1 + Occupancy.2) >1.

-Constanze

137
Support Forum / Re: strain analysis- liminate homogeneous deformation kye
« on: January 15, 2019, 09:51:38 AM »
Dear Bahman,

it depends on what you would like to study. If you want to visualize only the plastic contribution to the overall deformation e.g., then it makes sense to eliminate any macroscopic, homogeneous deformation of the simulation cell, see the documentation about the atomic strain modifier:
http://www.ovito.org/manual/particles.modifiers.atomic_strain.html

-Constanze

138
Support Forum / Re: OVITO 3 dev 234 vs. 322
« on: January 15, 2019, 09:35:55 AM »
Hi Ali,
what operating system are you using?
-Constanze

139
Dear prash,

could you please explain again what the actual question is? If I'm not mistaken, the last file you uploaded is actually a periodic (infinite) structure, which in that sense has no center of mass, right?
Are you trying to calculate some sort of drift vector?

About unwrapping the coordinates, the easiest way is actually to dump snapshots with unwrapped particles in the first place. If you need to unwrap them now in post-processing, note that
each atom carries the information in which periodic image it is situated. When you calculate displacement vectors, OVITO automatically takes care of that. So what you could do is to loop over
all frames, calculate the displacement vectors in reference to the previous frame and then modify the position vectors accordingly. This works only though if the displacement between two frames is smaller than half of the simulation box length.

-Constanze


140
Support Forum / Re: Cropping pictures using Ovito
« on: January 11, 2019, 02:08:38 PM »
In that case, you could just edit the output image size in the Render Settings, see attached screenshot.
Also, note that you can change the camera view to "Preview Mode", when you click on the current viewport's caption in the top left corner (also marked in the screenshot).
This way you can get a preview of what your rendered image will look like and still zoom, turn or translate your structure until you have the desired viewing angle.

For the record, here's the documentation about rendering images. http://ovito.org/manual/usage.rendering.html
-Constanze

141
Support Forum / Re: combine ovito python script with lammps
« on: January 11, 2019, 01:47:18 PM »
Hi Christophe,

Yes, that's what I was hinting at. Since Shijun tries to avoid having to dump a large amount of snapshots, this seems to be the preferred way.

-Constanze

142
Support Forum / Re: Cropping pictures using Ovito
« on: January 11, 2019, 01:42:14 PM »
Hi,

there is an auto-crop function that you could use after you rendered the active viewport, see attached screenshot. Is that what you mean?

-Constanze

143
Support Forum / Re: combine ovito python script with lammps
« on: January 11, 2019, 12:19:00 PM »
Dear Shijun,

since it's possible to call python from within lammps it should in principle be possible to use ovitos, but it seems like you have already tried that and I doubt it would be very efficient.

I don't think there is an easy way to calculate defects "on the fly" with ovitos. However something similar seems to already exist in lammps. Have a look at the lammps documentation of the
compute voronoi/atom command, more specifically the keyword "occupation".
https://lammps.sandia.gov/doc/compute_voronoi_atom.html
Maybe this way you can avoid post-processing after all.

Hope that helps,
Constanze

144
Support Forum / Re: Moving atoms to the center of the simulation cell
« on: January 11, 2019, 11:54:16 AM »
Hi,

I recommend you to use the Transformation matrix instead of the Transform to target box.
Note that you need to edit the Transformation matrix - Translation field, which I highlighted for you in the screenshot. In that example here I shifted all atoms upwards by 10 units.

-Constanze

145
Support Forum / Re: Moving atoms to the center of the simulation cell
« on: January 11, 2019, 10:59:21 AM »
Maybe it's best if you send me a screenshot of the modifier you apply, then I can tell you what's the problem.

146
Support Forum / Re: Moving atoms to the center of the simulation cell
« on: January 11, 2019, 10:09:13 AM »
Hi,

what did you have trouble with? It's only a translation that you apply on the particles. Don't forget to unselect the simulation cell.

-Constanze

147
Support Forum / Re: Generate trajectory lines of a dynamic group
« on: January 11, 2019, 10:04:19 AM »
Hi prash,

unfortunately that's not possible yet but it may be implemented in the future.

-Constanze

148
Support Forum / Re: Working with Partial RDFs
« on: January 11, 2019, 09:26:42 AM »
Dear Sahar,

it's easiest if you export the partial RDFs you calculated as textfiles and then plot them with the plotting program of your choice. Then you'll have the most control over the visual representation.

-Constanze

149
Hi Reza,

yes, you can just import the second file using the Import File button and then click "add to scene".
To make particles transparent, you can use the Compute property modifier and generate a particle property "Transparency".

-Constanze

150
Support Forum / Re: Moving atoms to the center of the simulation cell
« on: January 11, 2019, 09:16:23 AM »
Hi,

yes, you can easily do that with the Affine Transformation modifier. Here's the corresponding manual page

http://ovito.org/manual/particles.modifiers.affine_transformation.html

-Constanze

Pages: 1 ... 3 4 [5] 6 7 ... 10