Comments (13)
Go to the Exec folder under FerroX. Edit the GNUmakefile. And then "make" to compile.
from ferrox.
Correct - cmake does not presently work, just use "make" - let me know if you have any problems.
from ferrox.
Thank you so much it worked!
from ferrox.
I figured out this problem. Ref: https://amrex-codes.github.io/amrex/docs_html/BuildingAMReX.html
from ferrox.
I try the example "FerroX/Exec/Examples/inputs_mfim_Noeb_TimeDependent". It can't finish the calculation, it stops at time step 152. Can you verify the input file?
from ferrox.
Hi @spaceZt3, Thanks for your interest in using FerroX! I am glad that you figured out the way to build the code.
Thanks for testing the example input script. You are right, the simulation indeed stops at time step 152. We made some changes in the code recently, but did not update all the input files accordingly.
You can add the following lines to FerroX/Exec/Examples/inputs_mfim_Noeb_TimeDependent
after line number 58:
voltage_sweep = 1
Phi_Bc_lo = 0.0
Phi_Bc_hi = -5.0
Phi_Bc_inc = 1.0
Phi_Bc_hi_max = 5.0
This will simulate the MFIM stack with an applied voltage (V_app) sweep beginning at V_app = -5.0 V
and will stop at V_app = 5.0 V
with an increment of 1.0 V
. You can, of course, change these numbers according to your need.
Please let me know if this resolves your problem or if you encounter any other issues. We will be happy to discuss your specific simulation needs as well.
Cheers!
from ferrox.
Thanks @prkkumar ! I have a question about the # ELECTRICAL BOUNDARY CONDITIONS # definition in input file. What's the difference between:
-
boundary.hi = per per dir(Zmax)
boundary.lo = per per dir(Zmin)
boundary.Zmax_function = "(t <= t_Vmax) * (Vmin + (Vmax - Vmin)(t/t_Vmax)) + (t > t_Vmax)(Vmax - (Vmax - Vmin)*(t-t_Vmax)/(t_final - t_Vmax))" -
voltage_sweep = 1
Phi_Bc_lo = 0.0
Phi_Bc_hi = -5.0
Phi_Bc_inc = 1.0
Phi_Bc_hi_max = 5.0
The applied voltage (V_app) sweep beginning at V_app = -5.0 V and will stop at V_app = 5.0 V with an increment of 1.0 V. But it doesn't turn back (from 5V to -5V)?
from ferrox.
Hello, I am trying to run FerroX and thanks to this discussion managed to build and install AMReX, however, when I try to build FerroX using Cmake I get the following error:
CMake Error at CMakeLists.txt:14 (setup_tutorial):
Unknown CMake command "setup_tutorial".
I am unsure of how to solve this, commenting setup_tutorial seems to be the wrong step since I do not see an executable so I assume setup_tutorial is a macro which adds an executable ? Furthermore, I am not entirely sure why set(_sources main.cpp myfunc.H) has myfunc.H which does not seem to be in the directory?
These are the full list of commands I ran:
INSTALL AMREX (inside FerroX folder):
mkdir build
cd build
cmake -DAMReX_OMP=YES -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=../ ../../amrex
make install
make test_install #PASSES CORRECT INSTALLATION
rm -rf build
BUILD FERROX (inside FerroX folder):
mkdir build
cd build
cmake ..
cmake --build . -j2 #FAILS AT SETUP_TUTORIAL COMMAND
I understand this may be a trivial problem, but I would really appreciate some help!
Thank you
from ferrox.
Hello,
Thank you that worked!
I am trying to recreate the plots from the FerroX paper, specifically Fig 3(a). I believe that its the visualization of inputs_mfis_eb however, upon running the following code I see that my axes are off by a factor of 10000. I have USE_CUDA as False in the GNUmakefile, but I am not sure if that would be responsible? I would really appreciate some help on this thank you!
import yt
ds = yt.load("./inputs_mfis_eb/plt00000220/")
cnt = [-1.0e-08, 0 , 1.0e-08]
p = yt.SlicePlot(ds, "y", "Pz", center = cnt)
p.set_cmap("Pz", "jet")
p.set_axes_unit("nm")
p
My figure:
When plotting the generated datasets available on zenodo, I notice the properties are different from those in inputs_mfis_eb so I am not really sure how to recreate the figures.
Thank you!
from ferrox.
To run inputs_mfis_eb
, you will need to compile with USE_EB=TRUE. The setup is almost identical to Fig 3a, except that it uses an embedded boundary object to represent the metal electrode at the top of the ferroelectric layer.
You should get a pretty similar result as Fig 3a, with inputs_mfis_eb
when you run the code compiled with USE_EB=TRUE.
Alternatively, you can try modifying inputs_mfis_eb
to work without EB. You can try the following:
#################################
###### PROBLEM DOMAIN ######
#################################
domain.prob_lo = -16.e-9 -16.e-9 0.e-9
domain.prob_hi = 16.e-9 16.e-9 16.e-9
domain.n_cell = 64 64 32
domain.max_grid_size = 64 64 32
#domain.blocking_factor = 16 16 16
domain.coord_sys = cartesian
prob_type = 1
TimeIntegratorOrder = 1
nsteps = 1000
plot_int = 100
dt = 2.0e-13
############################################
###### POLARIZATION BOUNDARY CONDITIONS ####
############################################
P_BC_flag_lo = 3 3 0
P_BC_flag_hi = 3 3 1
lambda = 3.0e-9
############################################
###### ELECTRICAL BOUNDARY CONDITIONS ######
############################################
domain.is_periodic = 1 1 0
boundary.hi = per per dir(0.0)
boundary.lo = per per dir(0.0)
Phi_Bc_lo = 0.0
Phi_Bc_hi = 0.0
inc_step = 5000
Phi_Bc_inc = 0.0
#################################
###### STACK GEOMETRY ###########
#################################
SC_lo = -16.e-9 -16.e-9 0.e-9
SC_hi = 16.e-9 16.e-9 10.e-9
#SC_lo = -1. -1. -1.
#SC_hi = -1. -1. -1.
DE_lo = -16.e-9 -16.e-9 10.0e-9
DE_hi = 16.e-9 16.e-9 11.0e-9
FE_lo = -16.e-9 -16.e-9 11.0e-9
FE_hi = 16.e-9 16.e-9 16.e-9
#################################
###### MATERIAL PROPERTIES ######
#################################
epsilon_0 = 8.85e-12
epsilonX_fe = 24.0
epsilonZ_fe = 24.0
epsilon_de = 3.9
epsilon_si = 11.7
alpha = -2.5e9
beta = 6.0e10
gamma = 1.5e11
BigGamma = 100
g11 = 1.0e-9
g44 = 1.0e-9
g44_p = 0.0
g12 = 0.0
alpha_12 = 0.0
alpha_112 = 0.0
alpha_123 = 0.0
from ferrox.
Recently, I came across this interesting aper https://arxiv.org/abs/2402.05331. I have a few technical questions.
- When calculating the capacitance of C_{MFISM}, is the electric displacement integrated over the Ferroelectric/metal surface, or the SiO2/Ferroelectric surface? In the manuscript, it mentioned "metal/oxide" interface for MISM.
- The electric displacement D seems to be defined as D = \epsilon * \epsilon_0 * E + P in the manuscript. But usually, it is defined as \epsilon_0 * E + P. I'm trying to understand the rationale for redefining the electric displacement.
- The Q_avg for fig234.tar.gz on the Zenodo are all zero. How is this Q_avg calculated. And is the executable inside fig234.tar.gz compiled using this branch? https://github.com/prkkumar/FerroX/tree/nodal_Poisson
- The colorbar for the electric field in Fig. 2 seems to go from 6.0 to 6.0. Or is it from -6.0 to 6.0?
- It is sometimes difficult to converge MFISM simulations at low voltage. I tried setting phi tolerance to 5.0E-5. But some quantities, such as D, such oscillate near the ferroelectic/SiO2 or SiO2/Si interfaces.
Thanks for your time!
from ferrox.
Related Issues (10)
- Make polarization a three component vector
- Add strain contribution to the total energy density HOT 1
- Calculation of Ez from phi seems inaccurate
- Create namespace
- Make Applied voltage a function of time
- Solve Polarization under dynamic scenario
- Generalize gradient energy terms
- Add drift diffusion for electron transport
- Iterative scheme for MFIS simulation does not converge when applied voltage is high
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ferrox.