How to define vacuum in fix ttm/mod?

I am unable to maintain vacuum in fix ttm/mod electron grids.As per documentation,

Visual representation of the simulation domain

So there will be 160 grids, but 80 of them in vacuum
I defined the dimensions of simulation domain like following and populated it with atoms

I am getting nearly correct number of atoms

Defined fix ttm/mod like the following

A fix accepts group-ID. So instead of ‘all’ I made the ‘dom’ group to inclued the empty space in simulation box.

this is the configuration of the init file (vacuum boundaries)

Index starts from 0 in electron grids. The 1st block is empty so it start from 1 and plus 80 = 81.

Unexpectedly, the output file contains electron temperature in all grids (after 81 it should be zero)


I alreay tried fix ttm/mod applied to ‘all’ group. Same issue. I thought maybe the grid division was only happening inside the atom filled region. So, I tried to include the empty space with ‘dom’ group. Also used infile command to initialize electron temperatures where temperature is zero outside of atom filled region.

But on the other hand when I Check the lattice temperature with computes(fraction = 1/80)

Half the grid has zero temperature(after 80)

How to make the empty grids have zero temperature (DEFINE VACUUM) ?

why is half the lattice getting frozen?

And in fix ttm/mod in which surface does the heat flux hits?? I am confused. I needed it to be on the r_surface. But temperatue is high on the left end. Do I need to invert the x dimensions then?

Any suggestion would be appreciated. Thank you

i met every same issue like you. :rofl:
and i am confused about how to determine gamma_s, through the SRIM table. all the units didn’t match with the ev^(1/2)/Am.

i think i found the problem. in the fix ttm/mod ni_ttm_mod, the electron temperature you defined is overrided by the set 300.0, so you have to use a script. however, when i fix all the problem, i found that the energy didnt exchange between electron and ion, specifically, the output value of f_twotemp[2] is always 0. still got works to do.
hope it will help you

i’m currently trying to simulate the exact same case of Zhou et al. (2022), but it seems that the fix ttm generally has weird units and they don’t match with the conversions from SI… also the fix ttm/mod command seems to be bugged somewhat, even the tutorial case doesn’t run properly as the lattice temperature just keeps on rising over the initial electron temperature. would be great if you guys managed to have progress and keep things posted here

C_0, energy/(temperature*electron) units
Hello, electron is the number of free electrons or the charge

Number of electrons. This is the electronic specific heat. Well, a part of it. So, from definition specific refers to the heat required for unit temperature change in unit amount of material. For the TTM code this is unit amount of volume. If you look at the documentation you will see that in the differential equation for two temperature model, the specific heat C_e is multiplied by electronic density rho. Which has the unit numbers per unit volume. So when you multiply C_e and rho the number of electrons are canceled out between the two quantity and we get energy per unit volume.

If you have 1000 zinc atoms, zinc has 2 electrons in its outermost shell, so it has 200 electrons, but if you have a compound like sic, carbon and silicon both have 4 electrons in their outermost shell, so it’s 800

If you have 1000 zinc atoms, zinc has 2 electrons in its outermost shell, so it has 200 electrons, but if you have a compound like sic, carbon and silicon both have 4 electrons in their outermost shell, so it has 800. Is that my understanding right? But I suspect that silicon carbide is a stable compound and has no electrons. Thank you very much for your answer.

I don’t think it is as straightforward as you have suggested. I have not worked with compounds so I cannot comment on that. But for pure metals there are papers which have reported the amount of free electron per atom, using first principal study. I have used those for calculation. So, you know the volume of the domain and also you know the number of atoms from LAMMPS. so you can divide atoms by total volume to get atoms per unit volume. Multiply that by the number of free electron per atom and you will get the electronic density.

Thank you very much for your answer. To help me take my project one step further

Two temperature model assumes that there are free electron in the lattice.Metals and semiconductor are the primary candidates for two temperature modeling. For semiconductors, the electrons need to be excited to conduction band and as such the number of free electrons vary. And that usually requires another rate equation to be solved. You could look into that. Given you want to work with silicon carbide.

The manual says:

For fix ttm and fix ttm/mod commands, the corresponding atomic temperatures of the atoms in each grid cell can be calculated and output using the compute chunk/atom command via the fix ave/chunk command to create an array of 3d blocks consistent with the grid used for this repair.

I have a question about whether the mesh used includes the vacuum layer of the mesh. If you divide 40 grids along the X-axis, then the first 20 grids have atoms and the last 20 grids are vacuums. I calculate the lattice temperature, so do I divide it into 20 pieces or 40 pieces? Can you help me with this question? Thank you very much indeed.

Ok, thank you very much. I will take a good look at the electronics knowledge of semiconductors

Depends on the group of atom you have applied chunk/atom compute to. In my case to avoid complexity, I use ‘all’ as group and set the number of bins same as TTM grid number. So if there are vacuums you won’t have any information or temperature in this case, for the empty grid. That is, zero will be printed.

I really appreciate your answer. I have to think about what you said. Your answer is very helpful to me

If you follow the way I have mentioned, then yes, for 40 grids the first 20 will have no temperature and the next 20 will show temperature

Your method is to set the initial temperature of the electron to 0 for half and 300 for the other half. T_init this file

You are so kind and I really appreciate you answering my questions in detail

Hi, I’m a little confused about whether the laser is shining in the positive x direction or the negative x direction. Can you answer it for me?

if (duration < width) {
if (ix >= t_surface_l) mult_factor = (intensity/(dxskin_layer_d))exp((-1.0)(ix_d - surface_d)/skin_layer_d)exp((-1.0)(iy_diy_d + iz_diz_d)/(r_0r_0));
From the source code I think the laser is going in the x positive direction, but my simulations think the laser is going in the x negative direction.

I apologize for being away from the forum for so long. I’d like to provide an important clarification regarding the laser propagation direction:

It would be difficult to determine the laser propagation direction based on absolute coordinates in LAMMPS. Instead, you should think in terms of FDM (Finite Difference Method) grid indices. The grid index starts from 0 on the left and increases towards the right.

The laser intensity is highest at l_surface (which corresponds to the leftmost surface of the material) and keeps decreasing based on the Beer-Lambert law as it propagates through the material. This means that the laser is effectively propagating from left to right in the simulation setup.

This perspective aligns with how the FDM grids are set up and how the laser energy deposition is calculated in the simulation. It’s crucial to keep this in mind when interpreting your simulation results or when making modifications to the code.