Interface roughness

38 views
Skip to first unread message

Vinod Naik Bhukya

unread,
Jul 5, 2025, 5:30:58 AMJul 5
to Vampire Users
Hi everyone, I have few doubts regarding the interface roughness in a multilayer structure

we have the following commands to be included in the 'input file'

1. create:interfacial-roughness=true
2. create:material-interfacial-roughness=true
3. create:interfacial-roughness-type=0
4. create:interfacial-roughness-random-seed=27255000000
5. create:interfacial-roughness-number-of-seed-points=50
6. create:interfacial-roughness-height-field-resolution=0.1
7. create:interfacial-roughness-seed-radius=0.9
8. create:interfacial-roughness-seed-radius-variance=0.5
9. create:interfacial-roughness-mean-height=1.43
10. create:interfacial-roughness-maximum-height=2.5


The first command if removed, there is no interface roughness in the structure.
The second command has no impact on the roughness, and I'm not getting what is this command for?
The third command has three options for roughness type: 1, -1 and 0. And i see no difference for all these choices. 

And there is one material command to be included in the material file:
material:interface-roughness=1   ( we can specify any value from 0 to 1)
I have specified this for each material like 
material[1]:interface-roughness=1 for some and 0 for some
But there is no impact again. 

I clearly did not understand what these two commands are doing
create:material-interfacial-roughness=true
material:interface-roughness=1
They have no impact after execution.

gabo...@gmail.com

unread,
Jul 5, 2025, 11:53:49 AMJul 5
to Vampire Users
With regards to 3, there does seem to be a difference between using interfacial roughness type of both troughs and peaks (not having create:interfacial-roughness-type), peaks (having create:interfacial-roughness-type=peaks), and troughs (having create:interfacial-roughness-type=troughs) in the input file.  For example, it looks like the m0M norm l can be different between the three:

peaks_troughs_both.png

The plot was generated with the terminal commands below and attached files:

username@computername:~/Desktop/bilayer$ ls -l
total 20
-rw-r--r-- 1 username username 1568 Jul  5 02:26 bilayer.mat
-rw-r--r-- 1 username username  139 Jul  5 09:11 bilayerplot
-rw-r--r-- 1 username username 1334 Jul  5 09:06 input_both
-rw-r--r-- 1 username username 1374 Jul  5 08:55 input_peaks
-rw-r--r-- 1 username username 1376 Jul  5 09:07 input_troughs
username@computername:~/Desktop/bilayer$
mv input_peaks input
username@computername:~/Desktop/bilayer$ vampire-serial
                                                _          
                                               (_)        
                    __   ____ _ _ __ ___  _ __  _ _ __ ___
                    \ \ / / _` | '_ ` _ \| '_ \| | '__/ _ \
                     \ V / (_| | | | | | | |_) | | | |  __/
                      \_/ \__,_|_| |_| |_| .__/|_|_|  \___|
                                         | |              
                                         |_|              

                      Version 7.0.0 Dec 27 2023 21:29:33

             Git commit: fd9de813cab95bc2b2837122bd03f0238a5d2d76

  Licensed under the GNU Public License(v2). See licence file for details.

  Developers:   Richard F L Evans, Sarah Jenkins, Andrea Meo,
                Daniel Meilak, Andrew Naden, Matthew Ellis,
                Oscar Arbelaez, Sam Morris, Rory Pond, Weijia Fan,
                Phanwadee Chureemart, Pawel Sobieszczyk, Joe Barker,
                Thomas Ostler, Andreas Biternas, Roy W Chantrell,
                Wu Hong-Ye, Razvan Ababei, Sam Westmoreland,
                Milton Persson
 
                Compiled with:  GNU C++ Compiler
                Compiler Flags:

  Vampire includes a copy of the qhull library from C.B. Barber and The
  Geometry Center and may be obtained via http from www.qhull.org.

