GithubHelp home page GithubHelp logo

Comments (13)

yquana avatar yquana commented on September 17, 2024 1

Go to the Exec folder under FerroX. Edit the GNUmakefile. And then "make" to compile.

from ferrox.

ajnonaka avatar ajnonaka commented on September 17, 2024 1

Correct - cmake does not presently work, just use "make" - let me know if you have any problems.

from ferrox.

AdiBhatnagarPurdue avatar AdiBhatnagarPurdue commented on September 17, 2024 1

Thank you so much it worked!

from ferrox.

spaceZt3 avatar spaceZt3 commented on September 17, 2024

I figured out this problem. Ref: https://amrex-codes.github.io/amrex/docs_html/BuildingAMReX.html

from ferrox.

spaceZt3 avatar spaceZt3 commented on September 17, 2024

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.

prkkumar avatar prkkumar commented on September 17, 2024

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.

spaceZt3 avatar spaceZt3 commented on September 17, 2024

Thanks @prkkumar ! I have a question about the # ELECTRICAL BOUNDARY CONDITIONS # definition in input file. What's the difference between:

  1. 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))"

  2. 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.

AdiBhatnagarPurdue avatar AdiBhatnagarPurdue commented on September 17, 2024

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.

AdiBhatnagarPurdue avatar AdiBhatnagarPurdue commented on September 17, 2024

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:

Pz

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.

prkkumar avatar prkkumar commented on September 17, 2024

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.

yquana avatar yquana commented on September 17, 2024

Recently, I came across this interesting aper https://arxiv.org/abs/2402.05331. I have a few technical questions.

  1. 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.
  2. 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.
  3. 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
  4. 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?
  5. 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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.