ufsowa / mcdif

Monte Carlo based alghoritms used to simulate thermodynamic and kinetic properties of the alloys
3 stars 4 forks source link

Criterions for movement #6

Closed ufsowa closed 7 years ago

ufsowa commented 8 years ago

Improve opcja::decide_direction() criterion. Present is temporary. Base on flux/strain approach.

ufsowa commented 8 years ago

(1) Position of interface is required.

It can be done in this manner: `1. calculate average concentration in the BLOKS - C_avg

  1. Calculate module of the difference of |C_avg - C_A |
  2. Find minimum
  3. Add x for this minimum to vector
  4. In case of many interfaces`

Left to left, right to right

:+1: Add function of opcja::find_intrface()

ufsowa commented 8 years ago

It looks like flux criteria is fine. It gives additional flux coming from lattice drift. It is good idea to measure it separately, by monitoring flux during dislocation movement.

It does not really meter if dislocation cross interface or not.

:+1: Save in HIST in PROG variables flux from dislocation movement.

ufsowa commented 8 years ago

It is important if dislocation cross interface.

It will add extra amount or remove or slow down total flux.

In pure case when on the left vacancies are removed and on the right vacancies are added. It work perfect.

But, If you imagine that locally on the left side vacnacy have to be added, then you have increase of total flux anyway.

:facepunch: Think about interface criteria.

Flux criteria must use local flux, not total. It is not a problem since, I have actual time.

Maybe total is fine, since I use time in critera, which will reasure, if flux is not changing anymore, then it will tend to 0 in time.

Flux criteria must be changed to use local flux. But problem is that local flux can be very smal. Equal zero for all planes.

It is important to have big flux and it is important that this flux is sensitive to changes in flux.

ufsowa commented 8 years ago

I can use total flux, with scale parameter a which gives sensitivity. p~exp(F/kT) -> p~exp(aF/kT) It is good, when F remain constant, but time increase. Then p tends to 1. Not exactly 1, but close.

:facepunch: CHeck if this scale parameter solve the problem

ufsowa commented 8 years ago

It solves problem.

ufsowa commented 8 years ago

:facepunch: Think about normalisation.

ufsowa commented 8 years ago

dN - number of atoms which cross surface (force)

W - work done by site, if want to cross this surface W = dN(+1)/time if jump from left side W = dN(-1)/time if jump from right side

p = exp(W/kT)

This p favourite jumps with W > 0 .

Actually scale factor is used - OK. Time scale is used, which is also - OK.

Normalisation is not good. n` = dN/(sum(dN))

ufsowa commented 8 years ago

time in W make W > 0 smaller. I mean, time decrease W. W -> 0, then p -> 1 No difference between left and right.

Which is OK, when dN remains constant. But it influence also case with dN for large dN by making this criteria weaker.

ufsowa commented 8 years ago

But in general, it works. So, lets keep criteria how it is.

Eventually, You can think about normalisation.

ufsowa commented 8 years ago

It would be good to have criteria with distance from rezervuars. :interrobang:

ufsowa commented 8 years ago

It looks like position of Interface must be known. :facepunch:

ufsowa commented 7 years ago

Rrcombination required :interrobang:

ufsowa commented 7 years ago

First of all, total net flux must be used. It can be use also local net flux (+/- 2-3 planes). Flux is normalized by number of jumps and average is calculated from planes.

Secondly, diffsuion zone must be separated from the rest. Range parameter.

'opcja::dislocation_decide()'