<a name="unreleased"></a>
## [Unreleased]


<a name="v0.3.3"></a>
## [v0.3.3] - 2020-01-22
### Docs
- **changelog:** update changelog for v0.3.3

### Fix
- **forward-comm:** correct receive regions of sector 7 at dim x in single side forward communication
- **forward-comm:** fix region of sector 5 at dim z when getting regions of single side forward comm
- **forward-comm:** fix region of sector 1 at dim z when getting regions of single side forward comm

### Refactor
- **forward-comm:** move reversed dimension order option from func param to template param

### BREAKING CHANGE

function parameter `bool reversed` was moved to template parameter `bool F`


<a name="v0.3.2"></a>
## [v0.3.2] - 2019-10-25
### Docs
- **changelog:** update changelog
- **changelog:** add changelog for v0.3.2

### Feat
- **forward-comm:** add func fwCommLocalRecvRegion to get receive region in communication forwarding
- **forward-comm:** add send and receive directions of each dimension for single side forward comm
- **forward-comm:** set type of sector_id as "_type_sector_id" in type_define.h
- **region:** add volume calculation for region

### Refactor
- **forward-comm:** refactor fwCommLocalRegion (remove BccDomain parameter) to get send region

### Test
- **forward-comm:** add test for func fwCommLocalRegion whitout BccDomain pointer parameter

### BREAKING CHANGE

function name fwCommLocalRegion with parameters (ghost_size, local_box_region,
dimemsion, direction) is renamed to fwCommLocalSendRegion.

the old function fwCommLocalRegion with BccDomain pointer as parameter is now
deprecated.


<a name="v0.3.1"></a>
## [v0.3.1] - 2019-10-13
### Docs
- **changelog:** add changelog for v0.3.1

### Feat
- **forward-comm:** make single side forwarding accept RegionPacker packer (pack data by regions)
- **packer:** add packer RegionPacker which can pack data in given regions
- **region:** add feature of region comparison

### Fix
- **$compile:** move include"*.inl" macro out of namespace to fix undefined reference of 'memcpy'
- **$compile:** fix compiling issue of undefined reference of 'memcpy'

### Refactor
- **packer:** move class Packer to namespace comm

### Test
- **forward-comm:** add simple test for single side forwarding communication using RegionPacker

### BREAKING CHANGE

class Packer is moved to namespace comm, please use comm::Packer instead.

1. we use RegionPacker as packer parameter instead of Packer; 2. function
singleSideForwardComm signature changed: remove send_dirs and recv_dirs array, add send_regions and
recv_regions array; remove neighbours_rank array and add send_ranks and recv_ranks array.


<a name="v0.3.0"></a>
## [v0.3.0] - 2019-09-08
### Docs
- **changelog:** add changelog for v0.3.0.
- **changelog:** add CHANGELOG generated by git-chglog tool.

### Feat
- **domain:** add splited coordinate for colored domain which split a sub-box to 8 sectors.
- **domain:** add Colored Domain inheriting from class Domain.
- **forward-comm:** add implementation of single side forwarding communication.
- **region:** add send and receive region for all 8 sectors in X,Y,Z dimensions.
- **region:** add sending regions of sector 0 in X,Y,Z dimensions.
- **region:** add overloading of assignment operator for Region class.

### Fix
- **compile:** add missing cassert head to fix compiling error.
- **region:** add copy constructor for class Region to fix bug of invalid member aliases.

### Refactor
- **domain:** rename member variables in ColoredDomain.
- **domain:** rename member variables in BccDomain.
- **domain:** rename member variables in domain.
- **preset:** use const value as MPI communication tag in double side forwarding communication.
- **region:** make member low and high in class Region as pointer to its member.
- **region:** move comm_forwarding region to preset dir.

### Test
- **domain:** add tests for colored doamin.
- **preset:** add region area/volume test for forwarding communication of 8 sectors.
- **region:** add more tests to test region assignment operator.

### BREAKING CHANGE

rename local_sector_ghost_region -> local_ghost_ext_sector_region.

rename: dbx_local_ghost_lattice_coord_region -> dbx_local_ghost_ext_lattice_region,
dbx_local_sub_box_lattice_coord_region -> dbx_local_sub_box_lattice_region,
dbx_lattice_coord_ghost_region -> dbx_ghost_ext_lattice_region, dbx_lattice_coord_sub_box_region ->
dbx_sub_box_lattice_region, dbx_lattice_size_sub_box -> dbx_sub_box_lattice_size,
dbx_lattice_size_ghost_extended -> dbx_ghost_extended_lattice_size.

