How is the average of pressure calculated


Just as picture above, the temp is generated every 10000 timesteps, however, the compute command runs every timestep. Thus, could anyone tell me how does lammps compute the pressure at the timesteps which are not a multiple of 10000, such as the 666th timestep?

Besides, if I use fix ave/time to get the pressure, like:


This fix command will take the average over every 1 timestep in the preceding portion(80000/100000). Thus, how does this fix calculate the average if the c_thermo_press can only be calculated every 10000 timesteps?
I do appreciate any help you could provide!

Why do you think this is the case?

Computes are executed only on timesteps where there is a “consumer”. This has to be known before the timestep is processed since some computes, e.g. compute pressure, depend on data that is collected during force computation and there - for maximum efficiency - the data is only collected if needed.

LAMMPS has internal mechanisms by which the thermo output, or dump styles, or fix styles and others can communicate on which timestep they will need data from computes next and then the infrastructure will make sure the compute can be executed.

Sorry, but I still don’t understand if the “thermo 10000” command only asks lammps to calculate the press every 10000 steps then where does the variable c_thermo_press used by the “fix ave/time” on the timestep 3333 come from?
like the codes below:

I have already explained this.