================================================================================
Sat Jul  5 09:14:37 2025
================================================================================
Initialising system variables
Creating system
Generating neighbour list..........done!
Copying system data to optimised data structures.
Using generic/normalised form of exchange interaction with 48 total interactions.
Number of atoms generated: 16128
Starting Simulation with Program Time-Series...
Simulation run time [s]: 187.302
Monte Carlo statistics:
Total moves: 177408000
49.9416% Accepted
50.0584% Rejected
Simulation ended gracefully.
username@computername:~/Desktop/bilayer$
mv input input_peaks
username@computername:~/Desktop/bilayer$ mv input_troughs input
username@computername:~/Desktop/bilayer$ mv output output_peaks
username@computername:~/Desktop/bilayer$ vampire-serial
...
Number of atoms generated: 16416
Starting Simulation with Program Time-Series...
Simulation run time [s]: 196.632
Monte Carlo statistics:
Total moves: 180576000
49.9416% Accepted
50.0584% Rejected
Simulation ended gracefully.
username@computername:~/Desktop/bilayer$
mv input input_troughs
username@computername:~/Desktop/bilayer$ mv input_both input
username@computername:~/Desktop/bilayer$ mv output output_troughs
username@computername:~/Desktop/bilayer$ vampire-serial
...
Number of atoms generated: 16316
Starting Simulation with Program Time-Series...
Simulation run time [s]: 198.875
Monte Carlo statistics:
Total moves: 179476000
49.9418% Accepted
50.0582% Rejected
Simulation ended gracefully.
username@computername:~/Desktop/bilayer
$ mv output output_both
username@computername:~/Desktop/bilayer$ gnuplot --persist bilayerplot

Best Regards,
Gavin
VAMPIRE user
input_peaks
bilayer.mat
input_both
bilayerplot
input_troughs

gabo...@gmail.com

unread,
Jul 5, 2025, 4:47:09 PMJul 5
to Vampire Users
With regards to 2, it seems like the reported observation of no impact after execution is being caused by the implementation for "create:material-interfacial-roughness=true" being incomplete.

If interested in the details about that, they are as follows.

In create/interface.cpp [1], when create:material-interfacial-roughness has been set to true, you should see on line 284 that it sets the variable cs::interfacial_roughness_local_height_field.

line 282:      test="material-interfacial-roughness";
line 283:      if(word==test){
line 284:         cs::interfacial_roughness_local_height_field=true; // default
...
line 291: }

In roughness.cpp [2], there is a line 155 for the variable cs::interfacial_roughness_local_height_field, but the code has been disable with comments.  You should also see a "not yet implemented" comment there on line 154.  

line 154: // optionally specify a material specific height here -- not yet implemented
line 155: //if(cs::interfacial_roughness_local_height_field==true){
line 156: //double local_height = height_field.at(mat).at(hx).at(hy);
line 157: //}


Kind Regards,
Gavin
VAMPIRE user

On Saturday, July 5, 2025 at 3:30:58 AM UTC-6 vinod...@nycu.edu.tw wrote:

Vinod Naik Bhukya

unread,
Jul 5, 2025, 11:49:05 PMJul 5
to Vampire Users
Thank you for taking time and clearing the doubts. very much helpful. 

gabo...@gmail.com 在 2025年7月6日 星期日凌晨4:47:09 [UTC+8] 的信中寫道:

Vinod Naik Bhukya

unread,
Jul 6, 2025, 12:59:33 AMJul 6
to Vampire Users
Can we restrict this roughness to a particular material in a multilayer structure?

Vinod Naik Bhukya 在 2025年7月6日 星期日上午11:49:05 [UTC+8] 的信中寫道:

gabo...@gmail.com

unread,
Jul 6, 2025, 9:53:45 AMJul 6
to Vampire Users
The create:material-interfacial-roughness and material:interface-roughness looks like they were intended to do that, but they seem to not be fully implemented based on the no impact you found on use and the not yet implemented comment in roughness.cpp.  Based on the same comment block in roughness.cpp, it looks like the user could add their own code for making it possible such as defining in the source code a material specific height for it.

Kind Regards,
Gavin
VAMPIRE user

Reply all
Reply to author
Forward
0 new messages