rename: meas_global_box_coord_region -> meas_global_region;
grid_coord_sub_box -> grid_coord;
meas_ghost_region -> meas_ghost_ext_region;
lattice_size_sub_box -> sub_box_lattice_size;
lattice_size_ghost_extended -> ghost_extended_lattice_size;
lattice_coord_sub_box_region -> sub_box_lattice_region;
lattice_coord_ghost_region -> ghost_ext_lattice_region;
local_sub_box_lattice_coord_region -> local_sub_box_lattice_region;
local_ghost_lattice_coord_region -> local_ghost_ext_lattice_region.

include file of comm_forwarding_region.h has been move to preset directory;
dimension and direction params in this header has been change to unsigned int.


<a name="v0.2.0"></a>
## [v0.2.0] - 2019-07-09
### Feat
- **domain:** add feature of setting ghost size in domain builder.

### Fix
- **$compile:** change type u_int64_t to uint64_t to fix compile error.
- **domain:** move members of doubled x coordinate for class comm::Domain to class comm::BccDomain.

### Refactor
- **domain:** move comm::Domain::Builder out of class comm::Domain.

### Test
- **domain:** correct domain tests effected by commit "change ghost size to (cut_lattice + 1)".

### BREAKING CHANGE

change domain param in comm ::fwCommLocalRegion from comm::Domain to comm::BccDomain.


<a name="v0.1.0"></a>
## [v0.1.0] - 2019-05-31
### Fix
- **domain:** change ghost size to (cut_lattice + 1) instead of cut_lattice.
- **forward-comm:** use db_lattice_size_ghost instead of cut_lattice to compute region in forward communication.


<a name="v0.1.0-beta"></a>
## [v0.1.0-beta] - 2019-04-21
### Feat
- **forward-comm:** add feature of mearsured region calculating for forwarding communication.
- **forward-comm:** add feature of region calculating for forwarding communication.

### Fix
- **domain:** fix range issue in Region::isIn function.


<a name="v0.1.0-alpha"></a>
## v0.1.0-alpha - 2019-04-14
### Docs
- **readme:** add document for lib dependencies building in README.md.

### Feat
- **communication:** add feature of reversed order of dimension loop (z,y,z).
- **communication:** add generic communication function neiSendReceive and data Packer implementation.
- **domain:** add localBuild for domain.

### Fix
- **domain:** fix compile error of domain.cpp/.h, and add comm namespace.
- **domain:** double the lattice size and lattice coord in x direction.
- **pkg:** correct the mistake spell of "cmake_build" to "cmake_lib" in file pkg.yaml.

### Refactor
- **domain:** add double-x lattice size and coord member for class Domain.
- **domain:** refator doamin implementation to use lattice priority strategy (rather than measured length priority).
- **domain:** extract domain boundary to class Region.

### Test
- **domain:** add tests for domain decomposition.


[Unreleased]: https://git.hpcer.dev/HPCer/CrystalMD/CrystalMD/compare/v0.3.3...HEAD
[v0.3.3]: https://git.hpcer.dev/HPCer/CrystalMD/CrystalMD/compare/v0.3.2...v0.3.3
[v0.3.2]: https://git.hpcer.dev/HPCer/CrystalMD/CrystalMD/compare/v0.3.1...v0.3.2
[v0.3.1]: https://git.hpcer.dev/HPCer/CrystalMD/CrystalMD/compare/v0.3.0...v0.3.1
[v0.3.0]: https://git.hpcer.dev/HPCer/CrystalMD/CrystalMD/compare/v0.2.0...v0.3.0
[v0.2.0]: https://git.hpcer.dev/HPCer/CrystalMD/CrystalMD/compare/v0.1.0...v0.2.0
[v0.1.0]: https://git.hpcer.dev/HPCer/CrystalMD/CrystalMD/compare/v0.1.0-beta...v0.1.0
[v0.1.0-beta]: https://git.hpcer.dev/HPCer/CrystalMD/CrystalMD/compare/v0.1.0-alpha...v0.1.0-beta
